[uClibc-cvs] svn commit: trunk/buildroot/toolchain/gcc/3.4.0

andersen at uclibc.org andersen at uclibc.org
Wed Mar 2 12:54:48 UTC 2005


Author: andersen
Date: 2005-03-02 05:54:47 -0700 (Wed, 02 Mar 2005)
New Revision: 9961

Log:
gcc 3.4.0 also needs to not emit embedded pic relocs for mips


Added:
   trunk/buildroot/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch


Changeset:
Added: trunk/buildroot/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch
===================================================================
--- trunk/buildroot/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch	2005-03-02 12:33:58 UTC (rev 9960)
+++ trunk/buildroot/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch	2005-03-02 12:54:47 UTC (rev 9961)
@@ -0,0 +1,83 @@
+From: cgd at broadcom dot com
+To: gcc-patches at gcc dot gnu dot org
+Cc: mark at codesourcery dot com
+Date: 13 Jun 2004 22:51:30 -0700
+Subject: [trunk + 3.4-branch RFA] don't use empic relocs for mips-linuxeh
+
+This patch changes mips-linux to avoid using embedded-pic relocs for
+its eh data.  (Support for generating these for new code is removed in
+current binutils srcs.)
+
+Relating to this, previously, mips-linux and mips64-linux would use
+different representations for their EH data (even for mips64-linux o32
+abi), due to the mips64-linux n32/64 BFDs not supporting the
+embedded-pic relocs.  This was a bug.
+
+For more explanation, see the thread of the URL quoted in the comment
+in linux.h.
+
+
+Tested the same w/ sources of about a week ago for c/c++ for
+mips-linux (native) before/after.  Also verified .o compatibility
+before/after just to be sure.
+
+I'd like this approved for the branch as well, so 3.4.1 will work
+nicely w/ the next major binutils release.
+
+
+thanks,
+
+chris
+
+2004-06-13  Chris Demetriou  <cgd at broadcom.com>
+
+	* config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Redefine
+	to return DW_EH_PE_absptr.
+	* config/mips/linux64.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove.
+
+Index: config/mips/linux.h
+===================================================================
+RCS file: /cvs/gcc/gcc/gcc/config/mips/linux.h,v
+retrieving revision 1.77
+diff -u -p -r1.77 linux.h
+--- gcc/gcc/config/mips/linux.h	19 Feb 2004 22:07:51 -0000	1.77
++++ gcc/gcc/config/mips/linux.h	14 Jun 2004 05:49:51 -0000
+@@ -170,10 +170,11 @@ Boston, MA 02111-1307, USA.  */
+ #undef FUNCTION_NAME_ALREADY_DECLARED
+ #define FUNCTION_NAME_ALREADY_DECLARED 1
+ 
+-#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)       		\
+-  (flag_pic								\
+-    ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4\
+-   : DW_EH_PE_absptr)
++/* If possible, we should attempt to use GP-relative relocs for this
++   (see <a  href="http://sources.redhat.com/ml/binutils/2004-05/msg00227.html">http://sources.redhat.com/ml/binutils/2004-05/msg00227.html</a>).
++   However, until that is implement, this just uses standard, absolute
++   references.  */
++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)	DW_EH_PE_absptr
+ 
+ /* The glibc _mcount stub will save $v0 for us.  Don't mess with saving
+    it, since ASM_OUTPUT_REG_PUSH/ASM_OUTPUT_REG_POP do not work in the
+Index: config/mips/linux64.h
+===================================================================
+RCS file: /cvs/gcc/gcc/gcc/config/mips/linux64.h,v
+retrieving revision 1.7
+diff -u -p -r1.7 linux64.h
+--- gcc/gcc/config/mips/linux64.h	18 Feb 2004 15:05:10 -0000	1.7
++++ gcc/gcc/config/mips/linux64.h	14 Jun 2004 05:49:51 -0000
+@@ -81,14 +81,6 @@ Boston, MA 02111-1307, USA.  */
+    specification.  The SGI/MIPS ABI defines it to be the same as PTR_SIZE.  */
+ #define DWARF_OFFSET_SIZE PTR_SIZE
+ 
+-#undef ASM_PREFERRED_EH_DATA_FORMAT
+-#if 0  /* We can't use relative addressing modes on NEWABI :-(  */
+-#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)       		\
+-   (flag_pic								\
+-    ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_sdata4		\
+-    : DW_EH_PE_absptr)
+-#endif
+-
+ /* GNU/Linux doesn't use the same floating-point format that IRIX uses
+    for long double.  There's no need to override this here, since
+    ieee_quad_format is the default, but let's put this here to make
+




More information about the uClibc-cvs mailing list