diff options
author | Trevor Smigiel <Trevor_Smigiel@playstation.sony.com> | 2009-07-24 19:51:27 +0000 |
---|---|---|
committer | Trevor Smigiel <Trevor_Smigiel@playstation.sony.com> | 2009-07-24 19:51:27 +0000 |
commit | 8fdcc58daafe1153d2edf18a2f106d2b247e1f01 (patch) | |
tree | 12dd0108e2284f8bcf70a761b5e6dcae9f60d7bf /gas/config | |
parent | 309d33736f82fece9dbeae7a4ba096cdc2d77753 (diff) | |
download | gdb-8fdcc58daafe1153d2edf18a2f106d2b247e1f01.zip gdb-8fdcc58daafe1153d2edf18a2f106d2b247e1f01.tar.gz gdb-8fdcc58daafe1153d2edf18a2f106d2b247e1f01.tar.bz2 |
include/elf/
* spu.h (R_SPU_ADD_PIC): New.
bfd/
* reloc.c (BFD_RELOC_SPU_ADD_PIC): Define.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elf32-spu.c (elf_howto_table): Add entries SPU_ADD_PIC.
(spu_elf_bfd_to_reloc_type): Handle SPU_ADD_PIC.
(spu_elf_relocate_section): Patch instructions marked by SPU_ADD_PIC.
gas/
* config/tc-spu.c (md_apply_fix): Handle SPU_ADD_PIC.
* config/tc-spu.h (tc_fix_adjustable): Don't adjust for SPU_ADD_PIC.
(TC_FORCE_RELOCATION): Emit relocs for SPU_ADD_PIC.
ld/testsuite/
* ld-spu/pic.d: New.
* ld-spu/pic.s: New.
* ld-spu/picdef.s: New.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-spu.c | 3 | ||||
-rw-r--r-- | gas/config/tc-spu.h | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/gas/config/tc-spu.c b/gas/config/tc-spu.c index 6fbe4d5..0d94f32 100644 --- a/gas/config/tc-spu.c +++ b/gas/config/tc-spu.c @@ -989,7 +989,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) fixP->fx_addnumber = val; if (fixP->fx_r_type == BFD_RELOC_SPU_PPU32 - || fixP->fx_r_type == BFD_RELOC_SPU_PPU64) + || fixP->fx_r_type == BFD_RELOC_SPU_PPU64 + || fixP->fx_r_type == BFD_RELOC_SPU_ADD_PIC) return; if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) diff --git a/gas/config/tc-spu.h b/gas/config/tc-spu.h index 11f7dc1..4829fe1 100644 --- a/gas/config/tc-spu.h +++ b/gas/config/tc-spu.h @@ -50,7 +50,8 @@ struct tc_fix_info { #define tc_fix_adjustable(FIXP) \ (!(S_IS_FUNCTION ((FIXP)->fx_addsy) \ || (FIXP)->fx_r_type == BFD_RELOC_SPU_PPU32 \ - || (FIXP)->fx_r_type == BFD_RELOC_SPU_PPU64)) + || (FIXP)->fx_r_type == BFD_RELOC_SPU_PPU64 \ + || (FIXP)->fx_r_type == BFD_RELOC_SPU_ADD_PIC)) /* Keep relocs on calls. Branches to function symbols are tail or sibling calls. */ @@ -63,6 +64,7 @@ struct tc_fix_info { && S_IS_FUNCTION ((FIXP)->fx_addsy)) \ || (FIXP)->fx_r_type == BFD_RELOC_SPU_PPU32 \ || (FIXP)->fx_r_type == BFD_RELOC_SPU_PPU64 \ + || (FIXP)->fx_r_type == BFD_RELOC_SPU_ADD_PIC \ || generic_force_reloc (FIXP)) /* Values passed to md_apply_fix don't include symbol values. */ |