diff options
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | config.h.in | 7 | ||||
-rwxr-xr-x | configure | 123 | ||||
-rw-r--r-- | configure.in | 65 | ||||
-rw-r--r-- | elf/sofini.c | 2 | ||||
-rw-r--r-- | elf/soinit.c | 54 |
6 files changed, 14 insertions, 251 deletions
@@ -1,3 +1,17 @@ +2004-11-23 Richard Sandiford <rsandifo@redhat.com> + + * configure.in (libc_cv_gcc_dwarf2_unwind_info): Delete. + (HAVE_DWARF2_UNWIND_INFO{,_STATIC}): Remove AC_DEFINEs. + * configure: Regenerate. + * config.h.in (HAVE_DWARF2_UNWIND_INFO{,_STATIC}): Remove undefs. + * elf/soinit.c: Don't include gccframe.h. + (__EH_FRAME_BEGIN__): Define unconditionally. + (__register_frame_info, __deregister_frame_info) + (__register_frame_info_bases, __deregister_frame_info_bases) + (__register_frame, __deregister_frame): Remove declarations. + (__libc_global_ctors, __libc_fini): Don't call registry functions. + * elf/sofini.c (__EH_FRAME_END__): Define unconditionally. + 2006-01-18 Samuel Thibault <samuel.thibault@ens-lyon.org> [BZ #2178] diff --git a/config.h.in b/config.h.in index 147addd..bbe9d6c 100644 --- a/config.h.in +++ b/config.h.in @@ -89,13 +89,6 @@ /* Define if static NSS modules are wanted. */ #undef DO_STATIC_NSS -/* Define if gcc uses DWARF2 unwind information for exception support. */ -#undef HAVE_DWARF2_UNWIND_INFO - -/* Define if gcc uses DWARF2 unwind information for exception support - with static variable. */ -#undef HAVE_DWARF2_UNWIND_INFO_STATIC - /* Define if the compiler supports __builtin_expect. */ #undef HAVE_BUILTIN_EXPECT @@ -1962,33 +1962,6 @@ m680?0) base_machine=m68k machine=m68k/$machine ;; m68k) base_machine=m68k machine=m68k/m68020 ;; m88???) base_machine=m88k machine=m88k/$machine ;; m88k) base_machine=m88k machine=m88k/m88100 ;; -mips64*) base_machine=mips64 - case "$CC $CFLAGS $CPPFLAGS " in - *" -mabi=n32 "*) mips_cc_abi=n32 ;; - *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;; - *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;; - *) mips_cc_abi=default ;; - esac - case $config_os in - *abin32*) mips_config_abi=n32 ;; - *abi64*|*abin64*) mips_config_abi=64 ;; - *abi32*|*abio32*) mips_config_abi=32 ;; - *) mips_config_abi=$mips_cc_abi ;; - esac - case $mips_config_abi in - default) machine=mips/mips64/n32 mips_config_abi=n32 ;; - n32) machine=mips/mips64/n32 ;; - 64) machine=mips/mips64/n64 ;; - 32) machine=mips/mips32/kern64 ;; - esac - machine=$machine/$config_machine - if test $mips_config_abi != $mips_cc_abi; then - # This won't make it to config.make, but we want to - # set this in case configure tests depend on it. - CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi" - fi - ;; -mips*) base_machine=mips machine=mips/mips32/$machine ;; powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;; powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;; s390) base_machine=s390 machine=s390/s390-32 ;; @@ -6295,102 +6268,6 @@ _ACEOF fi fi -echo "$as_me:$LINENO: checking for DWARF2 unwind info support" >&5 -echo $ECHO_N "checking for DWARF2 unwind info support... $ECHO_C" >&6 -if test "${libc_cv_gcc_dwarf2_unwind_info+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat > conftest.c <<EOF -#line $LINENO "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 () {} -dl_iterate_phdr () {} -EOF -libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \ - $LDFLAGS \ - -nostdlib -nostartfiles -o conftest conftest.c \ - -lgcc" -# Some platforms' specs put -lgcc first. The second one doesn't hurt. -if { ac_try='$libc_unwind_check >&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } || - { ac_try='$libc_unwind_check -lgcc_eh -lgcc >&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } -then - if $libc_unwind_check -v 2>&1 >/dev/null \ - | grep -- --eh-frame-hdr 2>&1 >/dev/null; 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='${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame - $LDFLAGS -nostdlib -nostartfiles - -o conftest conftest.c -lgcc >&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libc_cv_gcc_dwarf2_unwind_info=yes - else - libc_cv_gcc_dwarf2_unwind_info=no - fi -fi -rm -f conftest* -fi -echo "$as_me:$LINENO: result: $libc_cv_gcc_dwarf2_unwind_info" >&5 -echo "${ECHO_T}$libc_cv_gcc_dwarf2_unwind_info" >&6 -case $libc_cv_gcc_dwarf2_unwind_info in -yes) - cat >>confdefs.h <<\_ACEOF -#define HAVE_DWARF2_UNWIND_INFO 1 -_ACEOF - - ;; -static) - cat >>confdefs.h <<\_ACEOF -#define HAVE_DWARF2_UNWIND_INFO 1 -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define HAVE_DWARF2_UNWIND_INFO_STATIC 1 -_ACEOF - - ;; -esac - echo "$as_me:$LINENO: checking for __builtin_expect" >&5 echo $ECHO_N "checking for __builtin_expect... $ECHO_C" >&6 if test "${libc_cv_gcc_builtin_expect+set}" = set; then diff --git a/configure.in b/configure.in index 7871515..889fb55 100644 --- a/configure.in +++ b/configure.in @@ -1726,71 +1726,6 @@ if test "$libc_cv_c_asmcr0_bug" != 'no'; then fi fi -AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info, -[cat > conftest.c <<EOF -#line $LINENO "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 () {} -dl_iterate_phdr () {} -EOF -libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \ - $LDFLAGS \ - -nostdlib -nostartfiles -o conftest conftest.c \ - -lgcc" -# Some platforms' specs put -lgcc first. The second one doesn't hurt. -if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) || - AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD]) -then - if $libc_unwind_check -v 2>&1 >/dev/null \ - | grep -- --eh-frame-hdr 2>&1 >/dev/null; 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 $CPPFLAGS -DCHECK__register_frame - $LDFLAGS -nostdlib -nostartfiles - -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then - libc_cv_gcc_dwarf2_unwind_info=yes - else - libc_cv_gcc_dwarf2_unwind_info=no - fi -fi -rm -f conftest*]) -case $libc_cv_gcc_dwarf2_unwind_info in -yes) - AC_DEFINE(HAVE_DWARF2_UNWIND_INFO) - ;; -static) - AC_DEFINE(HAVE_DWARF2_UNWIND_INFO) - AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC) - ;; -esac - dnl Check whether compiler understands __builtin_expect. AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect, [cat > conftest.c <<EOF diff --git a/elf/sofini.c b/elf/sofini.c index 16e77e7..55b9b1f 100644 --- a/elf/sofini.c +++ b/elf/sofini.c @@ -8,7 +8,6 @@ static void (*const __DTOR_END__[1]) (void) __attribute__ ((used, section (".dtors"))) = { 0 }; -#ifdef HAVE_DWARF2_UNWIND_INFO /* Terminate the frame unwind info section with a 4byte 0 as a sentinel; this would be the 'length' field in a real FDE. */ @@ -16,4 +15,3 @@ typedef unsigned int ui32 __attribute__ ((mode (SI))); static ui32 __FRAME_END__[1] __attribute__ ((used, section (".eh_frame"))) = { 0 }; -#endif diff --git a/elf/soinit.c b/elf/soinit.c index 29e4707..3656b1d 100644 --- a/elf/soinit.c +++ b/elf/soinit.c @@ -6,10 +6,6 @@ #include <libc-internal.h> #include <stdlib.h> -#ifdef HAVE_DWARF2_UNWIND_INFO_STATIC -# include <gccframe.h> -#endif - static void (*const __CTOR_LIST__[1]) (void) __attribute__ ((section (".ctors"))) = { (void (*) (void)) -1 }; @@ -24,21 +20,9 @@ run_hooks (void (*const list[]) (void)) (**list) (); } -#ifdef HAVE_DWARF2_UNWIND_INFO static char __EH_FRAME_BEGIN__[] __attribute__ ((section (".eh_frame"))) = { }; -# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC -extern void __register_frame_info (const void *, struct object *); -extern void __register_frame_info_bases (const void *, struct object *, - void *, void *); -extern void __deregister_frame_info (const void *); -extern void __deregister_frame_info_bases (const void *); -# else -extern void __register_frame (const void *); -extern void __deregister_frame (const void *); -# endif -#endif /* This function will be called from _init in init-first.c. */ void @@ -46,33 +30,6 @@ __libc_global_ctors (void) { /* Call constructor functions. */ run_hooks (__CTOR_LIST__); - -#ifdef HAVE_DWARF2_UNWIND_INFO -# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC - { - static struct object ob; -# if defined CRT_GET_RFIB_TEXT || defined CRT_GET_RFIB_DATA - void *tbase, *dbase; - -# ifdef CRT_GET_RFIB_TEXT - CRT_GET_RFIB_TEXT (tbase); -# else - tbase = NULL; -# endif -# ifdef CRT_GET_RFIB_DATA - CRT_GET_RFIB_DATA (dbase); -# else - dbase = NULL; -# endif - __register_frame_info_bases (__EH_FRAME_BEGIN__, &ob, tbase, dbase); -# else - __register_frame_info (__EH_FRAME_BEGIN__, &ob); -# endif - } -# else - __register_frame (__EH_FRAME_BEGIN__); -# endif -#endif } @@ -83,17 +40,6 @@ __libc_fini (void) { /* Call destructor functions. */ run_hooks (__DTOR_LIST__); -#ifdef HAVE_DWARF2_UNWIND_INFO -# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC -# if defined CRT_GET_RFIB_TEXT || defined CRT_GET_RFIB_DATA - __deregister_frame_info_bases (__EH_FRAME_BEGIN__); -# else - __deregister_frame_info (__EH_FRAME_BEGIN__); -# endif -# else - __deregister_frame (__EH_FRAME_BEGIN__); -# endif -#endif } void (*_fini_ptr) (void) __attribute__ ((section (".fini_array"))) |