summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2005-01-15 03:05:28 +0000
committerMike Frysinger <vapier@gentoo.org>2005-01-15 03:05:28 +0000
commit728dcd0287c5f387e4b49619cd98e9ec027412ca (patch)
treecaffd770c1a522f98ae6780bd1e3e6be49b984ec /sys-devel
parentcleanup oldschool ebuild (diff)
downloadgentoo-2-728dcd0287c5f387e4b49619cd98e9ec027412ca.tar.gz
gentoo-2-728dcd0287c5f387e4b49619cd98e9ec027412ca.tar.bz2
gentoo-2-728dcd0287c5f387e4b49619cd98e9ec027412ca.zip
punt old gcc-2 patches
(Portage version: 2.0.51-r12)
Diffstat (limited to 'sys-devel')
-rw-r--r--sys-devel/gcc/files/2.95.3/gcc-2.95.3-alpha.diff427
-rw-r--r--sys-devel/gcc/files/2.95.3/gcc-2.95.3-new-atexit.diff397
2 files changed, 0 insertions, 824 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
deleted file mode 100644
index f97fb94b90e4..000000000000
--- a/sys-devel/gcc/files/2.95.3/gcc-2.95.3-alpha.diff
+++ /dev/null
@@ -1,427 +0,0 @@
-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
diff --git a/sys-devel/gcc/files/2.95.3/gcc-2.95.3-new-atexit.diff b/sys-devel/gcc/files/2.95.3/gcc-2.95.3-new-atexit.diff
deleted file mode 100644
index af4de7908197..000000000000
--- a/sys-devel/gcc/files/2.95.3/gcc-2.95.3-new-atexit.diff
+++ /dev/null
@@ -1,397 +0,0 @@
---- gcc-2.95.3-orig/gcc/c-common.c Tue Sep 7 03:11:16 1999
-+++ gcc-2.95.3/gcc/c-common.c Tue Aug 14 11:15:53 2001
-@@ -697,7 +697,23 @@
- if (exact_log2 (align) == -1)
- error ("requested alignment is not a power of 2");
- else if (is_type)
-- TYPE_ALIGN (type) = align;
-+ {
-+ /* If we have a TYPE_DECL, then copy the type, so that we
-+ don't accidentally modify a builtin type. See pushdecl. */
-+ if (decl && TREE_TYPE (decl) != error_mark_node
-+ && DECL_ORIGINAL_TYPE (decl) == NULL_TREE)
-+ {
-+ tree tt = TREE_TYPE (decl);
-+ DECL_ORIGINAL_TYPE (decl) = tt;
-+ tt = build_type_copy (tt);
-+ TYPE_NAME (tt) = decl;
-+ TREE_USED (tt) = TREE_USED (decl);
-+ TREE_TYPE (decl) = tt;
-+ type = tt;
-+ }
-+
-+ TYPE_ALIGN (type) = align;
-+ }
- else if (TREE_CODE (decl) != VAR_DECL
- && TREE_CODE (decl) != FIELD_DECL)
- error_with_decl (decl,
---- gcc-2.95.3-orig/gcc/config/alpha/crtbegin.asm Wed Dec 16 15:00:53 1998
-+++ gcc-2.95.3/gcc/config/alpha/crtbegin.asm Tue Aug 14 11:15:53 2001
-@@ -97,6 +97,31 @@
- # 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
---- gcc-2.95.3-orig/gcc/config/i386/i386.c Tue Sep 7 02:38:56 1999
-+++ gcc-2.95.3/gcc/config/i386/i386.c Tue Aug 14 11:17:15 2001
-@@ -291,7 +291,7 @@
-
- if (ix86_arch_string == 0)
- {
-- ix86_arch_string = PROCESSOR_PENTIUM_STRING;
-+ ix86_arch_string = PROCESSOR_DEFAULT_STRING;
- if (ix86_cpu_string == 0)
- ix86_cpu_string = PROCESSOR_DEFAULT_STRING;
- }
-@@ -308,7 +308,7 @@
- if (i == ptt_size)
- {
- error ("bad value (%s) for -march= switch", ix86_arch_string);
-- ix86_arch_string = PROCESSOR_PENTIUM_STRING;
-+ ix86_arch_string = PROCESSOR_DEFAULT_STRING;
- ix86_arch = PROCESSOR_DEFAULT;
- }
-
---- gcc-2.95.3-orig/gcc/config/i386/linux.h Wed Apr 7 19:32:13 1999
-+++ gcc-2.95.3/gcc/config/i386/linux.h Tue Aug 14 11:15:53 2001
-@@ -234,3 +234,21 @@
- } \
- } while (0)
- #endif
-+
-+#if defined(__PIC__) && defined (USE_GNULIBC_1)
-+/* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr,
-+ __environ and atexit (). We have to make sure they are in the .dynsym
-+ section. We accomplish it by making a dummy call here. This
-+ code is never reached. */
-+
-+#define CRT_END_INIT_DUMMY \
-+ do \
-+ { \
-+ extern void *___brk_addr; \
-+ extern char **__environ; \
-+ \
-+ ___brk_addr = __environ; \
-+ atexit (0); \
-+ } \
-+ while (0)
-+#endif
---- gcc-2.95.3-orig/gcc/config/rs6000/rs6000.md Thu Jan 25 08:03:35 2001
-+++ gcc-2.95.3/gcc/config/rs6000/rs6000.md Tue Aug 14 11:15:53 2001
-@@ -6184,7 +6184,9 @@
- reg. So expand it. */
- if (GET_CODE (operands[0]) == SUBREG
- && GET_CODE (SUBREG_REG (operands[0])) == REG
-- && REGNO (SUBREG_REG (operands[0])) < FIRST_PSEUDO_REGISTER)
-+ && REGNO (SUBREG_REG (operands[0])) < FIRST_PSEUDO_REGISTER
-+ && (! REG_FUNCTION_VALUE_P (SUBREG_REG (operands[0]))
-+ || ! rtx_equal_function_value_matters))
- operands[0] = alter_subreg (operands[0]);
- if (GET_CODE (operands[1]) == SUBREG
- && GET_CODE (SUBREG_REG (operands[1])) == REG
---- gcc-2.95.3-orig/gcc/crtstuff.c Mon Mar 22 18:43:51 1999
-+++ gcc-2.95.3/gcc/crtstuff.c Tue Aug 14 11:15:53 2001
-@@ -55,6 +55,7 @@
- #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,6 +135,29 @@
- #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. */
-+#define HAVE_GAS_HIDDEN 1
-+#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. */
-
-@@ -165,6 +189,11 @@
- if (completed)
- return;
-
-+#ifdef CRTSTUFFS_O
-+ if (__cxa_finalize)
-+ __cxa_finalize (__dso_handle);
-+#endif
-+
- while (*p)
- {
- p++;
-@@ -379,20 +408,8 @@
- FORCE_INIT_SECTION_ALIGN;
- #endif
- asm (TEXT_SECTION_ASM_OP);
--
--/* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr,
-- __environ and atexit (). We have to make sure they are in the .dynsym
-- section. We accomplish it by making a dummy call here. This
-- code is never reached. */
--
--#if defined(__linux__) && defined(__PIC__) && defined(__i386__)
-- {
-- extern void *___brk_addr;
-- extern char **__environ;
--
-- ___brk_addr = __environ;
-- atexit ();
-- }
-+#ifdef CRT_END_INIT_DUMMY
-+ CRT_END_INIT_DUMMY;
- #endif
- }
-
---- gcc-2.95.3-orig/gcc/cse.c Thu Jan 25 08:03:03 2001
-+++ gcc-2.95.3/gcc/cse.c Tue Aug 14 11:15:53 2001
-@@ -695,8 +695,6 @@
- static struct cse_reg_info* get_cse_reg_info PROTO((int));
- static void free_cse_reg_info PROTO((splay_tree_value));
- static void flush_hash_table PROTO((void));
--
--extern int rtx_equal_function_value_matters;
-
- /* Dump the expressions in the equivalence class indicated by CLASSP.
- This function is used only for debugging. */
---- gcc-2.95.3-orig/gcc/function.c Thu Jan 25 08:03:15 2001
-+++ gcc-2.95.3/gcc/function.c Tue Aug 14 11:15:53 2001
-@@ -5292,7 +5292,18 @@
- - offset_ptr->constant);
- }
- #else /* !ARGS_GROW_DOWNWARD */
-- pad_to_arg_alignment (initial_offset_ptr, boundary);
-+ if (!in_regs
-+#ifdef REG_PARM_STACK_SPACE
-+ || REG_PARM_STACK_SPACE (fndecl) > 0
-+#else
-+ /* For the gcc-2_95-branch we want to make sure not to break something
-+ on platforms which pass argument in registers but don't define
-+ REG_PARM_STACK_SPACE. So we force the original behaviour here. */
-+ || 1
-+#endif
-+ )
-+ pad_to_arg_alignment (initial_offset_ptr, boundary);
-+
- *offset_ptr = *initial_offset_ptr;
-
- #ifdef PUSH_ROUNDING
---- gcc-2.95.3-orig/gcc/rtl.h Thu Jan 25 08:03:22 2001
-+++ gcc-2.95.3/gcc/rtl.h Tue Aug 14 11:16:20 2001
-@@ -168,7 +168,8 @@
- either changing how we compute the frame address or saving and
- restoring registers in the prologue and epilogue.
- 1 in a MEM if the MEM refers to a scalar, rather than a member of
-- an aggregate. */
-+ an aggregate.
-+ 1 in a SYMBOL_REF if the symbol is weak. */
- unsigned frame_related : 1;
- /* The first element of the operands of this rtx.
- The number of operands and their types are controlled
-@@ -661,6 +662,9 @@
- /* 1 means a SYMBOL_REF has been the library function in emit_library_call. */
- #define SYMBOL_REF_USED(RTX) ((RTX)->used)
-
-+/* 1 means a SYMBOL_REF is weak. */
-+#define SYMBOL_REF_WEAK(RTX) ((RTX)->frame_related)
-+
- /* For an INLINE_HEADER rtx, FIRST_FUNCTION_INSN is the first insn
- of the function that is not involved in copying parameters to
- pseudo-registers. FIRST_PARM_INSN is the very first insn of
-@@ -888,6 +892,12 @@
- /* For a NOTE_INSN_LIVE note, the original basic block number. */
- #define RANGE_LIVE_ORIG_BLOCK(INSN) (XINT (INSN, 1))
-
-+/* Nonzero if we need to distinguish between the return value of this function
-+ and the return value of a function called by this function. This helps
-+ integrate.c.
-+ This is 1 until after the rtl generation pass. */
-+extern int rtx_equal_function_value_matters;
-+
- /* Generally useful functions. */
-
- /* The following functions accept a wide integer argument. Rather than
---- gcc-2.95.3-orig/gcc/rtlanal.c Thu Jan 25 08:03:22 2001
-+++ gcc-2.95.3/gcc/rtlanal.c Tue Aug 14 11:16:20 2001
-@@ -136,11 +136,9 @@
- switch (code)
- {
- case SYMBOL_REF:
-+ return SYMBOL_REF_WEAK (x);
-+
- case LABEL_REF:
-- /* SYMBOL_REF is problematic due to the possible presence of
-- a #pragma weak, but to say that loads from symbols can trap is
-- *very* costly. It's not at all clear what's best here. For
-- now, we ignore the impact of #pragma weak. */
- return 0;
-
- case REG:
---- gcc-2.95.3-orig/gcc/stor-layout.c Thu Mar 11 07:56:20 1999
-+++ gcc-2.95.3/gcc/stor-layout.c Tue Aug 14 11:15:53 2001
-@@ -264,8 +264,8 @@
- if (spec_size == 0 && DECL_NAME (decl) != 0)
- abort ();
-
-- /* Size is specified number of bits. */
-- DECL_SIZE (decl) = size_int (spec_size);
-+ /* Size is specified in number of bits. */
-+ DECL_SIZE (decl) = bitsize_int (spec_size, 0);
- }
- /* Force alignment required for the data type.
- But if the decl itself wants greater alignment, don't override that.
-@@ -301,7 +301,7 @@
- DECL_ALIGN (decl) = MAX ((unsigned) GET_MODE_ALIGNMENT (xmode),
- DECL_ALIGN (decl));
- DECL_MODE (decl) = xmode;
-- DECL_SIZE (decl) = size_int (GET_MODE_BITSIZE (xmode));
-+ DECL_SIZE (decl) = bitsize_int (GET_MODE_BITSIZE (xmode), 0);
- /* This no longer needs to be accessed as a bit field. */
- DECL_BIT_FIELD (decl) = 0;
- }
-@@ -520,7 +520,7 @@
- DECL_FIELD_BITPOS (field) = var_size;
- else
- {
-- DECL_FIELD_BITPOS (field) = size_int (const_size);
-+ DECL_FIELD_BITPOS (field) = bitsize_int (const_size, 0L);
-
- /* If this field ended up more aligned than we thought it
- would be (we approximate this by seeing if its position
-@@ -562,7 +562,7 @@
-
- if (var_size == 0)
- {
-- TYPE_SIZE (rec) = size_int (const_size);
-+ TYPE_SIZE (rec) = bitsize_int (const_size, 0L);
- }
- else
- {
-@@ -610,7 +610,7 @@
- /* The size of the union, based on the fields scanned so far,
- is max (CONST_SIZE, VAR_SIZE).
- VAR_SIZE may be null; then CONST_SIZE by itself is the size. */
-- register int const_size = 0;
-+ register HOST_WIDE_INT const_size = 0;
- register tree var_size = 0;
-
- #ifdef STRUCTURE_SIZE_BOUNDARY
-@@ -627,6 +627,8 @@
-
- for (field = TYPE_FIELDS (rec); field; field = TREE_CHAIN (field))
- {
-+ tree dsize;
-+
- /* Enums which are local to this class need not be laid out. */
- if (TREE_CODE (field) == CONST_DECL || TREE_CODE (field) == TYPE_DECL)
- continue;
-@@ -645,19 +647,22 @@
- union_align = MAX (union_align, TYPE_ALIGN (TREE_TYPE (field)));
- #endif
-
-+ dsize = DECL_SIZE (field);
- if (TREE_CODE (rec) == UNION_TYPE)
- {
- /* Set union_size to max (decl_size, union_size).
- There are more and less general ways to do this.
- Use only CONST_SIZE unless forced to use VAR_SIZE. */
-
-- if (TREE_CODE (DECL_SIZE (field)) == INTEGER_CST)
-+ if (TREE_CODE (dsize) == INTEGER_CST
-+ && ! TREE_CONSTANT_OVERFLOW (dsize)
-+ && TREE_INT_CST_HIGH (dsize) == 0)
- const_size
-- = MAX (const_size, TREE_INT_CST_LOW (DECL_SIZE (field)));
-+ = MAX (const_size, TREE_INT_CST_LOW (dsize));
- else if (var_size == 0)
-- var_size = DECL_SIZE (field);
-+ var_size = dsize;
- else
-- var_size = size_binop (MAX_EXPR, var_size, DECL_SIZE (field));
-+ var_size = size_binop (MAX_EXPR, var_size, dsize);
- }
- else if (TREE_CODE (rec) == QUAL_UNION_TYPE)
- var_size = fold (build (COND_EXPR, sizetype, DECL_QUALIFIER (field),
---- gcc-2.95.3-orig/gcc/toplev.c Thu Jan 25 08:03:23 2001
-+++ gcc-2.95.3/gcc/toplev.c Tue Aug 14 11:15:53 2001
-@@ -137,8 +137,6 @@
- #define DIR_SEPARATOR '/'
- #endif
-
--extern int rtx_equal_function_value_matters;
--
- #if ! (defined (VMS) || defined (OS2))
- extern char **environ;
- #endif
---- gcc-2.95.3-orig/gcc/varasm.c Mon Feb 19 08:02:02 2001
-+++ gcc-2.95.3/gcc/varasm.c Tue Aug 14 11:16:20 2001
-@@ -723,6 +723,8 @@
- Also handle vars declared register invalidly. */
- if (DECL_RTL (decl) == 0)
- {
-+ rtx x;
-+
- /* Can't use just the variable's own name for a variable
- whose scope is less than the whole file.
- Concatenate a distinguishing number. */
-@@ -752,8 +754,10 @@
- new_name, strlen (new_name));
- }
-
-- DECL_RTL (decl) = gen_rtx_MEM (DECL_MODE (decl),
-- gen_rtx_SYMBOL_REF (Pmode, name));
-+ x = gen_rtx_SYMBOL_REF (Pmode, name);
-+ SYMBOL_REF_WEAK (x) = DECL_WEAK (decl);
-+ DECL_RTL (decl) = gen_rtx_MEM (DECL_MODE (decl), x);
-+
- MEM_ALIAS_SET (DECL_RTL (decl)) = get_alias_set (decl);
-
- /* If this variable is to be treated as volatile, show its