diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2009-02-17 21:10:43 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2009-02-17 21:10:43 +0000 |
commit | 082d2ebb8481f4a0399f7e6f2fcacf67d4927993 (patch) | |
tree | 3f009fddea4c95d4039a730441c396ade2a90246 | |
parent | 17de576ca7b5c430a2f472951ebf6c9a68784be6 (diff) | |
download | gcc-082d2ebb8481f4a0399f7e6f2fcacf67d4927993.zip gcc-082d2ebb8481f4a0399f7e6f2fcacf67d4927993.tar.gz gcc-082d2ebb8481f4a0399f7e6f2fcacf67d4927993.tar.bz2 |
mips.c (mips_override_options): Set flag_dwarf2_cfi_asm to 0 for EABI64.
gcc/
* config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
to 0 for EABI64.
From-SVN: r144247
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 21 |
2 files changed, 26 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ba31761..de8ed80 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2009-02-17 Richard Sandiford <rdsandiford@googlemail.com> + * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm + to 0 for EABI64. + +2009-02-17 Richard Sandiford <rdsandiford@googlemail.com> + * config/mips/mips.md (type): Reclassify lui_movf as "unknown". 2009-02-17 Richard Sandiford <rdsandiford@googlemail.com> diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 7d2a61b..2c1567c 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -13984,6 +13984,27 @@ mips_override_options (void) if (TARGET_DSPR2) target_flags |= MASK_DSP; + /* .eh_frame addresses should be the same width as a C pointer. + Most MIPS ABIs support only one pointer size, so the assembler + will usually know exactly how big an .eh_frame address is. + + Unfortunately, this is not true of the 64-bit EABI. The ABI was + originally defined to use 64-bit pointers (i.e. it is LP64), and + this is still the default mode. However, we also support an n32-like + ILP32 mode, which is selected by -mlong32. The problem is that the + assembler has traditionally not had an -mlong option, so it has + traditionally not known whether we're using the ILP32 or LP64 form. + + As it happens, gas versions up to and including 2.19 use _32-bit_ + addresses for EABI64 .cfi_* directives. This is wrong for the + default LP64 mode, so we can't use the directives by default. + Moreover, since gas's current behavior is at odds with gcc's + default behavior, it seems unwise to rely on future versions + of gas behaving the same way. We therefore avoid using .cfi + directives for -mlong32 as well. */ + if (mips_abi == ABI_EABI && TARGET_64BIT) + flag_dwarf2_cfi_asm = 0; + mips_init_print_operand_punct (); /* Set up array to map GCC register number to debug register number. |