143 lines · plain
1// REQUIRES: aarch642// RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o3// RUN: ld.lld -static %t.o -o %tout4// RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %tout | FileCheck %s --check-prefix=DISASM5// RUN: llvm-readobj -r --symbols --sections %tout | FileCheck %s6 7// CHECK: Sections [8// CHECK: Section {9// CHECK: Index: 110// CHECK-NEXT: Name: .rela.dyn11// CHECK-NEXT: Type: SHT_RELA12// CHECK-NEXT: Flags [13// CHECK-NEXT: SHF_ALLOC14// CHECK-NEXT: ]15// CHECK-NEXT: Address: [[RELA:.*]]16// CHECK-NEXT: Offset: 0x15817// CHECK-NEXT: Size: 4818// CHECK-NEXT: Link: 019// CHECK-NEXT: Info: 020// CHECK-NEXT: AddressAlignment: 821// CHECK-NEXT: EntrySize: 2422// CHECK-NEXT: }23// CHECK: Relocations [24// CHECK-NEXT: Section ({{.*}}) .rela.dyn {25// CHECK-NEXT: 0x2201C0 R_AARCH64_IRELATIVE26// CHECK-NEXT: 0x2201C8 R_AARCH64_IRELATIVE27// CHECK-NEXT: }28// CHECK-NEXT: ]29// CHECK: Symbols [30// CHECK-NEXT: Symbol {31// CHECK-NEXT: Name:32// CHECK-NEXT: Value: 0x033// CHECK-NEXT: Size: 034// CHECK-NEXT: Binding: Local35// CHECK-NEXT: Type: None36// CHECK-NEXT: Other: 037// CHECK-NEXT: Section: Undefined38// CHECK-NEXT: }39// CHECK-NEXT: Symbol {40// CHECK-NEXT: Name: $x41// CHECK-NEXT: Value: 0x21018842// CHECK-NEXT: Size: 043// CHECK-NEXT: Binding: Local44// CHECK-NEXT: Type: None45// CHECK-NEXT: Other: 046// CHECK-NEXT: Section: .text47// CHECK-NEXT: }48// CHECK-NEXT: Symbol {49// CHECK-NEXT: Name: __rela_iplt_start50// CHECK-NEXT: Value: 0x20015851// CHECK-NEXT: Size: 052// CHECK-NEXT: Binding: Local53// CHECK-NEXT: Type: None54// CHECK-NEXT: Other [55// CHECK-NEXT: STV_HIDDEN56// CHECK-NEXT: ]57// CHECK-NEXT: Section: .rela.dyn58// CHECK-NEXT: }59// CHECK-NEXT: Symbol {60// CHECK-NEXT: Name: __rela_iplt_end61// CHECK-NEXT: Value: 0x20018862// CHECK-NEXT: Size: 063// CHECK-NEXT: Binding: Local64// CHECK-NEXT: Type: None65// CHECK-NEXT: Other [66// CHECK-NEXT: STV_HIDDEN67// CHECK-NEXT: ]68// CHECK-NEXT: Section: .rela.dyn69// CHECK-NEXT: }70// CHECK-NEXT: Symbol {71// CHECK-NEXT: Name: foo72// CHECK-NEXT: Value: 0x21018873// CHECK-NEXT: Size: 074// CHECK-NEXT: Binding: Global75// CHECK-NEXT: Type: GNU_IFunc76// CHECK-NEXT: Other: 077// CHECK-NEXT: Section: .text78// CHECK-NEXT: }79// CHECK-NEXT: Symbol {80// CHECK-NEXT: Name: bar81// CHECK-NEXT: Value: 0x21018C82// CHECK-NEXT: Size: 083// CHECK-NEXT: Binding: Global84// CHECK-NEXT: Type: GNU_IFunc85// CHECK-NEXT: Other: 086// CHECK-NEXT: Section: .text87// CHECK-NEXT: }88// CHECK-NEXT: Symbol {89// CHECK-NEXT: Name: _start90// CHECK-NEXT: Value: 0x21019091// CHECK-NEXT: Size: 092// CHECK-NEXT: Binding: Global93// CHECK-NEXT: Type: None94// CHECK-NEXT: Other: 095// CHECK-NEXT: Section: .text96// CHECK-NEXT: }97// CHECK-NEXT: ]98 99// 344 = 0x158100// 392 = 0x188101 102// DISASM: Disassembly of section .text:103// DISASM-EMPTY:104// DISASM-NEXT: <foo>:105// DISASM-NEXT: 210188: ret106// DISASM: <bar>:107// DISASM-NEXT: 21018c: ret108// DISASM: <_start>:109// DISASM-NEXT: 210190: bl 0x2101a0110// DISASM-NEXT: 210194: bl 0x2101b0111// DISASM-NEXT: 210198: add x2, x2, #344112// DISASM-NEXT: 21019c: add x2, x2, #392113// DISASM-EMPTY:114// DISASM-NEXT: Disassembly of section .iplt:115// DISASM-EMPTY:116// DISASM-NEXT: <.iplt>:117// DISASM-NEXT: 2101a0: adrp x16, 0x220000118// DISASM-NEXT: 2101a4: ldr x17, [x16, #448]119// DISASM-NEXT: 2101a8: add x16, x16, #448120// DISASM-NEXT: 2101ac: br x17121// DISASM-NEXT: 2101b0: adrp x16, 0x220000122// DISASM-NEXT: 2101b4: ldr x17, [x16, #456]123// DISASM-NEXT: 2101b8: add x16, x16, #456124// DISASM-NEXT: 2101bc: br x17125 126.text127.type foo STT_GNU_IFUNC128.globl foo129foo:130 ret131 132.type bar STT_GNU_IFUNC133.globl bar134bar:135 ret136 137.globl _start138_start:139 bl foo140 bl bar141 add x2, x2, :lo12:__rela_iplt_start142 add x2, x2, :lo12:__rela_iplt_end143