PATCH: The gcc v2/v3 frame unwinder for glibc.

H . J . Lu hjl@lucon.org
Mon Jul 9 11:02:00 GMT 2001


This patch puts the gcc v2/v3 frame unwinder in glibc. It is based
on the patched frame unwinders in gcc 2.9x and 3.0:

http://gcc.gnu.org/ml/gcc/2001-07/msg00577.html
http://gcc.gnu.org/ml/gcc/2001-07/msg00584.html
http://gcc.gnu.org/ml/gcc/2001-07/msg00622.html

I have built glibc with gcc 2.95, gcc 2.96 and gcc 3.0.1. They
seem to work fine with the C++ DSO compiled with gcc 2.96 against
glibc compiled with gcc 2.96:

# nm libbar.so | grep _frame
                 w __deregister_frame_info@@GLIBC_2.0
                 U __frame_state_for@@GLIBC_2.0
                 w __register_frame_info@@GLIBC_2.0

and the C++ DSO compiled with gcc 3.0.1 against glibc compiled with gcc
3.0.1:

# nm libbar.so | grep _frame
                 w __deregister_frame_info@@GLIBC_2.0
                 w __deregister_frame_info_bases@@GCC_3.0
                 w __register_frame_info@@GLIBC_2.0
                 w __register_frame_info_bases@@GCC_3.0


H.J.
----
2001-07-09  H.J. Lu  <hjl@gnu.org>

	* Versions.def (libc): Add GCC_3.0.

	* config.make.in (FRAME-UNWINDER-V2): New. Substitute by
	@libc_cv_frame_unwinder_v2@.
	
	* configure.in (libc_cv_frame_unwinder_v2): Set according to
	the gcc compiler version.
	* configure: Regenerated.

	* sysdeps/unix/sysv/linux/Versions (libc): Add _Unwind_Find_FDE,
	__register_frame_info_bases, __deregister_frame_info_bases and
	__register_frame_info_table_bases to version GCC_3.0.

	* sysdeps/generic/dwarf2.h: New file.
	* sysdeps/generic/frame-dwarf2.c: Likewise.
	* sysdeps/generic/frame.c: Likewise.
	* sysdeps/generic/unwind-dw2-fde.c: Likewise.
	* sysdeps/generic/unwind-dw2-fde.h: Likewise.
	* sysdeps/generic/unwind-dw2.c: Likewise.
	* sysdeps/generic/unwind-pe.h: Likewise.
	* sysdeps/generic/unwind.h: Likewise.
	* sysdeps/alpha/gccframe.h: Likewise.
	* sysdeps/arm/gccframe.h: Likewise.
	* sysdeps/i386/gccframe.h: Likewise.
	* sysdeps/m68k/gccframe.h: Likewise.
	* sysdeps/mips/gccframe.h: Likewise.
	* sysdeps/powerpc/gccframe.h: Likewise.
	* sysdeps/s390/s390-32/gccframe.h: Likewise.
	* sysdeps/sparc/gccframe.h: Likewise.

	* sysdeps/generic/gccframe.h: Updated.

	* sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Add
	$(FRAME-UNWINDER-V2), unwind-dw2 and unwind-dw2-fde for elf if
	$(build-shared) is yes.
	(shared-only-routines): Likewise.
	* sysdeps/unix/sysv/linux/arm/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/i386/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/m68k/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/mips/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/sparc/Makefile: Likewise.



More information about the Libc-alpha mailing list