Browse Source
* elf32-spu.h (spu_elf_params): Add member emit_fixups. (spu_elf_size_sections): Declare prototype. * elf32-spu.c (spu_link_hash_table): Add member sfixup. (FIXUP_RECORD_SIZE, FIXUP_GET, FIXUP_PUT): New macros. (spu_elf_emit_fixup): New function. (spu_elf_relocate_section): Emit fixup for each SPU_ADDR32. (spu_elf_size_sections): New function. ld/ * emulparams/elf32_spu.sh (OTHER_READONLY_SECTIONS): Add .fixup section and __fixup_start symbol. * emultempl/spuelf.em (params): Initialize emit_fixups member. (spu_before_allocation): Call spu_elf_size_sections. (OPTION_SPU_EMIT_FIXUPS): Define. (PARSE_AND_LIST_LONGOPTS): Add --emit-fixups. (PARSE_AND_LIST_ARGS_CASES): Handle --emit-fixups. * ld.texinfo (--emit-fixups): Document. ld/testsuite/ * ld-spu/fixup.d: New. * ld-spu/fixup.s: New.gdb_7_0-branch
9 changed files with 225 additions and 1 deletions
@ -0,0 +1,20 @@ |
|||
#source: fixup.s |
|||
#ld: --emit-fixups |
|||
#objdump: -s |
|||
|
|||
.*elf32-spu |
|||
|
|||
Contents of section .text: |
|||
0000 00000000 .... |
|||
Contents of section .fixup: |
|||
0004 0000008b 00000091 000000c1 00000000 ................ |
|||
Contents of section .data: |
|||
0080 000000d0 00000000 00000000 000000c0 ................ |
|||
0090 00000000 00000000 00000000 000000b0 ................ |
|||
00a0 00000001 00000000 00000000 00000000 ................ |
|||
00b0 00000002 00000000 00000000 00000000 ................ |
|||
00c0 00000000 00000000 00000000 00000080 ................ |
|||
Contents of section .note.spu_name: |
|||
.* |
|||
.* |
|||
#pass |
|||
@ -0,0 +1,24 @@ |
|||
.global _end |
|||
.global _start |
|||
.global glob |
|||
.global after |
|||
.global before |
|||
.weak undef |
|||
|
|||
.section .text,"ax" |
|||
_start: |
|||
stop |
|||
|
|||
|
|||
.data |
|||
.p2align 4 |
|||
before: |
|||
.long _end, 0, _start, after |
|||
.long 0, 0, 0, glob |
|||
loc: |
|||
.long 1,0,0,0 |
|||
glob: |
|||
.long 2,0,0,0 |
|||
after: |
|||
.long 0, 0, 0, before |
|||
|
|||
Loading…
Reference in new issue