a6d80351b7
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 |
||
---|---|---|
.. | ||
alpha | ||
i386 | ||
sparc | ||
aoutos.h | ||
dbx.h | ||
dbxcoff.h | ||
dbxelf.h | ||
elfos.h | ||
float-i32.h | ||
float-i64.h | ||
float-i128.h | ||
float-i386.h | ||
float-m68k.h | ||
float-sh.h | ||
float-vax.h | ||
fp-bit.c | ||
freebsd.h | ||
gnu.h | ||
gofast.h | ||
interix.h | ||
libgloss.h | ||
linux-aout.h | ||
linux.h | ||
lynx-ng.h | ||
lynx.h | ||
netbsd.h | ||
nextstep21.h | ||
nextstep.c | ||
nextstep.h | ||
openbsd.h | ||
psos.h | ||
ptx4.h | ||
README | ||
svr3.h | ||
svr4.h | ||
t-freebsd | ||
t-gnu | ||
t-libc-ok | ||
t-linux-aout | ||
t-netbsd | ||
t-openbsd | ||
t-openbsd-thread | ||
t-rtems | ||
t-svr4 | ||
tm-dwarf2.h | ||
x-interix | ||
x-linux | ||
x-linux-aout | ||
x-lynx | ||
x-netbsd | ||
x-svr4 | ||
xm-alloca.h | ||
xm-freebsd.h | ||
xm-gnu.h | ||
xm-interix.h | ||
xm-linux.h | ||
xm-lynx.h | ||
xm-netbsd.h | ||
xm-openbsd.h | ||
xm-siglist.h | ||
xm-std32.h | ||
xm-svr3.h | ||
xm-svr4.h |
This directory contains machine-specific files for the GNU C compiler. It has a subdirectory for each basic CPU type. The only files in this directory itself are some .h files that pertain to particular operating systems and are used for more than one CPU type.