From 910033a07677949c4e92a8848f5f15b8cde63a0b Mon Sep 17 00:00:00 2001 From: "David E. O'Brien" Date: Wed, 22 Mar 2000 19:10:42 +0000 Subject: Port of the GCC 2.7.2.3 that was the base compiler in FreeBSD 2.2.x thru 3.x. --- lang/gcc27/files/patch-i386.h | 53 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lang/gcc27/files/patch-i386.h (limited to 'lang/gcc27/files/patch-i386.h') 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) -- cgit v1.2.3