The code in 'gcc-4.5.0/gcc/configure' : -------------------- clip ----------------------------------- pluginlibs= if test x"$enable_plugin" = x"yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exported symbols" >&5 $as_echo_n "checking for exported symbols... " >&6; } echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1 if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then : # No need to use a flag else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5 $as_echo_n "checking for -rdynamic... " >&6; } ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1 if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then pluginlibs="-rdynamic" else enable_plugin=no fi fi -------------------- clip ----------------------------------- will cause an error when the $target-objdump doesn't understand the $host binaries like : -------------------- clip ----------------------------------- Links are now set up to build a cross-compiler from x86_64-unknown-linux-gnu to arm-unknown-elf. checking for exported symbols... /usr/local/cross-gcc-arm-elf-4.5.0/arm-elf/bin/objdump: conftest: File format not recognized checking for -rdynamic... /usr/local/cross-gcc-arm-elf-4.5.0/arm-elf/bin/objdump: conftest: File format not recognized -------------------- clip ----------------------------------- The host GCC (CC) compiles and links a program and then the executable will be looked with 'objdump' ($gcc_cv_objdump). But the latter is now pointing to the target one!
Actually gcc_cv_objdump is correct for the rest of configure.ac; just we are using the incorrect one for the plugin test. Also note we need to use the one for built for the build for the host. (for Canadian crosses).
having an objdump which supports both the host and the target works around this issue.
proposed patch at http://gcc.gnu.org/ml/gcc-patches/2010-06/msg00658.html
Subject: Bug 43847 Author: doko Date: Thu Sep 9 18:22:48 2010 New Revision: 164113 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=164113 Log: 2010-09-09 Matthias Klose <doko@ubuntu.com> PR bootstrap/43847 * configure.ac (--enable-plugin): Enhance for cross builds. * configure: Regenerate. Modified: trunk/gcc/ChangeLog trunk/gcc/configure trunk/gcc/configure.ac
Subject: Bug 43847 Author: doko Date: Thu Sep 9 18:25:26 2010 New Revision: 164114 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=164114 Log: 2010-09-09 Matthias Klose <doko@ubuntu.com> PR bootstrap/43847 * configure.ac (--enable-plugin): Enhance for cross builds. * configure: Regenerate. Modified: branches/gcc-4_5-branch/gcc/ChangeLog branches/gcc-4_5-branch/gcc/configure branches/gcc-4_5-branch/gcc/configure.ac
The current code (GCC 4.7.3) *) if test x$build = x$host; then export_sym_check="objdump${exeext} -T" elif test x$host = x$target; then export_sym_check="$gcc_cv_objdump -T" else export_sym_check= fi does not use OBJDUMP or similar hints for the correct name and location of "objdump" when not doing a cross compile. On Solaris, I set OBJDUMP=/usr/sfw/bin/gobjdump which leads to Links are now set up to build a native compiler for sparc-sun-solaris2.10. checking for exported symbols... /software/local/gcc/src/gcc-4.7.3/gcc/configure: line 27313: objdump: command not found yes checking for -rdynamic... /software/local/gcc/src/gcc-4.7.3/gcc/configure: line 27323: objdump: command not found no