tools/elfutils: use locally declared static reallocarray()
authorMichael Pratt <mcpratt@pm.me>
Mon, 8 Apr 2024 03:28:51 +0000 (23:28 -0400)
committerRobert Marko <robimarko@gmail.com>
Thu, 25 Apr 2024 19:33:51 +0000 (21:33 +0200)
On macOS, stdlib.h in the standard include paths does not provide
reallocarray() while both elfutils and gnulib do, however they are
declared differently, leading to an error:

  ./system.h:101:1: error: static declaration of 'reallocarray' follows non-static declaration
  reallocarray (void *ptr, size_t nmemb, size_t size)

A normal "configure && make" build cycle results in both declarations
being enabled as a result of both elfutils and gnulib having completely
separate configure checks where gnulib uses an internal placeholder symbol
HAVE_REALLOCARRAY, and elfutils uses a standard autoconf macro
HAVE_DECL_REALLOCARRAY.

Fix this by excluding the import of the reallocarray module which causes
gnulib checks in the configure stage to not even consider whether to
declare reallocarray later on, so the decision is only between the
standard include stdlib.h and the elfutils header.

Tested-by: Georgi Valkov <gvalkov@gmail.com> # MacOS
Signed-off-by: Michael Pratt <mcpratt@pm.me>
Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
tools/elfutils/Makefile

index c7d94d2a4762e15f2d99d4d5fa13e3ea71ab5756..140250801c9d30bf3379c0f6b403333eb8d00249 100644 (file)
@@ -36,6 +36,7 @@ PKG_GNULIB_ARGS = \
        --local-dir=$(STAGING_DIR_HOST)/share/gnulib \
        --source-base=$(PKG_GNULIB_BASE) \
        --libtool \
+       --avoid=reallocarray \
        --import
 
 PKG_GNULIB_MODS = \