* include/elf/arm.h: Correct names of R_ARM_LDC_G{0,1,2}
commit5b238cbe838ba0dac8922991594ae2465f2126b3
authorMark Shinwell <shinwell@codesourcery.com>
Thu, 15 Jun 2006 11:03:02 +0000 (15 11:03 +0000)
committerMark Shinwell <shinwell@codesourcery.com>
Thu, 15 Jun 2006 11:03:02 +0000 (15 11:03 +0000)
tree845d8c7a8b46293d9cd9fb817e9b5fb19cf615ed
parent407040b4a591f38213dcece45253c5b9f15ecce0
* include/elf/arm.h: Correct names of R_ARM_LDC_G{0,1,2}
to R_ARM_LDC_SB_G{0,1,2} respectively.

bfd/
* bfd-in2.h: Regenerate.
* elf32-arm.c (R_ARM_ALU_PC_G0_NC, R_ARM_ALU_PC_G0,
R_ARM_ALU_PC_G1_NC, R_ARM_ALU_PC_G1, R_ARM_ALU_PC_G2,
R_ARM_LDR_PC_G1, R_ARM_LDR_PC_G2, R_ARM_LDRS_PC_G0,
R_ARM_LDRS_PC_G1, R_ARM_LDRS_PC_G2, R_ARM_LDC_PC_G0,
R_ARM_LDC_PC_G1, R_ARM_LDC_PC_G2, R_ARM_ALU_SB_G0_NC,
R_ARM_ALU_SB_G0, R_ARM_ALU_SB_G1_NC, R_ARM_ALU_SB_G1,
R_ARM_ALU_SB_G2, R_ARM_LDR_SB_G0, R_ARM_LDR_SB_G1,
R_ARM_LDR_SB_G2, R_ARM_LDRS_SB_G0, R_ARM_LDRS_SB_G1,
R_ARM_LDRS_SB_G2, R_ARM_LDC_SB_G0, R_ARM_LDC_SB_G1,
R_ARM_LDC_SB_G2): New relocation types.
(R_ARM_PC13): Rename to AAELF name R_ARM_LDR_PC_G0 and
adjust HOWTO entry to be consistent with R_ARM_LDR_PC_G1
and friends.
(elf32_arm_howto_table_3): Delete; contents merged into
elf32_arm_howto_table_2.
(elf32_arm_howto_from_type): Adjust correspondingly.
(elf32_arm_reloc_map): Extend with the above relocations.
(calculate_group_reloc_mask): New function.
(identify_add_or_sub): New function.
(elf32_arm_final_link_relocate): Support for the above
relocations.
* reloc.c: Add enumeration entries for BFD_RELOC_ARM_...
codes to correspond to the above relocations.

gas/
* config/tc-arm.c (enum parse_operand_result): New.
(struct group_reloc_table_entry): New.
(enum group_reloc_type): New.
(group_reloc_table): New array.
(find_group_reloc_table_entry): New function.
(parse_shifter_operand_group_reloc): New function.
(parse_address_main): New function, incorporating code
from the old parse_address function.  To be used via...
(parse_address): wrapper for parse_address_main; and
(parse_address_group_reloc): new function, likewise.
(enum operand_parse_code): New codes OP_SHG, OP_ADDRGLDR,
OP_ADDRGLDRS, OP_ADDRGLDC.
(parse_operands): Support for these new operand codes.
New macro po_misc_or_fail_no_backtrack.
(encode_arm_cp_address): Preserve group relocations.
(insns): Modify to use the above operand codes where group
relocations are permitted.
(md_apply_fix): Handle the group relocations
ALU_PC_G0_NC through LDC_SB_G2.
(tc_gen_reloc): Likewise.
(arm_force_relocation): Leave group relocations for the linker.
(arm_fix_adjustable): Likewise.

