brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · d49ca18 Raw
140 lines · plain
1// REQUIRES: arm2// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o3// RUN: ld.lld %t.o -o %t4// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t | FileCheck %s --check-prefix=DISASM5// RUN: llvm-readobj -r --symbols --sections %t | FileCheck %s6 .syntax unified7 .text8 .globl bar, foo9 .type foo STT_GNU_IFUNC10foo:11 bx lr12 13 .type bar STT_GNU_IFUNC14bar:15 bx lr16 17 .globl _start18_start:19 bl foo20 bl bar21 movw r0,:lower16:__rel_iplt_start22 movt r0,:upper16:__rel_iplt_start23 movw r0,:lower16:__rel_iplt_end24 movt r0,:upper16:__rel_iplt_end25 26// CHECK: Sections [27// CHECK:   Section {28// CHECK:        Section {29// CHECK:          Name: .rel.dyn30// CHECK-NEXT:     Type: SHT_REL31// CHECK-NEXT:     Flags [32// CHECK-NEXT:       SHF_ALLOC33// CHECK-NEXT:     ]34// CHECK-NEXT:     Address: 0x100F435// CHECK-NEXT:     Offset: 0xF436// CHECK-NEXT:     Size: 1637// CHECK-NEXT:     Link:38// CHECK-NEXT:     Info: 039// CHECK:          Name: .iplt40// CHECK-NEXT:     Type: SHT_PROGBITS41// CHECK-NEXT:     Flags [42// CHECK-NEXT:       SHF_ALLOC43// CHECK-NEXT:       SHF_EXECINSTR44// CHECK-NEXT:     ]45// CHECK-NEXT:     Address: 0x2013046// CHECK-NEXT:     Offset: 0x13047// CHECK-NEXT:     Size: 3248// CHECK:          Index: 449// CHECK-NEXT:     Name: .got50// CHECK-NEXT:     Type: SHT_PROGBITS51// CHECK-NEXT:     Flags [52// CHECK-NEXT:       SHF_ALLOC53// CHECK-NEXT:       SHF_WRITE54// CHECK-NEXT:     ]55// CHECK-NEXT:     Address: 0x3015056// CHECK-NEXT:     Offset: 0x15057// CHECK-NEXT:     Size: 858// CHECK:      Relocations [59// CHECK-NEXT:   Section (1) .rel.dyn {60// CHECK-NEXT:     0x30150 R_ARM_IRELATIVE61// CHECK-NEXT:     0x30154 R_ARM_IRELATIVE62// CHECK-NEXT:   }63// CHECK-NEXT: ]64// CHECK:          Name: __rel_iplt_start65// CHECK-NEXT:     Value: 0x100F466// CHECK-NEXT:     Size: 067// CHECK-NEXT:     Binding: Local68// CHECK-NEXT:     Type: None69// CHECK-NEXT:     Other [70// CHECK-NEXT:       STV_HIDDEN71// CHECK-NEXT:     ]72// CHECK-NEXT:     Section: .rel.dyn73// CHECK-NEXT:   }74// CHECK-NEXT:   Symbol {75// CHECK-NEXT:     Name: __rel_iplt_end76// CHECK-NEXT:     Value: 0x1010477// CHECK-NEXT:     Size: 078// CHECK-NEXT:     Binding: Local79// CHECK-NEXT:     Type: None80// CHECK-NEXT:     Other [81// CHECK-NEXT:       STV_HIDDEN82// CHECK-NEXT:     ]83// CHECK-NEXT:     Section: .rel.dyn84// CHECK-NEXT:   }85// CHECK-NEXT:  Symbol {86// CHECK-NEXT:    Name: bar87// CHECK-NEXT:    Value: 0x2010888// CHECK-NEXT:    Size: 089// CHECK-NEXT:    Binding: Global90// CHECK-NEXT:    Type: GNU_IFunc91// CHECK-NEXT:    Other: 092// CHECK-NEXT:    Section: .text93// CHECK-NEXT:  }94// CHECK-NEXT:  Symbol {95// CHECK-NEXT:    Name: foo96// CHECK-NEXT:    Value: 0x2010497// CHECK-NEXT:    Size: 098// CHECK-NEXT:    Binding: Global99// CHECK-NEXT:    Type: GNU_IFunc100// CHECK-NEXT:    Other: 0101// CHECK-NEXT:    Section: .text102// CHECK-NEXT:  }103// CHECK-NEXT:  Symbol {104// CHECK-NEXT:    Name: _start105// CHECK-NEXT:    Value: 0x2010C106// CHECK-NEXT:    Size: 0107// CHECK-NEXT:    Binding: Global108// CHECK-NEXT:    Type: None109// CHECK-NEXT:    Other:110// CHECK-NEXT:    Section: .text111// CHECK-NEXT:  }112 113// DISASM: Disassembly of section .text:114// DISASM-EMPTY:115// DISASM-NEXT: <foo>:116// DISASM-NEXT:    20104:      bx      lr117// DISASM: <bar>:118// DISASM-NEXT:    20108:      bx      lr119// DISASM: <_start>:120// DISASM-NEXT:    2010c:      bl      0x20140121// DISASM-NEXT:    20110:      bl      0x20130122// 1 * 65536 + 244 = 0x100f4 __rel_iplt_start123// DISASM-NEXT:    20114:      movw    r0, #244124// DISASM-NEXT:    20118:      movt    r0, #1125// 1 * 65536 + 260 = 0x10104 __rel_iplt_end126// DISASM-NEXT:    2011c:      movw    r0, #260127// DISASM-NEXT:    20120:      movt    r0, #1128// DISASM-EMPTY:129// DISASM-NEXT: Disassembly of section .iplt:130// DISASM-EMPTY:131// DISASM-NEXT: <.iplt>:132// DISASM-NEXT:    20130:       add     r12, pc, #0, #12133// DISASM-NEXT:    20134:       add     r12, r12, #16134// DISASM-NEXT:    20138:       ldr     pc, [r12, #24]!135// DISASM-NEXT:    2013c:       d4 d4 d4 d4     .word   0xd4d4d4d4136// DISASM-NEXT:    20140:       add     r12, pc, #0, #12137// DISASM-NEXT:    20144:       add     r12, r12, #16138// DISASM-NEXT:    20148:       ldr     pc, [r12, #12]!139// DISASM-NEXT:    2014c:       d4 d4 d4 d4     .word   0xd4d4d4d4140