freebsd-nq/contrib/gcc/config/alpha
David E. O'Brien a6d80351b7 Re-initialize gp after a jsr.
When rtld runs the .fini section in a shared lib (C++), the code in
question from .../contrib/gdb/config/alpha/crtbegin.asm first calls
__do_globals_dtors_aux and then __do_frame_takedown.  Unfortunately, the
value of gp after a jsr is undefined and in this case had changed from before
the call, probably as a result of calling code in some other shared library.
The normal calling convention for alpha is to re-initialize gp using
'ldgp gp,0(ra)' after a jsr instruction but in this case no such
re-initialization is done. This leads to a bogus value being read for the
address of __do_frame_takedown and a quick segfault.

Submitted by:   dfr
Obtained from:  GCC 3.0
2001-08-17 22:54:26 +00:00
..
alpha32.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
alpha-interix.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
alpha.c Merge gcc.2.95.3-test1 changes onto mainline 2001-01-03 17:17:01 +00:00
alpha.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
alpha.md Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
crtbegin.asm Re-initialize gp after a jsr. 2001-08-17 22:54:26 +00:00
crtend.asm Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
elf.h Merge gcc-2.95.3 changes onto mainline. Update FreeBSD changes to converge 2001-03-19 19:50:16 +00:00
freebsd.h Start using crt[in].o to adhear to the ELF ABI 2000-10-30 12:25:22 +00:00
lib1funcs.asm Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
linux-ecoff.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
linux-elf.h Enlist the FreeBSD-CURRENT users as testers of GCC 2.95.3 Release Candidate #1 2001-01-03 17:16:04 +00:00
linux.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
netbsd-elf.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
netbsd.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
openbsd.h Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
osf2or3.h Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
osf12.h Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
osf.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
t-crtbe Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
t-ieee Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
t-interix Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
t-vms Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
va_list.h Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
vms-tramp.asm Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
vms.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
vxworks.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
x-alpha Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
xm-alpha-interix.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
xm-alpha.h Virgin import of the GCC 2.95.1 compilers 1999-10-16 06:09:09 +00:00
xm-freebsd.h
xm-openbsd.h Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00
xm-vms.h Virgin import of gcc from EGCS 1.1.2 1999-08-26 09:30:50 +00:00