mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
b6895b4f37
bfd/ * elf32-arm.c (elf32_arm_reloc_map): Add MOVW and MOVT relocs. (elf32_arm_final_link_relocate): Handle MOVW and MOVT relocs. (elf32_arm_gc_sweep_hook, elf32_arm_check_relocs): Ditto. * reloc.c: Ditto. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * libcoff.h: Regenerate. gas/ * config/tc-arm.c (parse_half): New function. (operand_parse_code): Remove OP_Iffff. Add OP_HALF. (parse_operands): Ditto. (do_mov16): Reject invalid relocations. (do_t_mov16): Ditto. Use Thumb reloc numbers. (insns): Replace Iffff with HALF. (md_apply_fix): Add MOVW and MOVT relocs. (tc_gen_reloc): Ditto. * doc/c-arm.texi: Document relocation operators ld/testsuite/ * ld-arm/arm-elf.exp: Add arm-movwt. * ld-arm/arm-movwt.d: New test. * ld-arm/arm-movwt.s: New test. * ld-arm/arm.ld: Add .far.
45 lines
1022 B
ArmAsm
45 lines
1022 B
ArmAsm
.text
|
|
.arch armv6t2
|
|
.syntax unified
|
|
.global _start
|
|
.type _start, %function
|
|
_start:
|
|
base1:
|
|
arm1:
|
|
movw r0, #:lower16:arm2
|
|
movt r1, #:upper16:arm2
|
|
movw r2, #:lower16:(arm2 - arm1)
|
|
movt r3, #:upper16:(arm2 - arm1)
|
|
movw r4, #:lower16:thumb2
|
|
movt r5, #:upper16:thumb2
|
|
movw r6, #:lower16:(thumb2 - arm1)
|
|
movt r7, #:upper16:(thumb2 - arm1)
|
|
.thumb
|
|
.type thumb1, %function
|
|
.thumb_func
|
|
thumb1:
|
|
movw r7, #:lower16:arm2
|
|
movt r6, #:upper16:arm2
|
|
movw r5, #:lower16:(arm2 - arm1)
|
|
movt r4, #:upper16:(arm2 - arm1)
|
|
movw r3, #:lower16:thumb2
|
|
movt r2, #:upper16:thumb2
|
|
movw r1, #:lower16:(thumb2 - arm1)
|
|
movt r0, #:upper16:(thumb2 - arm1)
|
|
|
|
.section .far, "ax", %progbits
|
|
.arm
|
|
arm2:
|
|
movw r0, #:lower16:(arm1 - arm2)
|
|
movt r0, #:upper16:(arm1 - arm2)
|
|
movw r0, #:lower16:(thumb1 - arm2)
|
|
movt r0, #:upper16:(thumb1 - arm2)
|
|
.thumb
|
|
.type thumb2, %function
|
|
.thumb_func
|
|
thumb2:
|
|
movw r0, #:lower16:(arm1 - arm2)
|
|
movt r0, #:upper16:(arm1 - arm2)
|
|
movw r0, #:lower16:(thumb1 - arm2)
|
|
movt r0, #:upper16:(thumb1 - arm2)
|