summaryrefslogtreecommitdiff
path: root/lang/gcc27/files/patch-i386.h
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>2000-03-22 19:10:42 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>2000-03-22 19:10:42 +0000
commit910033a07677949c4e92a8848f5f15b8cde63a0b (patch)
tree45b411beaffa330eddbe13d6e002c0fb1afe6ec9 /lang/gcc27/files/patch-i386.h
parentFix the URL in one of the MASTER_SITES. (diff)
Port of the GCC 2.7.2.3 that was the base compiler in FreeBSD 2.2.x thru 3.x.
Notes
Notes: svn path=/head/; revision=26961
Diffstat (limited to 'lang/gcc27/files/patch-i386.h')
-rw-r--r--lang/gcc27/files/patch-i386.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/lang/gcc27/files/patch-i386.h b/lang/gcc27/files/patch-i386.h
new file mode 100644
index 000000000000..258b948c2d41
--- /dev/null
+++ b/lang/gcc27/files/patch-i386.h
@@ -0,0 +1,53 @@
+--- config/i386/i386.h.orig Fri Sep 22 15:42:57 1995
++++ config/i386/i386.h Mon Mar 20 13:29:12 2000
+@@ -1286,6 +1286,22 @@
+ } \
+ while (0)
+
++/* Define this macro if a SYMBOL_REF representing a non-global
++ address must be marked specially. This is called for
++ compiler-generated local symbols, such as "__EXCEPTION_TABLE__".
++
++ On i386, if using PIC, we use this to set the rtx's
++ SYMBOL_REF_FLAG, so that we may access it directly as
++ an offset from the GOT register. */
++
++#define MARK_LOCAL_ADDRESS(X) \
++do \
++ { \
++ if (flag_pic && GET_CODE (X) == SYMBOL_REF) \
++ SYMBOL_REF_FLAG (X) = 1; \
++ } \
++while (0)
++
+ /* Initialize data used by insn expanders. This is called from
+ init_emit, once for each function, before code is generated.
+ For 386, clear stack slot assignments remembered from previous
+@@ -1621,7 +1637,7 @@
+ do { long l[2]; \
+ REAL_VALUE_TO_TARGET_DOUBLE (VALUE, l); \
+ if (sizeof (int) == sizeof (long)) \
+- fprintf (FILE, "%s 0x%x,0x%x\n", ASM_LONG, l[0], l[1]); \
++ fprintf (FILE, "%s 0x%x,0x%x\n", ASM_LONG, (int) l[0], (int) l[1]); \
+ else \
+ fprintf (FILE, "%s 0x%lx,0x%lx\n", ASM_LONG, l[0], l[1]); \
+ } while (0)
+@@ -1633,7 +1649,8 @@
+ do { long l[3]; \
+ REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l); \
+ if (sizeof (int) == sizeof (long)) \
+- fprintf (FILE, "%s 0x%x,0x%x,0x%x\n", ASM_LONG, l[0], l[1], l[2]); \
++ fprintf (FILE, "%s 0x%x,0x%x,0x%x\n", ASM_LONG, \
++ (int) l[0], (int) l[1], (int) l[2]); \
+ else \
+ fprintf (FILE, "%s 0x%lx,0x%lx,0x%lx\n", ASM_LONG, l[0], l[1], l[2]); \
+ } while (0)
+@@ -1644,7 +1661,7 @@
+ do { long l; \
+ REAL_VALUE_TO_TARGET_SINGLE (VALUE, l); \
+ if (sizeof (int) == sizeof (long)) \
+- fprintf ((FILE), "%s 0x%x\n", ASM_LONG, l); \
++ fprintf ((FILE), "%s 0x%x\n", ASM_LONG, (int) l); \
+ else \
+ fprintf ((FILE), "%s 0x%lx\n", ASM_LONG, l); \
+ } while (0)