[llvm-dev] Do I need to modify the AddrLoc of LLD for ARC target? (original) (raw)

Leslie Zhai via llvm-dev llvm-dev at lists.llvm.org
Sun Sep 17 19:28:27 PDT 2017


Hi Peter,

Map file about LD for ARC target https://drive.google.com/open?id=0ByE8c-y74l_uRWpQdUh2c0VXZ1k

LLD for ARC https://drive.google.com/open?id=0ByE8c-y74l_ueGVuYkR0a3RSWjQ

arm-thumb-undefined-weak.s https://github.com/llvm-mirror/lld/blob/master/test/ELF/arm-thumb-undefined-weak.s

$ llvm/build/bin/llvm-mc -filetype=obj -triple=thumbv7a-none-linux-gnueabi arm-thumb-undefined-weak.s -o arm-thumb-undefined-weak.o $ llvm/build/bin/ld.lld -o arm-thumb-undefined-weak-lld arm-thumb-undefined-weak.o -Ttext=11006 $ arm-linux-gnu-ld -o arm-thumb-undefined-weak-ld arm-thumb-undefined-weak.o -Ttext=11006

$ arm-linux-gnu-readelf -r arm-thumb-undefined-weak.o

Relocation section '.rel.text' at offset 0x8c contains 6 entries:  Offset     Info    Type            Sym.Value  Sym. Name 00000000  00000333 R_ARM_THM_JUMP19  00000000   target 00000004  0000031e R_ARM_THM_JUMP24  00000000   target 00000008  0000030a R_ARM_THM_CALL    00000000   target 0000000c  0000030a R_ARM_THM_CALL    00000000   target 00000010  00000332 R_ARM_THM_MOVT_PR 00000000   target 00000014  00000331 R_ARM_THM_MOVW_PR 00000000   target

DEBUG: lld: R_ARM_THM_JUMP19 TargetVA: 0 A: -4 P: 69640 Align: 4 VMA: 69640 Output Offset: 0 Reloc Offset: 0 DEBUG: lld: R_ARM_THM_JUMP24 TargetVA: 0 A: -4 P: 69644 Align: 4 VMA: 69640 Output Offset: 0 Reloc Offset: 4 DEBUG: lld: R_ARM_THM_CALL TargetVA: 1 A: -4 P: 69648 Align: 4 VMA: 69640 Output Offset: 0 Reloc Offset: 8 DEBUG: lld: R_ARM_THM_CALL TargetVA: 1 A: -4 P: 69652 Align: 4 VMA: 69640 Output Offset: 0 Reloc Offset: 12 DEBUG: lld: R_ARM_THM_MOVT_PREL TargetVA: 0 A: 0 P: 69656 Align: 4 VMA: 69640 Output Offset: 0 Reloc Offset: 16 DEBUG: lld: R_ARM_THM_MOVW_PREL_NC TargetVA: 0 A: 0 P: 69660 Align: 4 VMA: 69640 Output Offset: 0 Reloc Offset: 20

DEBUG: arm-linux-gnu-ld: R_ARM_THM_JUMP19: VMA: 69638 Output Offset: 2 Reloc Offset: 0 DEBUG: arm-linux-gnu-ld: R_ARM_THM_JUMP24: VMA: 69638 Output Offset: 2 Reloc Offset: 4 DEBUG: arm-linux-gnu-ld: R_ARM_THM_CALL: VMA: 69638 Output Offset: 2 Reloc Offset: 8 DEBUG: arm-linux-gnu-ld: R_ARM_THM_CALL: VMA: 69638 Output Offset: 2 Reloc Offset: 12 DEBUG: arm-linux-gnu-ld: R_ARM_THM_MOVT_PREL: VMA: 69638 Output Offset: 2 Reloc Offset: 16 DEBUG: arm-linux-gnu-ld: R_ARM_THM_MOVW_PREL_NC: VMA: 69638 Output Offset: 2 Reloc Offset: 20

$ llvm/build/bin/llvm-objdump -triple=thumbv7a-none-linux-gnueabi -d arm-thumb-undefined-weak-lld

arm-thumb-undefined-weak-lld:   file format ELF32-arm-little

Disassembly of section .text: _start:    11008:       00 f0 00 80     beq.w   #0 <_start+0x4>    1100c:       00 f0 00 b8     b.w     #0 <_start+0x8>    11010:       00 f0 00 f8     bl      #0    11014:       00 f0 00 f8     bl      #0    11018:       c0 f2 00 00     movt    r0, #0    1101c:       40 f2 00 00     movw    r0, #0

$ llvm/build/bin/llvm-objdump -triple=thumbv7a-none-linux-gnueabi -d arm-thumb-undefined-weak-ld

arm-thumb-undefined-weak-ld:    file format ELF32-arm-little

Disassembly of section .text: .text:    11006:       00 00   movs    r0, r0

_start:    11008:       2e f4 fa af     beq.w   #-69644    1100c:       00 e0   b       #0 <_start+0x8>    1100e:       00 bf   nop    11010:       00 e0   b       #0 <_start+0xC>    11012:       00 bf   nop    11014:       00 e0   b       #0 <_start+0x10>    11016:       00 bf   nop    11018:       cf f6 fe 70     movt    r0, #65534    1101c:       4e f6 e4 70     movw    r0, #61412

Regards, Leslie Zhai - https://reviews.llvm.org/p/xiangzhai/



More information about the llvm-dev mailing list