Browse Source
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.cr-0x5f1
13 changed files with 443 additions and 17 deletions
@ -0,0 +1,39 @@ |
|||
|
|||
.*: file format.* |
|||
|
|||
Disassembly of section .text: |
|||
|
|||
00008000 <[^>]*>: |
|||
8000: e3000000 movw r0, #0 ; 0x0 |
|||
8004: e3411234 movt r1, #4660 ; 0x1234 |
|||
8008: e3082000 movw r2, #32768 ; 0x8000 |
|||
800c: e3413233 movt r3, #4659 ; 0x1233 |
|||
8010: e3004011 movw r4, #17 ; 0x11 |
|||
8014: e3415234 movt r5, #4660 ; 0x1234 |
|||
8018: e3086011 movw r6, #32785 ; 0x8011 |
|||
801c: e3417233 movt r7, #4659 ; 0x1233 |
|||
|
|||
00008020 <[^>]*>: |
|||
8020: f240 0700 movw r7, #0 ; 0x0 |
|||
8024: f2c1 2634 movt r6, #4660 ; 0x1234 |
|||
8028: f248 0500 movw r5, #32768 ; 0x8000 |
|||
802c: f2c1 2433 movt r4, #4659 ; 0x1233 |
|||
8030: f240 0311 movw r3, #17 ; 0x11 |
|||
8034: f2c1 2234 movt r2, #4660 ; 0x1234 |
|||
8038: f248 0111 movw r1, #32785 ; 0x8011 |
|||
803c: f2c1 2033 movt r0, #4659 ; 0x1233 |
|||
|
|||
Disassembly of section .far: |
|||
|
|||
12340000 <[^>]*>: |
|||
12340000: e3080000 movw r0, #32768 ; 0x8000 |
|||
12340004: e34e0dcc movt r0, #60876 ; 0xedcc |
|||
12340008: e3080021 movw r0, #32801 ; 0x8021 |
|||
1234000c: e34e0dcc movt r0, #60876 ; 0xedcc |
|||
|
|||
12340010 <[^>]*>: |
|||
12340010: f248 0000 movw r0, #32768 ; 0x8000 |
|||
12340014: f6ce 50cc movt r0, #60876 ; 0xedcc |
|||
12340018: f248 0021 movw r0, #32801 ; 0x8021 |
|||
1234001c: f6ce 50cc movt r0, #60876 ; 0xedcc |
|||
|
|||
@ -0,0 +1,44 @@ |
|||
.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) |
|||
Loading…
Reference in new issue