bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: configure errors?


From: Mike McWilliam
Subject: Re: configure errors?
Date: Thu, 16 Jul 2015 13:04:28 -0700

Hello Folks

         This is a follow-up to a previous post about "error: ‘TARGET_ALIAS’ undeclared"....

         I think I figured out the problem... there is definitely a bug... let me explain...  there was another similar post on the Internet and their problem was gcc was including ../bfd/config.h instead of ./config.h when ran from gas/ . Running the offending command with --save-temps confirms my problem is the same. When I rename ../bfd/config.h (to avoid conflict) suddenly 'make' in the gas directory works... so it seems the real problem is in how #includes are resolved... this also occurred when compiling in binutils/ again the fix was the same and magically it all worked...

         Now I have the luxury of having access to computers with different compiler versions. With older compilers 4.4.x it works. On newer compilers ( v4.8.3 ) it does not work. So either one of two things are wrong, there is a new bug in GCC in how it handles include file resolution, or there is a bug in the binutils source code where the include statements are not correct and the old version of gcc erroneously did the right thing. Even if this is a bug in gcc I think it would make binutils more robust if the correct config.h was specified explicitly. I noticed that this undefined macro problem pops up a lot and it seems users just give-up before solving the problem...

        Could someone here confirm whether this is a binutils bug or whether I should post something on the gcc bug tracker... Thanks

        If the problem is really in binutils it can be stated simple as follows: gcc includes the wrong 'config.h' when it is included indirectly through 'include/alloca-conf.h'. Instead of including the local version of 'config.h' it finds bfd/config.h first. This occurs when running make in both 'gas/' and 'binutils/'. The problem is avoided in both cases by temporarily removing 'bfd/config.h'

        So let me give some nitty-gritty details to help you understand my problem in greater detail:

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> gcc --version
gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> ./configure --prefix=/opt/gcc-4.9.3/install --with-mpc=/opt/gcc-4.9.3/install --with-mpfr=/opt/gcc-4.9.3/install --with-gmp=/opt/gcc-4.9.3/install --with-cloog=/opt/gcc-4.9.3/install --with-isl=/opt/gcc-4.9.3/install --enable-gold=yes --enable-ld=yes --disable-libquadmath --disable-libquadmath-support --enable-lto

... <snipped>...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> make

... <snipped>...

gcc -DHAVE_CONFIG_H -I.  -I. -I. -I../bfd -I./config -I./../include -I./.. -I./../bfd -DLOCALEDIR="\"/opt/gcc-4.9.3/install/share/locale\""  -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT as.o -MD -MP -MF .deps/as.Tpo -c -o as.o as.c
as.c: In function ‘print_version_id’:
as.c:224:14: error: ‘TARGET_ALIAS’ undeclared (first use in this function)
     VERSION, TARGET_ALIAS, BFD_VERSION_STRING);
              ^
as.c:224:14: note: each undeclared identifier is reported only once for each function it appears in
as.c: In function ‘parse_args’:
as.c:635:5: error: ‘TARGET_ALIAS’ undeclared (first use in this function)
     TARGET_ALIAS);
     ^
as.c:649:44: error: ‘TARGET_CANONICAL’ undeclared (first use in this function)
    fprintf (stderr, _("canonical = %s\n"), TARGET_CANONICAL);
                                            ^
as.c:650:43: error: ‘TARGET_CPU’ undeclared (first use in this function)
    fprintf (stderr, _("cpu-type = %s\n"), TARGET_CPU);
                                           ^
Makefile:896: recipe for target 'as.o' failed

... <snipped>...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> cd gas
address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/gas> gcc -DHAVE_CONFIG_H -I.  -I. -I. -I../bfd -I./config -I./../include -I./.. -I./../bfd -DLOCALEDIR="\"/opt/gcc-4.9.3/install/share/locale\""  -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT as.o -MD -MP -MF .deps/as.Tpo -c -o as.o as.c --save-temps

