d40943f1a4
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
This directory contains the GNU Compiler Collection (GCC) version 2.95. It includes all of the support for compiling C, C++, Objective C, Fortran, Java, and Chill. The GNU Compiler Collection is free software. See the file COPYING for copying permission. See the file gcc.texi (together with other files that it includes) for installation and porting information. The file INSTALL contains a copy of the installation information, as plain ASCII. Installing this package will create various files in subdirectories of /usr/local/lib, which are passes used by the compiler and a library named libgcc.a. It will also create /usr/local/bin/gcc, which is the user-level command to do a compilation. See the Bugs chapter of the GCC Manual for how to report bugs usefully. An online readable version of the manual is in the files gcc.info*. The files pself.c and pself1.c are not part of GCC. They are programs that print themselves on standard output. They were written by Dario Dariol and Giovanni Cozzi, and are included for your hacking pleasure. Likewise pself2.c (Who is the author of that?) and pself3.c (by Vlad Taeerov and Rashit Fakhreyev).