aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2010-09-28 08:20:16 -0700
committerRichard Henderson <rth@gcc.gnu.org>2010-09-28 08:20:16 -0700
commit4d508d590e0f6c6c0d7a2890d519a029f4282c6b (patch)
tree374917fa27d8bf13bbf36e070f81e00a01218d45 /gcc
parente660c8f2081b9d2faaf33e01a057eb5454d9c86d (diff)
downloadgcc-4d508d590e0f6c6c0d7a2890d519a029f4282c6b.zip
gcc-4d508d590e0f6c6c0d7a2890d519a029f4282c6b.tar.gz
gcc-4d508d590e0f6c6c0d7a2890d519a029f4282c6b.tar.bz2
cygming.h (ASM_OUTPUT_DWARF_OFFSET): Output 8 bytes when 8 bytes are requested.
* config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Output 8 bytes when 8 bytes are requested. From-SVN: r164684
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/cygming.h24
2 files changed, 24 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 45d78a9..157ce82 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-28 Richard Henderson <rth@redhat.com>
+
+ * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Output 8 bytes
+ when 8 bytes are requested.
+
2010-09-28 Tristan Gingold <gingold@adacore.com>
* config/avr/avr.c (expand_prologue): Set
diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
index 7fbb5d2..bb1a420 100644
--- a/gcc/config/i386/cygming.h
+++ b/gcc/config/i386/cygming.h
@@ -73,11 +73,25 @@ along with GCC; see the file COPYING3. If not see
won't allow it. */
#define ASM_OUTPUT_DWARF_OFFSET(FILE, SIZE, LABEL, SECTION) \
do { \
- if (SIZE != 4 && (!TARGET_64BIT || SIZE != 8)) \
- abort (); \
- \
- fputs ("\t.secrel32\t", FILE); \
- assemble_name (FILE, LABEL); \
+ switch (SIZE) \
+ { \
+ case 4: \
+ fputs ("\t.secrel32\t", FILE); \
+ assemble_name (FILE, LABEL); \
+ break; \
+ case 8: \
+ /* This is a hack. There is no 64-bit section relative \
+ relocation. However, the COFF format also does not \
+ support 64-bit file offsets; 64-bit applications are \
+ limited to 32-bits of code+data in any one module. \
+ Fake the 64-bit offset by zero-extending it. */ \
+ fputs ("\t.secrel32\t", FILE); \
+ assemble_name (FILE, LABEL); \
+ fputs ("\n\t.long\t0", FILE); \
+ break; \
+ default: \
+ gcc_unreachable (); \
+ } \
} while (0)
#endif