as those libs provide replacements for some common functions we don't really
care about (like getopt). Otherwise, if the C library does something wacky
in its API (like renaming symbols), we get a desync where some symbols are
provided by the binutils libs while others are provided by the C library.
For a concrete example, try building elf2flt on OS X 10.5. Their stupid
headers do this in unistd.h:
int getopt(int, char * const [], const char *) __asm("_" "getopt" "$UNIX2003");
The resulting elf2flt binaries are incapable of properly parsing any option
given to them.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
])
fi
+dnl Make sure we resolve system symbols before libiberty/libbfd ones.
+dnl Otherwise, things like getopt get screwed up because the system headers
+dnl redirect some functions to the system symbols, but other local symbols
+dnl come from libiberty/libbfd.
+dnl int getopt(int, char * const [], const char *) __asm("_" "getopt" "$UNIX2003");
+AC_CHECK_LIB(c, malloc, LIBS="-lc $LIBS")
+
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h unistd.h bfd.h)