brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · 0f15aea Raw
177 lines · plain
1// REQUIRES: x862// RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux %s -o %t.o3// RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux %p/Inputs/shared.s -o %t2.o4// RUN: ld.lld -shared %t2.o -soname=t2.so -o %t2.so5// RUN: ld.lld %t.o %t2.so -o %t6// RUN: llvm-readobj -S -r %t | FileCheck %s7// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t | FileCheck --check-prefix=DISASM %s8// RUN: ld.lld -shared %t.o %t2.so -o %t9// RUN: llvm-readobj -S -r %t | FileCheck --check-prefix=CHECKSHARED %s10// RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t | FileCheck --check-prefix=DISASMSHARED %s11// RUN: ld.lld -pie %t.o %t2.so -o %t12// RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t | FileCheck --check-prefix=DISASMPIE %s13 14// CHECK:      Name: .plt15// CHECK-NEXT: Type: SHT_PROGBITS16// CHECK-NEXT: Flags [17// CHECK-NEXT:   SHF_ALLOC18// CHECK-NEXT:   SHF_EXECINSTR19// CHECK-NEXT: ]20// CHECK-NEXT: Address: 0x4011E021// CHECK-NEXT: Offset:22// CHECK-NEXT: Size: 4823// CHECK-NEXT: Link: 024// CHECK-NEXT: Info: 025// CHECK-NEXT: AddressAlignment: 1626 27// CHECK:      Name: .got.plt28// CHECK-NEXT: Type: SHT_PROGBITS29// CHECK-NEXT: Flags [30// CHECK-NEXT:   SHF_ALLOC31// CHECK-NEXT:   SHF_WRITE32// CHECK-NEXT: ]33// CHECK-NEXT: Address: 0x40327834// CHECK-NEXT: Offset: 0x27835// CHECK-NEXT: Size: 2036// CHECK-NEXT: Link: 037// CHECK-NEXT: Info: 038// CHECK-NEXT: AddressAlignment: 439// CHECK-NEXT: EntrySize: 040 41// First 3 slots of .got.plt are reserved.42// &.got.plt[3] = 0x403278 + 12 = 0x40328443// &.got.plt[4] = 0x403278 + 16 = 0x40328844// CHECK:      Relocations [45// CHECK-NEXT:   Section ({{.*}}) .rel.plt {46// CHECK-NEXT:     0x403284 R_386_JUMP_SLOT bar47// CHECK-NEXT:     0x403288 R_386_JUMP_SLOT zed48// CHECK-NEXT:   }49// CHECK-NEXT: ]50 51// DISASM:       <local>:52// DISASM-NEXT:  4011bc:53// DISASM-NEXT:  4011be:54// DISASM:       <_start>:55// DISASM-NEXT: 4011c0:       jmp 0x4011f0 <bar@plt>56// DISASM-NEXT: 4011c5:       jmp 0x4011f0 <bar@plt>57// DISASM-NEXT: 4011ca:       jmp 0x401200 <zed@plt>58// DISASM-NEXT: 4011cf:       jmp 0x4011bc <local>59 60// DISASM:      Disassembly of section .plt:61// DISASM-EMPTY:62// DISASM-NEXT: <.plt>:63/// Push .got.plt[1], then jump to .got.plt[2]64// DISASM-NEXT: 4011e0:       pushl 0x40327c65// DISASM-NEXT:               jmpl *0x40328066// DISASM-NEXT:               nop67// DISASM-NEXT:               nop68// DISASM-NEXT:               nop69// DISASM-NEXT:               nop70// DISASM-EMPTY:71// DISASM-NEXT: <bar@plt>:72/// .got.plt[3] = 0x403278 + 12 = 0x40328473// DISASM-NEXT: 4011f0:       jmpl *0x40328474// DISASM-NEXT:               pushl $0x075// DISASM-NEXT:               jmp 0x4011e0 <.plt>76// DISASM-EMPTY:77// DISASM-NEXT: <zed@plt>:78/// .got.plt[4] = 0x403278 + 16 = 0x40328879// DISASM-NEXT: 401200:       jmpl *0x40328880// DISASM-NEXT:               pushl $0x881// DISASM-NEXT:               jmp 0x4011e0 <.plt>82 83// CHECKSHARED:        Name: .plt84// CHECKSHARED-NEXT:   Type: SHT_PROGBITS85// CHECKSHARED-NEXT:   Flags [86// CHECKSHARED-NEXT:     SHF_ALLOC87// CHECKSHARED-NEXT:     SHF_EXECINSTR88// CHECKSHARED-NEXT:   ]89// CHECKSHARED-NEXT:   Address: 0x120090// CHECKSHARED-NEXT:   Offset: 0x20091// CHECKSHARED-NEXT:   Size: 4892// CHECKSHARED-NEXT:   Link: 093// CHECKSHARED-NEXT:   Info: 094// CHECKSHARED-NEXT:   AddressAlignment: 1695// CHECKSHARED-NEXT:   EntrySize: 096// CHECKSHARED-NEXT:   }97// CHECKSHARED:        Name: .got.plt98// CHECKSHARED-NEXT:   Type: SHT_PROGBITS99// CHECKSHARED-NEXT:   Flags [100// CHECKSHARED-NEXT:     SHF_ALLOC101// CHECKSHARED-NEXT:     SHF_WRITE102// CHECKSHARED-NEXT:   ]103// CHECKSHARED-NEXT:   Address: 0x3290104// CHECKSHARED-NEXT:   Offset: 0x290105// CHECKSHARED-NEXT:   Size: 20106// CHECKSHARED-NEXT:   Link: 0107// CHECKSHARED-NEXT:   Info: 0108// CHECKSHARED-NEXT:   AddressAlignment: 4109// CHECKSHARED-NEXT:   EntrySize: 0110// CHECKSHARED-NEXT:   }111 112// 0x3000 + got.plt.reserved(12) = 0x300C113// 0x3000 + got.plt.reserved(12) + 4 = 0x3010114// CHECKSHARED:        Relocations [115// CHECKSHARED-NEXT:     Section ({{.*}}) .rel.plt {116// CHECKSHARED-NEXT:       0x329C R_386_JUMP_SLOT bar117// CHECKSHARED-NEXT:       0x32A0 R_386_JUMP_SLOT zed118// CHECKSHARED-NEXT:     }119// CHECKSHARED-NEXT:   ]120 121// DISASMSHARED:      <local>:122// DISASMSHARED-NEXT: 11e0:123// DISASMSHARED-NEXT: 11e2:124// DISASMSHARED:      <_start>:125// DISASMSHARED-NEXT: 11e4:       jmp 0x1210 <bar@plt>126// DISASMSHARED-NEXT:             jmp 0x1210 <bar@plt>127// DISASMSHARED-NEXT:             jmp 0x1220 <zed@plt>128// DISASMSHARED-NEXT:             jmp 0x11e0 <local>129// DISASMSHARED-EMPTY:130// DISASMSHARED-NEXT: Disassembly of section .plt:131// DISASMSHARED-EMPTY:132// DISASMSHARED-NEXT: <.plt>:133// DISASMSHARED-NEXT: 1200:       pushl 4(%ebx)134// DISASMSHARED-NEXT:             jmpl *8(%ebx)135// DISASMSHARED-NEXT:             nop136// DISASMSHARED-NEXT:             nop137// DISASMSHARED-NEXT:             nop138// DISASMSHARED-NEXT:             nop139// DISASMSHARED:      <bar@plt>:140// DISASMSHARED-NEXT: 1210:       jmpl *12(%ebx)141// DISASMSHARED-NEXT:             pushl $0142// DISASMSHARED-NEXT:             jmp 0x1200 <.plt>143// DISASMSHARED:      <zed@plt>:144// DISASMSHARED-NEXT: 1220:       jmpl *16(%ebx)145// DISASMSHARED-NEXT:             pushl $8146// DISASMSHARED-NEXT:             jmp 0x1200 <.plt>147 148// DISASMPIE:      Disassembly of section .plt:149// DISASMPIE-EMPTY:150// DISASMPIE-NEXT: <.plt>:151// DISASMPIE-NEXT: 11e0:       pushl 4(%ebx)152// DISASMPIE-NEXT:             jmpl *8(%ebx)153// DISASMPIE-NEXT:             nop154// DISASMPIE-NEXT:             nop155// DISASMPIE-NEXT:             nop156// DISASMPIE-NEXT:             nop157// DISASMPIE-EMPTY:158// DISASMPIE-NEXT: <bar@plt>:159// DISASMPIE-NEXT: 11f0:       jmpl *12(%ebx)160// DISASMPIE-NEXT:             pushl $0161// DISASMPIE-NEXT:             jmp 0x11e0 <.plt>162// DISASMPIE-EMPTY:163// DISASMPIE-NEXT: <zed@plt>:164// DISASMPIE-NEXT: 1200:       jmpl *16(%ebx)165// DISASMPIE-NEXT:             pushl $8166// DISASMPIE-NEXT:             jmp 0x11e0 <.plt>167 168local:169.long 0170 171.global _start172_start:173  jmp bar@PLT174  jmp bar@PLT175  jmp zed@PLT176  jmp local@plt177