* dwarf2 unwind info check broken @ 2002-03-17 2:14 Andreas Jaeger 2002-03-17 2:19 ` Andreas Jaeger 0 siblings, 1 reply; 15+ messages in thread From: Andreas Jaeger @ 2002-03-17 2:14 UTC (permalink / raw) To: GNU libc hacker With current binutils and both gcc 2.95.3 and GCC 3.2 CVS on i686-linux-gnu I now get: checking for DWARF2 unwind info support... (cached) no The test program from configure: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ static char __EH_FRAME_BEGIN__[]; _start () { #ifdef CHECK__register_frame __register_frame (__EH_FRAME_BEGIN__); __deregister_frame (__EH_FRAME_BEGIN__); #endif #ifdef CHECK__register_frame_info __register_frame_info (__EH_FRAME_BEGIN__); __deregister_frame_info (__EH_FRAME_BEGIN__); #endif } int __eh_pc; __throw () {} /* FIXME: this is fragile. */ malloc () {} strcmp () {} strlen () {} memcpy () {} memset () {} free () {} abort () {} __bzero () {} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gives with gcc 2.95.3: gromit:~/tmp:[1]$ gcc -O2 -DCHECK__register_frame_info -nostdlib -nostartfiles -o conftest dwarf-test.c -lgcc dwarf-test.c: In function `abort': dwarf-test.c:22: warning: `noreturn' function does return /tmp/ccXEbOxh.o: In function `_start': /tmp/ccXEbOxh.o(.text+0xa): undefined reference to `__EH_FRAME_BEGIN__' /tmp/ccXEbOxh.o(.text+0x17): undefined reference to `__EH_FRAME_BEGIN__' collect2: ld returned 1 exit status gromit:~/tmp:[1]$ gcc -O2 -DCHECK__register_frame -nostdlib -nostartfiles -o conftest dwarf-test.c -lgcc dwarf-test.c: In function `abort': dwarf-test.c:22: warning: `noreturn' function does return /tmp/ccyGGtkH.o: In function `_start': /tmp/ccyGGtkH.o(.text+0xa): undefined reference to `__EH_FRAME_BEGIN__' /tmp/ccyGGtkH.o(.text+0x17): undefined reference to `__EH_FRAME_BEGIN__' collect2: ld returned 1 exit status And with gcc 3.2 CVS: gromit:~/tmp:[1]$ /opt/gcc/3.2-devel/bin/gcc -O2 -DCHECK__register_frame_info -nostdlib -nostartfiles -o conftest dwarf-test.c -lgcc dwarf-test.c: In function `abort': dwarf-test.c:22: warning: `noreturn' function does return /tmp/ccaTwPiF.o: In function `_start': /tmp/ccaTwPiF.o(.text+0x9): undefined reference to `__EH_FRAME_BEGIN__' /tmp/ccaTwPiF.o(.text+0xe): undefined reference to `__register_frame_info' /tmp/ccaTwPiF.o(.text+0x15): undefined reference to `__EH_FRAME_BEGIN__' /tmp/ccaTwPiF.o(.text+0x1a): undefined reference to `__deregister_frame_info' collect2: ld returned 1 exit status gromit:~/tmp:[1]$ /opt/gcc/3.2-devel/bin/gcc -O2 -DCHECK__register_frame -nostdlib -nostartfiles -o conftest dwarf-test.c -lgcc dwarf-test.c: In function `abort': dwarf-test.c:22: warning: `noreturn' function does return /tmp/ccWPMC6G.o: In function `_start': /tmp/ccWPMC6G.o(.text+0x9): undefined reference to `__EH_FRAME_BEGIN__' /tmp/ccWPMC6G.o(.text+0xe): undefined reference to `__register_frame' /tmp/ccWPMC6G.o(.text+0x15): undefined reference to `__EH_FRAME_BEGIN__' /tmp/ccWPMC6G.o(.text+0x1a): undefined reference to `__deregister_frame' collect2: ld returned 1 exit status Any ideas? This leads to the following bug when linking sln: /opt/gcc/3.2-devel/bin/gcc -nostdlib -nostartfiles -static -o /builds/glibc/gcc-3.2/elf/sln /builds/glibc/gcc-3.2/csu/crt1.o /builds/glibc/gcc-3.2/csu/crti.o `/opt/gcc/3.2-devel/bin/gcc --print-file-name=crtbegin.o` /builds/glibc/gcc-3.2/elf/sln.o /builds/glibc/gcc-3.2/libc.a -lgcc /builds/glibc/gcc-3.2/libc.a `/opt/gcc/3.2-devel/bin/gcc --print-file-name=crtend.o` /builds/glibc/gcc-3.2/csu/crtn.o /opt/gcc/3.2-devel/lib/gcc-lib/i686-pc-linux-gnu/3.2/crtbegin.o: In function `__do_global_dtors_aux': /opt/gcc/3.2-devel/lib/gcc-lib/i686-pc-linux-gnu/3.2/crtbegin.o(.text+0x36): undefined reference to `__deregister_frame_info_bases' /opt/gcc/3.2-devel/lib/gcc-lib/i686-pc-linux-gnu/3.2/crtbegin.o(.text+0x46): undefined reference to `__deregister_frame_info_bases' /opt/gcc/3.2-devel/lib/gcc-lib/i686-pc-linux-gnu/3.2/crtbegin.o: In function `frame_dummy': /opt/gcc/3.2-devel/lib/gcc-lib/i686-pc-linux-gnu/3.2/crtbegin.o(.text+0x62): undefined reference to `__register_frame_info_bases' /opt/gcc/3.2-devel/lib/gcc-lib/i686-pc-linux-gnu/3.2/crtbegin.o(.text+0x97): undefined reference to `__register_frame_info_bases' collect2: ld returned 1 exit status make[2]: *** [/builds/glibc/gcc-3.2/elf/sln] Error 1 Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-17 2:14 dwarf2 unwind info check broken Andreas Jaeger @ 2002-03-17 2:19 ` Andreas Jaeger 2002-03-17 4:25 ` Andreas Jaeger 2002-03-17 7:02 ` Andreas Schwab 0 siblings, 2 replies; 15+ messages in thread From: Andreas Jaeger @ 2002-03-17 2:19 UTC (permalink / raw) To: GNU libc hacker Andreas Jaeger <aj@suse.de> writes: > With current binutils and both gcc 2.95.3 and GCC 3.2 CVS on > i686-linux-gnu I now get: > > checking for DWARF2 unwind info support... (cached) no > > The test program from configure: > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > static char __EH_FRAME_BEGIN__[]; I figured out the problem: the []; gets removed by autoconf - but my autoconf version didn't remove it. :-( We should remove the [] from configure.in since it's broken there. Ok to commit the appended patch? Andreas 2002-03-17 Andreas Jaeger <aj@suse.de> * configure.in: Fix dwarf2 unwind test. ============================================================ Index: configure.in --- configure.in 2002/03/16 02:54:00 1.340 +++ configure.in 2002/03/17 10:19:06 @@ -1389,7 +1389,7 @@ fi AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info, [cat > conftest.c <<EOF #line __oline__ "configure" -static char __EH_FRAME_BEGIN__[]; +static char __EH_FRAME_BEGIN__; _start () { #ifdef CHECK__register_frame -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-17 2:19 ` Andreas Jaeger @ 2002-03-17 4:25 ` Andreas Jaeger 2002-03-17 4:54 ` Andreas Jaeger 2002-03-17 12:14 ` Jakub Jelinek 2002-03-17 7:02 ` Andreas Schwab 1 sibling, 2 replies; 15+ messages in thread From: Andreas Jaeger @ 2002-03-17 4:25 UTC (permalink / raw) To: GNU libc hacker Andreas Jaeger <aj@suse.de> writes: > Andreas Jaeger <aj@suse.de> writes: > >> With current binutils and both gcc 2.95.3 and GCC 3.2 CVS on >> i686-linux-gnu I now get: >> >> checking for DWARF2 unwind info support... (cached) no >> >> The test program from configure: >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> static char __EH_FRAME_BEGIN__[]; > > I figured out the problem: the []; gets removed by autoconf - but my > autoconf version didn't remove it. :-( But that's not the whole story, something is still broken for me: arthur:~/tmp:[1]$ /opt/gcc/3.2-devel/bin/gcc -DCHECK__register_frame_info -nostdlib -nostartfiles dwarf-test.c -o conftest -lgcc dwarf-test.c: In function `abort': dwarf-test.c:22: warning: `noreturn' function does return /tmp/ccomS4ZM.o: In function `_start': /tmp/ccomS4ZM.o(.text+0x11): undefined reference to `__register_frame_info' /tmp/ccomS4ZM.o(.text+0x20): undefined reference to `__deregister_frame_info' collect2: ld returned 1 exit status arthur:~/tmp:[1]$ /opt/gcc/3.2-devel/bin/gcc -DCHECK__register_frame -nostdlib -nostartfiles dwarf-test.c -o conftest -lgcc dwarf-test.c: In function `abort': dwarf-test.c:22: warning: `noreturn' function does return /tmp/ccQkgVW6.o: In function `_start': /tmp/ccQkgVW6.o(.text+0x11): undefined reference to `__register_frame' /tmp/ccQkgVW6.o(.text+0x20): undefined reference to `__deregister_frame' collect2: ld returned 1 exit status But adding -lgcc_s fixes the problem: arthur:~/tmp:[1]$ /opt/gcc/3.2-devel/bin/gcc -DCHECK__register_frame -nostdlib -nostartfiles dwarf-test.c -o conftest -lgcc -lgcc_s dwarf-test.c: In function `abort': dwarf-test.c:22: warning: `noreturn' function does return arthur:~/tmp:[0]$ /opt/gcc/3.2-devel/bin/gcc -DCHECK__register_frame_info -nostdlib -nostartfiles dwarf-test.c -o conftest -lgcc -lgcc_s dwarf-test.c: In function `abort': dwarf-test.c:22: warning: `noreturn' function does return So, how can we fix that configure test - and do we need to add -lgcc_s for sln? Sorry, I'm a bit confused about this stuff... Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-17 4:25 ` Andreas Jaeger @ 2002-03-17 4:54 ` Andreas Jaeger 2002-03-17 12:14 ` Jakub Jelinek 1 sibling, 0 replies; 15+ messages in thread From: Andreas Jaeger @ 2002-03-17 4:54 UTC (permalink / raw) To: GNU libc hacker Andreas Jaeger <aj@suse.de> writes: [...] > So, how can we fix that configure test - and do we need to add -lgcc_s > for sln? Not -lgcc_s, it's -lgcc_eh. I still don't understand why it fails on my newer system but works fine on an older system... This seems to be related to this patch: 2001-12-15 Jakub Jelinek <jakub@redhat.com> [...] * gcc.c (init_gcc_specs): For -static-libgcc, use -lgcc -lgcc_eh. If neither -static-libgcc nor -shared-libgcc is passed and -shared, use -lgcc if LINK_EH_SPEC is defined and -lgcc_s -lgcc if not. If none of the above switches are passed, use -lgcc -lgcc_eh. (init_spec): If LINK_EH_SPEC is defined, prepend it to link_spec. Jakub, can you have a look at glibc? Any ideas what's broken - or what I'm doing wrong on my system? Thanks, Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-17 4:25 ` Andreas Jaeger 2002-03-17 4:54 ` Andreas Jaeger @ 2002-03-17 12:14 ` Jakub Jelinek 2002-03-19 8:32 ` Andreas Jaeger ` (2 more replies) 1 sibling, 3 replies; 15+ messages in thread From: Jakub Jelinek @ 2002-03-17 12:14 UTC (permalink / raw) To: Andreas Jaeger; +Cc: GNU libc hacker On Sun, Mar 17, 2002 at 01:25:16PM +0100, Andreas Jaeger wrote: > Andreas Jaeger <aj@suse.de> writes: > > > Andreas Jaeger <aj@suse.de> writes: > > > >> With current binutils and both gcc 2.95.3 and GCC 3.2 CVS on > >> i686-linux-gnu I now get: > >> > >> checking for DWARF2 unwind info support... (cached) no > >> > >> The test program from configure: > >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >> static char __EH_FRAME_BEGIN__[]; > > > > I figured out the problem: the []; gets removed by autoconf - but my > > autoconf version didn't remove it. :-( > > But that's not the whole story, something is still broken for me: There are 2 different cases if the register_frame_info & register_frame check both fail. Either you have gcc 3.1+ configured with old binutils, or new binutils. In the former case, we should define HAVE_DWARF2_UNWIND_INFO and HAVE_DWARF2_UNWIND_INFO_STATIC, in the latter case nothing (as in that case no registry should happen). So the unwind info check should be extended to something like (untested): if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles -o conftest conftest.c -lgcc >&AC_FD_CC]); then libc_cv_gcc_dwarf2_unwind_info=static else libc_cv_gcc_dwarf2_unwind_info=no fi +if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info + -nostdlib -nostartfiles + -o conftest conftest.c -lgcc -lgcc_eh >&AC_FD_CC]); then + if ${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles \ + -o conftest conftest.c -lgcc -lgcc_eh 2>&1 >/dev/null \ + | grep -q -- --eh-frame-hdr; then + libc_cv_gcc_dwarf2_unwind_info=no_registry_needed + else + libc_cv_gcc_dwarf2_unwind_info=static + fi +else + libc_cv_gcc_dwarf2_unwind_info=no +fi if test $libc_cv_gcc_dwarf2_unwind_info = no; then if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame -nostdlib -nostartfiles -o conftest conftest.c -lgcc >&AC_FD_CC]); then libc_cv_gcc_dwarf2_unwind_info=yes else libc_cv_gcc_dwarf2_unwind_info=no fi fi > So, how can we fix that configure test - and do we need to add -lgcc_s > for sln? Um, why? Especially since adding -lgcc_s to -static will lead to failed link (there is no static -lgcc_s). gcc takes care of adding -lgcc_eh when it is necessary for -static link. Jakub ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-17 12:14 ` Jakub Jelinek @ 2002-03-19 8:32 ` Andreas Jaeger 2002-03-19 12:19 ` Andreas Jaeger 2002-03-24 8:32 ` Andreas Jaeger 2 siblings, 0 replies; 15+ messages in thread From: Andreas Jaeger @ 2002-03-19 8:32 UTC (permalink / raw) To: Jakub Jelinek; +Cc: GNU libc hacker Jakub Jelinek <jakub@redhat.com> writes: > On Sun, Mar 17, 2002 at 01:25:16PM +0100, Andreas Jaeger wrote: >> Andreas Jaeger <aj@suse.de> writes: >> >> > Andreas Jaeger <aj@suse.de> writes: >> > >> >> With current binutils and both gcc 2.95.3 and GCC 3.2 CVS on >> >> i686-linux-gnu I now get: >> >> >> >> checking for DWARF2 unwind info support... (cached) no >> >> >> >> The test program from configure: >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> static char __EH_FRAME_BEGIN__[]; >> > >> > I figured out the problem: the []; gets removed by autoconf - but my >> > autoconf version didn't remove it. :-( >> >> But that's not the whole story, something is still broken for me: > > There are 2 different cases if the register_frame_info & > register_frame check both fail. > Either you have gcc 3.1+ configured with old binutils, or new binutils. > In the former case, we should define HAVE_DWARF2_UNWIND_INFO and > HAVE_DWARF2_UNWIND_INFO_STATIC, in the latter case nothing (as in that > case no registry should happen). > > So the unwind info check should be extended to something like > (untested): > > if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info > -nostdlib -nostartfiles > -o conftest conftest.c -lgcc >&AC_FD_CC]); then > libc_cv_gcc_dwarf2_unwind_info=static > else > libc_cv_gcc_dwarf2_unwind_info=no > fi > +if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info > + -nostdlib -nostartfiles > + -o conftest conftest.c -lgcc -lgcc_eh >&AC_FD_CC]); then > + if ${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles \ > + -o conftest conftest.c -lgcc -lgcc_eh 2>&1 >/dev/null \ > + | grep -q -- --eh-frame-hdr; then > + libc_cv_gcc_dwarf2_unwind_info=no_registry_needed > + else > + libc_cv_gcc_dwarf2_unwind_info=static > + fi > +else > + libc_cv_gcc_dwarf2_unwind_info=no > +fi > if test $libc_cv_gcc_dwarf2_unwind_info = no; then > if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame > -nostdlib -nostartfiles > -o conftest conftest.c -lgcc >&AC_FD_CC]); > then > libc_cv_gcc_dwarf2_unwind_info=yes > else > libc_cv_gcc_dwarf2_unwind_info=no > fi > fi > >> So, how can we fix that configure test - and do we need to add -lgcc_s >> for sln? > > Um, why? Especially since adding -lgcc_s to -static will lead to failed link > (there is no static -lgcc_s). > gcc takes care of adding -lgcc_eh when it is necessary for -static link. Strange, it now works for me - but I installed different binutils. I'll try to investigate something more what's the problem is, Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-17 12:14 ` Jakub Jelinek 2002-03-19 8:32 ` Andreas Jaeger @ 2002-03-19 12:19 ` Andreas Jaeger [not found] ` <20020319160357.J1213@devserv.devel.redhat.com> 2002-03-24 8:32 ` Andreas Jaeger 2 siblings, 1 reply; 15+ messages in thread From: Andreas Jaeger @ 2002-03-19 12:19 UTC (permalink / raw) To: Jakub Jelinek; +Cc: GNU libc hacker Jakub Jelinek <jakub@redhat.com> writes: > On Sun, Mar 17, 2002 at 01:25:16PM +0100, Andreas Jaeger wrote: >> Andreas Jaeger <aj@suse.de> writes: >> >> > Andreas Jaeger <aj@suse.de> writes: >> > >> >> With current binutils and both gcc 2.95.3 and GCC 3.2 CVS on >> >> i686-linux-gnu I now get: >> >> >> >> checking for DWARF2 unwind info support... (cached) no >> >> >> >> The test program from configure: >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> static char __EH_FRAME_BEGIN__[]; >> > >> > I figured out the problem: the []; gets removed by autoconf - but my >> > autoconf version didn't remove it. :-( >> >> But that's not the whole story, something is still broken for me: > > There are 2 different cases if the register_frame_info & > register_frame check both fail. > Either you have gcc 3.1+ configured with old binutils, or new binutils. > In the former case, we should define HAVE_DWARF2_UNWIND_INFO and > HAVE_DWARF2_UNWIND_INFO_STATIC, in the latter case nothing (as in that > case no registry should happen). > > So the unwind info check should be extended to something like > (untested): > > if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info > -nostdlib -nostartfiles > -o conftest conftest.c -lgcc >&AC_FD_CC]); then > libc_cv_gcc_dwarf2_unwind_info=static > else > libc_cv_gcc_dwarf2_unwind_info=no > fi > +if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info > + -nostdlib -nostartfiles > + -o conftest conftest.c -lgcc -lgcc_eh >&AC_FD_CC]); then > + if ${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles \ > + -o conftest conftest.c -lgcc -lgcc_eh 2>&1 >/dev/null \ > + | grep -q -- --eh-frame-hdr; then This does not look right. I suppose you want to grep through ld --help? In that case let's use ${LD-ld} or gcc -Wl,--help, Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20020319160357.J1213@devserv.devel.redhat.com>]
* Re: dwarf2 unwind info check broken [not found] ` <20020319160357.J1213@devserv.devel.redhat.com> @ 2002-03-19 13:25 ` Andreas Jaeger 0 siblings, 0 replies; 15+ messages in thread From: Andreas Jaeger @ 2002-03-19 13:25 UTC (permalink / raw) To: Jakub Jelinek; +Cc: GNU libc hacker Jakub Jelinek <jakub@redhat.com> writes: > On Tue, Mar 19, 2002 at 09:12:07PM +0100, Andreas Jaeger wrote: >> > So the unwind info check should be extended to something like >> > (untested): >> > >> > if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info >> > -nostdlib -nostartfiles >> > -o conftest conftest.c -lgcc >&AC_FD_CC]); then >> > libc_cv_gcc_dwarf2_unwind_info=static >> > else >> > libc_cv_gcc_dwarf2_unwind_info=no >> > fi >> > +if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info >> > + -nostdlib -nostartfiles >> > + -o conftest conftest.c -lgcc -lgcc_eh >&AC_FD_CC]); then >> > + if ${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles \ >> > + -o conftest conftest.c -lgcc -lgcc_eh 2>&1 >/dev/null \ >> > + | grep -q -- --eh-frame-hdr; then >> >> This does not look right. I suppose you want to grep through ld >> --help? In that case let's use ${LD-ld} or gcc -Wl,--help, > > Um, why? I want to grep in the ld command line gcc driver creates. But you do not display the ld command line at all. > If ld --help shows --eh-frame-hdr, it doesn't mean gcc uses it and only if > gcc uses it, we can skip the __register_* call. That means, you want to add -v to that command line. Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-17 12:14 ` Jakub Jelinek 2002-03-19 8:32 ` Andreas Jaeger 2002-03-19 12:19 ` Andreas Jaeger @ 2002-03-24 8:32 ` Andreas Jaeger 2002-03-24 9:34 ` Andreas Jaeger 2 siblings, 1 reply; 15+ messages in thread From: Andreas Jaeger @ 2002-03-24 8:32 UTC (permalink / raw) To: Jakub Jelinek; +Cc: GNU libc hacker Jakub Jelinek <jakub@redhat.com> writes: > So the unwind info check should be extended to something like > (untested): I've tested this now extensivly and I'm happy with the appended version of this patch. Ok to commit? Andreas 2002-03-24 Jakub Jelinek <jakub@redhat.com>, Andreas Jaeger <aj@suse.de> * configure.in: Fix DWARF2 unwind info check for newer GCC and binutils. ============================================================ Index: configure.in --- configure.in 2002/03/16 02:54:00 1.340 +++ configure.in 2002/03/24 16:22:04 @@ -1389,7 +1389,7 @@ fi AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info, [cat > conftest.c <<EOF #line __oline__ "configure" -static char __EH_FRAME_BEGIN__[]; +static char *__EH_FRAME_BEGIN__; _start () { #ifdef CHECK__register_frame @@ -1421,6 +1421,20 @@ if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCH else libc_cv_gcc_dwarf2_unwind_info=no fi +if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info + -nostdlib -nostartfiles + -o conftest conftest.c -lgcc -lgcc_eh >&AC_FD_CC]); then + if ${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles \ + -o conftest conftest.c -lgcc -lgcc_eh -v 2>&1 >/dev/null \ + | grep -q -- --eh-frame-hdr; then + libc_cv_gcc_dwarf2_unwind_info=no_registry_needed + else + libc_cv_gcc_dwarf2_unwind_info=static + fi +else + libc_cv_gcc_dwarf2_unwind_info=no +fi + if test $libc_cv_gcc_dwarf2_unwind_info = no; then if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame -nostdlib -nostartfiles -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-24 8:32 ` Andreas Jaeger @ 2002-03-24 9:34 ` Andreas Jaeger 2002-03-24 11:02 ` Jakub Jelinek 0 siblings, 1 reply; 15+ messages in thread From: Andreas Jaeger @ 2002-03-24 9:34 UTC (permalink / raw) To: Jakub Jelinek; +Cc: GNU libc hacker Andreas Jaeger <aj@suse.de> writes: > Jakub Jelinek <jakub@redhat.com> writes: > >> So the unwind info check should be extended to something like >> (untested): > > I've tested this now extensivly and I'm happy with the appended > version of this patch. I missed one point in my testing: Building of static programs in glibc: /opt/gcc/3.1-devel/bin/gcc -nostdlib -nostartfiles -static -o /builds/glibc/gcc-3.1/elf/sln /builds/glibc/gcc-3.1/csu/crt1.o /builds/glibc/gcc-3.1/csu/crti.o `/opt/gcc/3.1-devel/bin/gcc --print-file-name=crtbegin.o` /builds/glibc/gcc-3.1/elf/sln.o /builds/glibc/gcc-3.1/libc.a -lgcc /builds/glibc/gcc-3.1/libc.a `/opt/gcc/3.1-devel/bin/gcc --print-file-name=crtend.o` /builds/glibc/gcc-3.1/csu/crtn.o /opt/gcc/3.1-devel/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtbegin.o: In function `__do_global_dtors_aux': /opt/gcc/3.1-devel/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtbegin.o(.text+0x36): undefined reference to `__deregister_frame_info_bases' ... We use -static but since we use -nostdlib, -lgcc_eh is not added here:-( Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-24 9:34 ` Andreas Jaeger @ 2002-03-24 11:02 ` Jakub Jelinek 2002-03-24 11:48 ` Andreas Jaeger 0 siblings, 1 reply; 15+ messages in thread From: Jakub Jelinek @ 2002-03-24 11:02 UTC (permalink / raw) To: Andreas Jaeger; +Cc: GNU libc hacker On Sun, Mar 24, 2002 at 06:32:27PM +0100, Andreas Jaeger wrote: > Andreas Jaeger <aj@suse.de> writes: > > > Jakub Jelinek <jakub@redhat.com> writes: > > > >> So the unwind info check should be extended to something like > >> (untested): > > > > I've tested this now extensivly and I'm happy with the appended > > version of this patch. > > I missed one point in my testing: Building of static programs in > glibc: > > /opt/gcc/3.1-devel/bin/gcc -nostdlib -nostartfiles -static -o /builds/glibc/gcc-3.1/elf/sln /builds/glibc/gcc-3.1/csu/crt1.o /builds/glibc/gcc-3.1/csu/crti.o `/opt/gcc/3.1-devel/bin/gcc --print-file-name=crtbegin.o` /builds/glibc/gcc-3.1/elf/sln.o /builds/glibc/gcc-3.1/libc.a -lgcc /builds/glibc/gcc-3.1/libc.a `/opt/gcc/3.1-devel/bin/gcc --print-file-name=crtend.o` /builds/glibc/gcc-3.1/csu/crtn.o > /opt/gcc/3.1-devel/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtbegin.o: In function `__do_global_dtors_aux': > /opt/gcc/3.1-devel/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtbegin.o(.text+0x36): undefined reference to `__deregister_frame_info_bases' > ... > > We use -static but since we use -nostdlib, -lgcc_eh is not added > here:-( Configure should detect if -lgcc_eh exist and add it in in addition to -lgcc (well, for gcc-3.1+ configured with binutils 2.12 it doesn't matter), but for gcc-3.1+ configured with older binutils it matters. Jakub ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-24 11:02 ` Jakub Jelinek @ 2002-03-24 11:48 ` Andreas Jaeger 2002-03-24 12:38 ` Jakub Jelinek 0 siblings, 1 reply; 15+ messages in thread From: Andreas Jaeger @ 2002-03-24 11:48 UTC (permalink / raw) To: Jakub Jelinek; +Cc: GNU libc hacker Jakub Jelinek <jakub@redhat.com> writes: > On Sun, Mar 24, 2002 at 06:32:27PM +0100, Andreas Jaeger wrote: >> Andreas Jaeger <aj@suse.de> writes: >> >> > Jakub Jelinek <jakub@redhat.com> writes: >> > >> >> So the unwind info check should be extended to something like >> >> (untested): >> > >> > I've tested this now extensivly and I'm happy with the appended >> > version of this patch. >> >> I missed one point in my testing: Building of static programs in >> glibc: >> >> /opt/gcc/3.1-devel/bin/gcc -nostdlib -nostartfiles -static -o /builds/glibc/gcc-3.1/elf/sln /builds/glibc/gcc-3.1/csu/crt1.o /builds/glibc/gcc-3.1/csu/crti.o `/opt/gcc/3.1-devel/bin/gcc --print-file-name=crtbegin.o` /builds/glibc/gcc-3.1/elf/sln.o /builds/glibc/gcc-3.1/libc.a -lgcc /builds/glibc/gcc-3.1/libc.a `/opt/gcc/3.1-devel/bin/gcc --print-file-name=crtend.o` /builds/glibc/gcc-3.1/csu/crtn.o >> /opt/gcc/3.1-devel/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtbegin.o: In function `__do_global_dtors_aux': >> /opt/gcc/3.1-devel/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtbegin.o(.text+0x36): undefined reference to `__deregister_frame_info_bases' >> ... >> >> We use -static but since we use -nostdlib, -lgcc_eh is not added >> here:-( > > Configure should detect if -lgcc_eh exist and add it in in addition to > -lgcc (well, for gcc-3.1+ configured with binutils 2.12 it doesn't matter), > but for gcc-3.1+ configured with older binutils it matters. This is with gcc 3.1 and current binutils from CVS. But -lgcc_eh is not added and I don't think there's code to do so, Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-24 11:48 ` Andreas Jaeger @ 2002-03-24 12:38 ` Jakub Jelinek 2002-03-25 22:30 ` Andreas Jaeger 0 siblings, 1 reply; 15+ messages in thread From: Jakub Jelinek @ 2002-03-24 12:38 UTC (permalink / raw) To: Andreas Jaeger; +Cc: GNU libc hacker On Sun, Mar 24, 2002 at 08:48:48PM +0100, Andreas Jaeger wrote: > > Configure should detect if -lgcc_eh exist and add it in in addition to > > -lgcc (well, for gcc-3.1+ configured with binutils 2.12 it doesn't matter), > > but for gcc-3.1+ configured with older binutils it matters. > > This is with gcc 3.1 and current binutils from CVS. But -lgcc_eh is > not added and I don't think there's code to do so, But if gcc 3.1 is configured with binutils >= 2.12, then crtbegin*.o don't ever call __register_* or __deregister_*, so you don't actually need -lgcc_eh. Jakub ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-24 12:38 ` Jakub Jelinek @ 2002-03-25 22:30 ` Andreas Jaeger 0 siblings, 0 replies; 15+ messages in thread From: Andreas Jaeger @ 2002-03-25 22:30 UTC (permalink / raw) To: Jakub Jelinek; +Cc: GNU libc hacker Jakub Jelinek <jakub@redhat.com> writes: > On Sun, Mar 24, 2002 at 08:48:48PM +0100, Andreas Jaeger wrote: >> > Configure should detect if -lgcc_eh exist and add it in in addition to >> > -lgcc (well, for gcc-3.1+ configured with binutils 2.12 it doesn't matter), >> > but for gcc-3.1+ configured with older binutils it matters. >> >> This is with gcc 3.1 and current binutils from CVS. But -lgcc_eh is >> not added and I don't think there's code to do so, > > But if gcc 3.1 is configured with binutils >= 2.12, then crtbegin*.o don't > ever call __register_* or __deregister_*, so you don't actually need > -lgcc_eh. With the patch applied, I get: checking for DWARF2 unwind info support... static checking for __builtin_expect... yes I guess that I configured GCC 3.1 wrong. gcc/auto-host.h has: /* Define if your linker supports --eh-frame-hdr option. */ /* #undef HAVE_LD_EH_FRAME_HDR */ But I think I got it - GCC used the wrong assembler, I configured GCC with --with-gnu-as and it used for detection /usr/bin/as - but for building it used the newer binutils that were in /opt/binutils/bin. Replacing my binutils in /usr/bin fixed the problems I had. So, I'm happy for now - but I'll play a bit more around, Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: dwarf2 unwind info check broken 2002-03-17 2:19 ` Andreas Jaeger 2002-03-17 4:25 ` Andreas Jaeger @ 2002-03-17 7:02 ` Andreas Schwab 1 sibling, 0 replies; 15+ messages in thread From: Andreas Schwab @ 2002-03-17 7:02 UTC (permalink / raw) To: GNU libc hacker Andreas Jaeger <aj@suse.de> writes: |> Andreas Jaeger <aj@suse.de> writes: |> |> > With current binutils and both gcc 2.95.3 and GCC 3.2 CVS on |> > i686-linux-gnu I now get: |> > |> > checking for DWARF2 unwind info support... (cached) no |> > |> > The test program from configure: |> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |> > static char __EH_FRAME_BEGIN__[]; |> |> I figured out the problem: the []; gets removed by autoconf - but my |> autoconf version didn't remove it. :-( |> |> We should remove the [] from configure.in since it's broken there. Change the quote characters. This should work with every version of autoconf: changequote(,)dnl static char __EH_FRAME_BEGIN__[]; changequote([,])dnl Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE GmbH, Deutschherrnstr. 15-19, D-90429 Nürnberg Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2002-03-26 6:30 UTC | newest] Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2002-03-17 2:14 dwarf2 unwind info check broken Andreas Jaeger 2002-03-17 2:19 ` Andreas Jaeger 2002-03-17 4:25 ` Andreas Jaeger 2002-03-17 4:54 ` Andreas Jaeger 2002-03-17 12:14 ` Jakub Jelinek 2002-03-19 8:32 ` Andreas Jaeger 2002-03-19 12:19 ` Andreas Jaeger [not found] ` <20020319160357.J1213@devserv.devel.redhat.com> 2002-03-19 13:25 ` Andreas Jaeger 2002-03-24 8:32 ` Andreas Jaeger 2002-03-24 9:34 ` Andreas Jaeger 2002-03-24 11:02 ` Jakub Jelinek 2002-03-24 11:48 ` Andreas Jaeger 2002-03-24 12:38 ` Jakub Jelinek 2002-03-25 22:30 ` Andreas Jaeger 2002-03-17 7:02 ` Andreas Schwab
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).