This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

dwarf2 unwind info check broken



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]