brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 43b19b2 Raw
155 lines · plain
1// REQUIRES: x862// RUN: llvm-mc -filetype=obj -triple=i686-pc-linux %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: .rel.dyn11// CHECK-NEXT:  Type: SHT_REL12// CHECK-NEXT:  Flags [13// CHECK-NEXT:    SHF_ALLOC14// CHECK-NEXT:  ]15// CHECK-NEXT:  Address: [[RELA:.*]]16// CHECK-NEXT:  Offset: 0xD417// CHECK-NEXT:  Size: 1618// CHECK-NEXT:  Link: 019// CHECK-NEXT:  Info: 020// CHECK-NEXT:  AddressAlignment: 421// CHECK-NEXT:  EntrySize: 822// CHECK-NEXT: }23// CHECK:     Relocations [24// CHECK-NEXT:   Section ({{.*}}) .rel.dyn {25// CHECK-NEXT:     0x402120 R_386_IRELATIVE26// CHECK-NEXT:     0x402124 R_386_IRELATIVE27// CHECK-NEXT:   }28// CHECK-NEXT: ]29 30// CHECK:      Symbols [31// CHECK-NEXT: Symbol {32// CHECK-NEXT:   Name:33// CHECK-NEXT:   Value: 0x034// CHECK-NEXT:   Size: 035// CHECK-NEXT:   Binding: Local36// CHECK-NEXT:   Type: None37// CHECK-NEXT:   Other: 038// CHECK-NEXT:   Section: Undefined39// CHECK-NEXT: }40// CHECK-NEXT: Symbol {41// CHECK-NEXT:   Name: __rel_iplt_start42// CHECK-NEXT:   Value: [[RELA]]43// CHECK-NEXT:   Size: 044// CHECK-NEXT:   Binding: Local45// CHECK-NEXT:   Type: None46// CHECK-NEXT:   Other [47// CHECK-NEXT:     STV_HIDDEN48// CHECK-NEXT:   ]49// CHECK-NEXT:   Section: .rel.dyn50// CHECK-NEXT: }51// CHECK-NEXT: Symbol {52// CHECK-NEXT:   Name: __rel_iplt_end53// CHECK-NEXT:   Value: 0x4000E454// CHECK-NEXT:   Size: 055// CHECK-NEXT:   Binding: Local56// CHECK-NEXT:   Type: None57// CHECK-NEXT:   Other [58// CHECK-NEXT:     STV_HIDDEN59// CHECK-NEXT:   ]60// CHECK-NEXT:   Section: .rel.dyn61// CHECK-NEXT: }62// CHECK-NEXT: Symbol {63// CHECK-NEXT:   Name: bar64// CHECK-NEXT:   Value: 0x40110065// CHECK-NEXT:   Size: 066// CHECK-NEXT:   Binding: Global67// CHECK-NEXT:   Type: Function68// CHECK-NEXT:   Other: 069// CHECK-NEXT:   Section: .iplt70// CHECK-NEXT: }71// CHECK-NEXT: Symbol {72// CHECK-NEXT:   Name: bar_resolver73// CHECK-NEXT:   Value: 0x4010E474// CHECK-NEXT:   Size: 075// CHECK-NEXT:   Binding: Global76// CHECK-NEXT:   Type: Function77// CHECK-NEXT:   Other: 078// CHECK-NEXT:   Section: .text79// CHECK-NEXT: }80// CHECK-NEXT: Symbol {81// CHECK-NEXT:   Name: foo82// CHECK-NEXT:   Value: 0x40111083// CHECK-NEXT:   Size: 084// CHECK-NEXT:   Binding: Global85// CHECK-NEXT:   Type: Function86// CHECK-NEXT:   Other: 087// CHECK-NEXT:   Section: .iplt88// CHECK-NEXT: }89// CHECK-NEXT: Symbol {90// CHECK-NEXT:   Name: foo_resolver91// CHECK-NEXT:   Value: 0x4010E592// CHECK-NEXT:   Size: 093// CHECK-NEXT:   Binding: Global94// CHECK-NEXT:   Type: Function95// CHECK-NEXT:   Other: 096// CHECK-NEXT:   Section: .text97// CHECK-NEXT: }98// CHECK-NEXT: Symbol {99// CHECK-NEXT:   Name: _start100// CHECK-NEXT:   Value: 0x4010E6101// CHECK-NEXT:   Size: 0102// CHECK-NEXT:   Binding: Global103// CHECK-NEXT:   Type: None104// CHECK-NEXT:   Other: 0105// CHECK-NEXT:   Section: .text106// CHECK-NEXT: }107// CHECK-NEXT:]108 109// DISASM: Disassembly of section .text:110// DISASM-EMPTY:111// DISASM-NEXT: <bar_resolver>:112// DISASM-NEXT:   4010e4:       retl113// DISASM:      <foo_resolver>:114// DISASM-NEXT:   4010e5:       retl115// DISASM:      <_start>:116// DISASM-NEXT:   4010e6:       calll 0x401110 <foo>117// DISASM-NEXT:                 calll 0x401100 <bar>118// DISASM-NEXT:                 movl $4194516, %edx119// DISASM-NEXT:                 movl $4194532, %edx120// DISASM-EMPTY:121// DISASM-NEXT: Disassembly of section .iplt:122// DISASM-EMPTY:123// DISASM-NEXT: <bar>:124// DISASM-NEXT:   401100:       jmpl *4202784125// DISASM-NEXT:                 pushl $0126// DISASM-NEXT:                 jmp 0x0127// DISASM:      <foo>:128// DISASM-NEXT:   401110:       jmpl *4202788129// DISASM-NEXT:                 pushl $8130// DISASM-NEXT:                 jmp 0x0131 132.type bar STT_GNU_IFUNC133.globl bar134bar:135.type bar_resolver STT_FUNC136.globl bar_resolver137bar_resolver:138 ret139 140.text141.type foo STT_GNU_IFUNC142.globl foo143foo:144.type foo_resolver STT_FUNC145.globl foo_resolver146foo_resolver:147 ret148 149.globl _start150_start:151 call foo152 call bar153 movl $__rel_iplt_start,%edx154 movl $__rel_iplt_end,%edx155