gas/testsuite/
* gas/arm/group-reloc-alu.d: New test.
* gas/arm/group-reloc-alu-encoding-bad.d: New test.
* gas/arm/group-reloc-alu-encoding-bad.l: New test.
* gas/arm/group-reloc-alu-encoding-bad.s: New test.
* gas/arm/group-reloc-alu-parsing-bad.d: New test.
* gas/arm/group-reloc-alu-parsing-bad.l: New test.
* gas/arm/group-reloc-alu-parsing-bad.s: New test.
* gas/arm/group-reloc-alu.s: New test.
* gas/arm/group-reloc-ldc.d: New test.
* gas/arm/group-reloc-ldc-encoding-bad.d: New test.
* gas/arm/group-reloc-ldc-encoding-bad.l: New test.
* gas/arm/group-reloc-ldc-encoding-bad.s: New test.
* gas/arm/group-reloc-ldc-parsing-bad.d: New test.
* gas/arm/group-reloc-ldc-parsing-bad.l: New test.
* gas/arm/group-reloc-ldc-parsing-bad.s: New test.
* gas/arm/group-reloc-ldc.s: New test.
* gas/arm/group-reloc-ldr.d: New test.
* gas/arm/group-reloc-ldr-encoding-bad.d: New test.
* gas/arm/group-reloc-ldr-encoding-bad.l: New test.
* gas/arm/group-reloc-ldr-encoding-bad.s: New test.
* gas/arm/group-reloc-ldr-parsing-bad.d: New test.
* gas/arm/group-reloc-ldr-parsing-bad.l: New test.
* gas/arm/group-reloc-ldr-parsing-bad.s: New test.
* gas/arm/group-reloc-ldr.s: New test.
* gas/arm/group-reloc-ldrs.d: New test.
* gas/arm/group-reloc-ldrs-encoding-bad.d: New test.
* gas/arm/group-reloc-ldrs-encoding-bad.l: New test.
* gas/arm/group-reloc-ldrs-encoding-bad.s: New test.
* gas/arm/group-reloc-ldrs-parsing-bad.d: New test.
* gas/arm/group-reloc-ldrs-parsing-bad.l: New test.
* gas/arm/group-reloc-ldrs-parsing-bad.s: New test.
* gas/arm/group-reloc-ldrs.s: New test.

ld/testsuite/
* ld-arm/group-relocs-alu-bad.d: New test.
* ld-arm/group-relocs-alu-bad.s: New test.
* ld-arm/group-relocs.d: New test.
* ld-arm/group-relocs-ldc-bad.d: New test.
* ld-arm/group-relocs-ldc-bad.s: New test.
* ld-arm/group-relocs-ldr-bad.d: New test.
* ld-arm/group-relocs-ldr-bad.s: New test.
* ld-arm/group-relocs-ldrs-bad.d: New test.
* ld-arm/group-relocs-ldrs-bad.s: New test.
* ld-arm/group-relocs.s: New test.
* ld-arm/arm-elf.exp: Wire in new tests.
54 files changed:
ChangeLog
bfd/ChangeLog
bfd/bfd-in2.h
bfd/elf32-arm.c
bfd/libbfd.h
bfd/reloc.c
gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/group-reloc-alu-encoding-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-alu-encoding-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-alu-encoding-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-alu-parsing-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-alu-parsing-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-alu-parsing-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-alu.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-alu.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldc-encoding-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldc-encoding-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldc-encoding-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldc-parsing-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldc-parsing-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldc-parsing-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldc.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldc.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldr-encoding-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldr-encoding-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldr-encoding-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldr-parsing-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldr-parsing-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldr-parsing-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldr.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldr.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldrs-encoding-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldrs-encoding-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldrs-encoding-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldrs-parsing-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldrs-parsing-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldrs-parsing-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/group-reloc-ldrs.s [new file with mode: 0644]
include/elf/arm.h
ld/testsuite/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/group-relocs-alu-bad.d [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs-alu-bad.s [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs-ldc-bad.d [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs-ldc-bad.s [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs-ldr-bad.d [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs-ldr-bad.s [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs-ldrs-bad.d [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs-ldrs-bad.s [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs.d [new file with mode: 0644]
ld/testsuite/ld-arm/group-relocs.s [new file with mode: 0644]