dwarf2 unwind info check broken
Jakub Jelinek
jakub@redhat.com
Sun Mar 17 12:14:00 GMT 2002
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
More information about the Libc-hacker
mailing list