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@broadcom.com>

	* config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Redefine
	to return DW_EH_PE_absptr.

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
