diff options
Diffstat (limited to 'sys-devel/gcc/files/2.95.3/gcc-2.95.3-alpha.diff')
-rw-r--r-- | sys-devel/gcc/files/2.95.3/gcc-2.95.3-alpha.diff | 427 |
1 files changed, 427 insertions, 0 deletions
diff --git a/sys-devel/gcc/files/2.95.3/gcc-2.95.3-alpha.diff b/sys-devel/gcc/files/2.95.3/gcc-2.95.3-alpha.diff new file mode 100644 index 000000000000..f97fb94b90e4 --- /dev/null +++ b/sys-devel/gcc/files/2.95.3/gcc-2.95.3-alpha.diff @@ -0,0 +1,427 @@ +2000-04-29 Richard Henderson <rth@cygnus.com> + + * config/alpha/crtbegin.asm: Use C comments instead of #. + Mark __dso_handle hidden. + +2000-02-16 Richard Henderson <rth@cygnus.com> + + * configure.in (alpha-linux*, alpha-netbsd) [extra_parts]: + Add crtbeginS.o and crtendS.o. + * alpha/elf.h (STARTFILE_SPEC): Use crtbeginS.o. + (ENDFILE_SPEC): Use crtendS.o. + * alpha/t-crtbe (crtbeginS.o, crtendS.o): New targets. + + * alpha/crtbegin.asm (__do_frame_takedown): Merge into ... + (__do_global_dtors_aux): ... here. Call __cxa_finalize if + shared and present. + (__dso_handle): New variable. + +2000-04-04 Ulrich Drepper <drepper@cygnus.com> + + * acconfig.h: Add HAVE_GAS_HIDDEN. + * config.in: Regenerated. + * configure.in: Add test for .hidden pseudo-op in gas. + * configure: Regenerated. + * crtstuff.c: Include auto-host.h. + Emit additional .hidden pseudo-op for __dso_handle if the + assembler knows about it. + +--- gcc-2.95.x/gcc/config/alpha/crtbegin.asm.jj Wed Dec 16 22:00:53 1998 ++++ gcc-2.95.x/gcc/config/alpha/crtbegin.asm Mon Aug 13 11:16:43 2001 +@@ -1,42 +1,46 @@ +- # Copyright (C) 1996, 1998 Free Software Foundation, Inc. +- # Contributed by Richard Henderson (rth@tamu.edu) +- # +- # This file is free software; you can redistribute it and/or modify it +- # under the terms of the GNU General Public License as published by the +- # Free Software Foundation; either version 2, or (at your option) any +- # later version. +- # +- # In addition to the permissions in the GNU General Public License, the +- # Free Software Foundation gives you unlimited permission to link the +- # compiled version of this file with other programs, and to distribute +- # those programs without any restriction coming from the use of this +- # file. (The General Public License restrictions do apply in other +- # respects; for example, they cover modification of the file, and +- # distribution when not linked into another program.) +- # +- # This file is distributed in the hope that it will be useful, but +- # WITHOUT ANY WARRANTY; without even the implied warranty of +- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- # General Public License for more details. +- # +- # You should have received a copy of the GNU General Public License +- # along with this program; see the file COPYING. If not, write to +- # the Free Software Foundation, 59 Temple Place - Suite 330, +- # Boston, MA 02111-1307, USA. +- # +- # As a special exception, if you link this library with files +- # compiled with GCC to produce an executable, this does not cause +- # the resulting executable to be covered by the GNU General Public License. +- # This exception does not however invalidate any other reasons why +- # the executable file might be covered by the GNU General Public License. +- +- # +- # Heads of the constructor/destructor lists. +- # +- +- # The __*TOR_LIST__ symbols are not global because when this file is used +- # in a shared library, we do not want the symbol to fall over to the +- # application's lists. ++/* Copyright (C) 1996, 1998 Free Software Foundation, Inc. ++ * Contributed by Richard Henderson (rth@tamu.edu) ++ * ++ * This file is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the ++ * Free Software Foundation; either version 2, or (at your option) any ++ * later version. ++ * ++ * In addition to the permissions in the GNU General Public License, the ++ * Free Software Foundation gives you unlimited permission to link the ++ * compiled version of this file with other programs, and to distribute ++ * those programs without any restriction coming from the use of this ++ * file. (The General Public License restrictions do apply in other ++ * respects; for example, they cover modification of the file, and ++ * distribution when not linked into another program.) ++ * ++ * This file is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; see the file COPYING. If not, write to ++ * the Free Software Foundation, 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ * As a special exception, if you link this library with files ++ * compiled with GCC to produce an executable, this does not cause ++ * the resulting executable to be covered by the GNU General Public License. ++ * This exception does not however invalidate any other reasons why ++ * the executable file might be covered by the GNU General Public License. ++ */ ++ ++ ++ ++/* ++ * Heads of the constructor/destructor lists. ++ */ ++ ++/* The __*TOR_LIST__ symbols are not global because when this file is used ++ * in a shared library, we do not want the symbol to fall over to the ++ * application's lists. ++ */ + + .section .ctors,"aw" + +@@ -53,34 +57,34 @@ __DTOR_LIST__: + .section .eh_frame,"aw" + __EH_FRAME_BEGIN__: + +- # +- # Fragment of the ELF _fini routine that invokes our dtor cleanup. +- # ++/* ++ * Fragment of the ELF _fini routine that invokes our dtor cleanup. ++ */ + + .section .fini,"ax" + +- # Since the bits of the _fini function are spread across many +- # object files, each potentially with its own GP, we must +- # assume we need to load ours. Further, our .fini section +- # can easily be more than 4MB away from our .text bits so we +- # can't use bsr. ++ /* Since the bits of the _fini function are spread across many ++ object files, each potentially with its own GP, we must ++ assume we need to load ours. Further, our .fini section ++ can easily be more than 4MB away from our .text bits so we ++ can't use bsr. */ + + br $29,1f + 1: ldgp $29,0($29) + jsr $26,__do_global_dtors_aux + +- # Ideally this call would go in crtend.o, except that we can't +- # get hold of __EH_FRAME_BEGIN__ there. ++ /* Ideally this call would go in crtend.o, except that we can't ++ get hold of __EH_FRAME_BEGIN__ there */ + + jsr $26,__do_frame_takedown + +- # Must match the alignment we got from crti.o else we get +- # zero-filled holes in our _fini function and then SIGILL. ++ /* Must match the alignment we got from crti.o else we get ++ zero-filled holes in our _fini function and then SIGILL. */ + .align 3 + +- # +- # Fragment of the ELF _init routine that sets up the frame info. +- # ++/* ++ * Fragment of the ELF _init routine that sets up the frame info. ++ */ + + .section .init,"ax" + br $29,1f +@@ -88,32 +92,68 @@ __EH_FRAME_BEGIN__: + jsr $26,__do_frame_setup + .align 3 + +- # +- # Invoke our destructors in order. +- # ++/* ++ * Invoke our destructors in order. ++ */ + + .data + +- # Support recursive calls to exit. ++/* Support recursive calls to exit. */ + $ptr: .quad __DTOR_LIST__ + ++/* A globally unique widget for c++ local destructors to hang off. ++ ++ This has a unique value in every dso; in the main program its ++ value is zero. The object should be protected. This means the ++ instance in any dso or the main program is not used in any other ++ dso. The dynamic linker takes care of this. */ ++ ++ .global __dso_handle ++ .type __dso_handle,@object ++ .size __dso_handle,8 ++#ifdef SHARED ++.section .data ++ .align 3 ++__dso_handle: ++ .quad __dso_handle ++#else ++.section .bss ++ .align 3 ++__dso_handle: ++ .zero 8 ++#endif ++#ifdef HAVE_GAS_HIDDEN ++ .hidden __dso_handle ++#endif ++ + .text + + .align 3 + .ent __do_global_dtors_aux + + __do_global_dtors_aux: ++ ldgp $29,0($27) + lda $30,-16($30) + .frame $30,16,$26,0 + stq $9,8($30) + stq $26,0($30) + .mask 0x4000200,-16 +- .prologue 0 ++ .prologue 1 + ++#ifdef SHARED ++ /* Do c++ local destructors. */ ++ lda $1,__cxa_finalize ++ beq $1,2f ++ lda $16,__dso_handle ++ jsr $26,__cxa_finalize ++ ldgp $29,0($26) ++2: ++#endif + lda $9,$ptr + br 1f + 0: stq $1,0($9) + jsr $26,($27) ++ ldgp $29,0($26) + 1: ldq $1,0($9) + ldq $27,8($1) + addq $1,8,$1 +@@ -126,11 +166,11 @@ __do_global_dtors_aux: + + .end __do_global_dtors_aux + +- # +- # Install our frame info. +- # ++/* ++ * Install our frame info. ++ */ + +- # ??? How can we rationally keep this size correct? ++/* ??? How can we rationally keep this size correct? */ + + .section .bss + .type $object,@object +@@ -163,9 +203,9 @@ __do_frame_setup: + + .end __do_frame_setup + +- # +- # Remove our frame info. +- # ++/* ++ * Remove our frame info. ++ */ + + .align 3 + .ent __do_frame_takedown +@@ -190,3 +230,6 @@ __do_frame_takedown: + + .weak __register_frame_info + .weak __deregister_frame_info ++#ifdef SHARED ++.weak __cxa_finalize ++#endif +--- gcc-2.95.x/gcc/config/alpha/t-crtbe.jj Wed Dec 16 22:01:05 1998 ++++ gcc-2.95.x/gcc/config/alpha/t-crtbe Mon Aug 13 11:08:08 2001 +@@ -3,7 +3,13 @@ T = disable + + # Assemble startup files. + crtbegin.o: $(srcdir)/config/alpha/crtbegin.asm $(GCC_PASSES) +- $(GCC_FOR_TARGET) -c -o crtbegin.o -x assembler $(srcdir)/config/alpha/crtbegin.asm ++ $(GCC_FOR_TARGET) -c -o crtbegin.o -x assembler-with-cpp $(srcdir)/config/alpha/crtbegin.asm + + crtend.o: $(srcdir)/config/alpha/crtend.asm $(GCC_PASSES) +- $(GCC_FOR_TARGET) -c -o crtend.o -x assembler $(srcdir)/config/alpha/crtend.asm ++ $(GCC_FOR_TARGET) -c -o crtend.o -x assembler $(srcdir)/config/alpha/crtend.asm ++ ++crtbeginS.o: $(srcdir)/config/alpha/crtbegin.asm $(GCC_PASSES) ++ $(GCC_FOR_TARGET) -DSHARED -c -o crtbeginS.o -x assembler-with-cpp -I. $(srcdir)/config/alpha/crtbegin.asm ++ ++crtendS.o: $(srcdir)/config/alpha/crtend.asm $(GCC_PASSES) ++ $(GCC_FOR_TARGET) -c -o crtendS.o -x assembler -I. $(srcdir)/config/alpha/crtend.asm +--- gcc-2.95.x/gcc/config/alpha/elf.h.jj Mon Jun 21 22:15:10 1999 ++++ gcc-2.95.x/gcc/config/alpha/elf.h Mon Aug 13 11:09:13 2001 +@@ -513,7 +513,7 @@ do { \ + #define STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\ +- crti.o%s crtbegin.o%s" ++ crti.o%s %{shared:crtbeginS.o%s}%{!shared:crtbegin.o%s}" + + /* Provide a ENDFILE_SPEC appropriate for ELF. Here we tack on the + magical crtend.o file which provides part of the support for +@@ -522,7 +522,7 @@ do { \ + + #undef ENDFILE_SPEC + #define ENDFILE_SPEC \ +- "crtend.o%s crtn.o%s" ++ "%{shared:crtendS.o%s}%{!shared:crtend.o%s} crtn.o%s" + + /* We support #pragma. */ + #define HANDLE_SYSV_PRAGMA +--- gcc-2.95.x/gcc/crtstuff.c 2001/04/03 10:34:32 1.18.4.1 ++++ gcc-2.95.x/gcc/crtstuff.c 2001/08/09 06:56:33 +@@ -55,6 +55,7 @@ Boston, MA 02111-1307, USA. */ + #include "defaults.h" + #include <stddef.h> + #include "frame.h" ++#include "auto-host.h" + + /* We do not want to add the weak attribute to the declarations of these + routines in frame.h because that will cause the definition of these +@@ -134,7 +135,29 @@ typedef void (*func_ptr) (void); + #ifdef INIT_SECTION_ASM_OP + + #ifdef OBJECT_FORMAT_ELF ++/* Declare the __dso_handle variable. It should have a unique value ++ in every shared-object; in a main program its value is zero. The ++ object should in any case be protected. This means the instance ++ in one DSO or the main program is not used in another object. The ++ dynamic linker takes care of this. */ ++ ++/* XXX Ideally the following should be implemented using ++ __attribute__ ((__visibility__ ("hidden"))) ++ but the __attribute__ support is not yet there. */ ++#ifdef HAVE_GAS_HIDDEN ++asm (".hidden\t__dso_handle"); ++#endif ++ ++#ifdef CRTSTUFFS_O ++void *__dso_handle = &__dso_handle; ++#else ++void *__dso_handle = 0; ++#endif + ++/* The __cxa_finalize function may not be available so we use only a ++ weak declaration. */ ++extern void __cxa_finalize (void *) TARGET_ATTRIBUTE_WEAK; ++ + /* Run all the global destructors on exit from the program. */ + + /* Some systems place the number of pointers in the first word of the +@@ -164,6 +187,11 @@ __do_global_dtors_aux (void) + + if (completed) + return; ++ ++#ifdef CRTSTUFFS_O ++ if (__cxa_finalize) ++ __cxa_finalize (__dso_handle); ++#endif + + while (*p) + { +--- gcc-2.95.x/gcc/configure.in.jj Wed Oct 13 09:58:02 1999 ++++ gcc-2.95.x/gcc/configure.in Mon Aug 13 11:11:39 2001 +@@ -608,7 +608,7 @@ changequote([,])dnl + tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h" + target_cpu_default="MASK_GAS" + tmake_file="t-linux t-linux-gnulibc1 alpha/t-linux alpha/t-crtbe alpha/t-ieee" +- extra_parts="crtbegin.o crtend.o" ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + xmake_file=none + gas=yes gnu_ld=yes + if test x$enable_threads = xyes; then +@@ -619,7 +619,7 @@ changequote([,])dnl + tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h" + target_cpu_default="MASK_GAS" + tmake_file="t-linux alpha/t-linux alpha/t-crtbe alpha/t-ieee" +- extra_parts="crtbegin.o crtend.o" ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + xmake_file=none + gas=yes gnu_ld=yes + if test x$enable_threads = xyes; then +@@ -630,7 +630,7 @@ changequote([,])dnl + tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsd-elf.h" + target_cpu_default="MASK_GAS" + tmake_file="alpha/t-crtbe alpha/t-ieee" +- extra_parts="crtbegin.o crtend.o" ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + xmake_file=none + gas=yes gnu_ld=yes + ;; +@@ -4052,6 +4052,21 @@ EOF + rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 + fi + AC_MSG_RESULT($gcc_cv_as_subsections) ++ ++AC_MSG_CHECKING(assembler hidden support) ++gcc_cv_as_hidden= ++if test x$gcc_cv_as != x; then ++ # Check if we have .hidden ++ echo " .hidden foobar" > conftest.s ++ echo "foobar:" >> conftest.s ++ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then ++ AC_DEFINE(HAVE_GAS_HIDDEN, 1, ++ [Define if your assembler supports .hidden.]) ++ gcc_cv_as_hidden="yes" ++ fi ++ rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 ++fi ++AC_MSG_RESULT($gcc_cv_as_hidden) + + AC_MSG_CHECKING(assembler instructions) + gcc_cv_as_instructions= +--- gcc-2.95.x/gcc/config.in.jj Mon Oct 25 10:02:08 1999 ++++ gcc-2.95.x/gcc/config.in Wed Jun 13 12:45:56 2001 +2 the beginning of your section */ + #undef HAVE_GAS_SUBSECTION_ORDERING + ++/* Define if your assembler supports .hidden. */ ++#undef HAVE_GAS_HIDDEN ++ + /* Define if your assembler uses the old HImode fild and fist notation. */ + #undef HAVE_GAS_FILDS_FISTS |