dwarf2 unwind info check broken
Andreas Jaeger
aj@suse.de
Sun Mar 17 02:14:00 GMT 2002
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
More information about the Libc-hacker
mailing list