diff options
author | Richard Henderson <rth@redhat.com> | 2010-09-28 08:20:16 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2010-09-28 08:20:16 -0700 |
commit | 4d508d590e0f6c6c0d7a2890d519a029f4282c6b (patch) | |
tree | 374917fa27d8bf13bbf36e070f81e00a01218d45 /gcc | |
parent | e660c8f2081b9d2faaf33e01a057eb5454d9c86d (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/cygming.h | 24 |
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 |