... <same error> ...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/gas> head as.i -n 20
# 1 "as.c"
# 1 "/opt/gcc-4.9.3/binutils/binutils-2.25/gas//"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "as.c"
# 34 "as.c"
# 1 "as.h" 1
# 37 "as.h"
# 1 "./../include/alloca-conf.h" 1
# 16 "./../include/alloca-conf.h"
# 1 "../bfd/config.h" 1
# 17 "./../include/alloca-conf.h" 2

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/gas> mv ../bfd/config.h ../bfd/config.h.bak
address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/gas> make

... <everything compiles perfectly> ...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/gas> cd ..
address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> make

... <bfd is recompiled which restores bfd/config.h > ...

... <then I get the following error in binutils:> ...

gcc -DHAVE_CONFIG_H -I.  -I. -I. -I../bfd -I./../bfd -I./../include -DLOCALEDIR="\"/opt/gcc-4.9.3/install/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation  -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT bucomm.o -MD -MP -MF .deps/bucomm.Tpo -c -o bucomm.o bucomm.c
bucomm.c: In function ‘set_default_bfd_target’:
bucomm.c:159:24: error: ‘TARGET’ undeclared (first use in this function)
   const char *target = TARGET;
                        ^
bucomm.c:159:24: note: each undeclared identifier is reported only once for each function it appears in
Makefile:932: recipe for target 'bucomm.o' failed

... <snipped> ...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> cd binutils
address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/binutils> gcc -DHAVE_CONFIG_H -I.  -I. -I. -I../bfd -I./../bfd -I./../include -DLOCALEDIR="\"/opt/gcc-4.9.3/install/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation  -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT bucomm.o -MD -MP -MF .deps/bucomm.Tpo -c -o bucomm.o bucomm.c --save-temps

... <same error> ...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/binutils> head bucomm.i -n 20
# 1 "bucomm.c"
# 1 "/opt/gcc-4.9.3/binutils/binutils-2.25/binutils//"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "bucomm.c"
# 24 "bucomm.c"
# 1 "sysdep.h" 1
# 23 "sysdep.h"
# 1 "./../include/alloca-conf.h" 1
# 16 "./../include/alloca-conf.h"
# 1 "../bfd/config.h" 1
# 17 "./../include/alloca-conf.h" 2

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/binutils> gcc -DHAVE_CONFIG_H -I.  -I. -I. -I../bfd -I./../bfd -I./../include -DLOCALEDIR="\"/opt/gcc-4.9.3/install/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation  -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -MT bucomm.o -MD -MP -MF .deps/bucomm.Tpo -c -o bucomm.o bucomm.c --save-temps

... <no errors> ...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/binutils> head bucomm.i -n 20
# 1 "bucomm.c"
# 1 "/opt/gcc-4.9.3/binutils/binutils-2.25/binutils//"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "bucomm.c"
# 24 "bucomm.c"
# 1 "sysdep.h" 1
# 23 "sysdep.h"
# 1 "./../include/alloca-conf.h" 1
# 16 "./../include/alloca-conf.h"
# 1 "./config.h" 1 3                                         <---- now the correct 'config.h' is included
# 17 "./../include/alloca-conf.h" 2

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/binutils> make

... <everything compiles without error> ...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25/binutils> cd ..
address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> make

... <everything compiles without error> ...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> make check

... <all tests pass> ...

address@hidden:/opt/gcc-4.9.3/binutils/binutils-2.25> make install

... <everything is installed> ...




On Thu, Jul 16, 2015 at 9:23 AM, Mike McWilliam <address@hidden> wrote:
Hello Folks

              Trying to compile binutils on my system and I am getting the following error:

as.c: In function ‘print_version_id’:
as.c:224:14: error: ‘TARGET_ALIAS’ undeclared (first use in this function)
     VERSION, TARGET_ALIAS, BFD_VERSION_STRING);
              ^

<...including a few more similar errors...>

             I suppose this is more an error with the configure.... this is something that is over my head so hoping you folks could direct me to the appropriate channel for help with this problem... this could be a bug... or my mistake... I have successfully compiled this version binutils in the past on older machines... so not sure why it is not working now...

thanks
Mike


reply via email to

[Prev in Thread] Current Thread [Next in Thread]