brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 420df72 Raw
149 lines · plain
1// REQUIRES: aarch642// RUN: llvm-mc -filetype=obj -triple=aarch64-pc-freebsd %s -o %t.o3// RUN: llvm-mc -filetype=obj -triple=aarch64-pc-freebsd %p/Inputs/plt-aarch64.s -o %t2.o4// RUN: ld.lld -shared %t2.o -soname=t2.so -o %t2.so5// RUN: ld.lld -shared %t.o %t2.so -o %t.so6// RUN: ld.lld %t.o %t2.so -o %t.exe7// RUN: llvm-readelf -S -r %t.so | FileCheck --check-prefix=CHECKDSO %s8// RUN: llvm-objdump -s --section=.got.plt %t.so | FileCheck --check-prefix=DUMPDSO %s9// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.so | FileCheck --check-prefix=DISASMDSO %s10// RUN: llvm-readelf -S -r %t.exe | FileCheck --check-prefix=CHECKEXE %s11// RUN: llvm-objdump -s --section=.got.plt %t.exe | FileCheck --check-prefix=DUMPEXE %s12// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.exe | FileCheck --check-prefix=DISASMEXE %s13 14// CHECKDSO-LABEL: Section Headers:15///          Name     Type     Address          Off    Size   ES Flg Lk Inf Al16// CHECKDSO: .plt     PROGBITS 0000000000010340 000340 000050 00 AXy  0   0 1617// CHECKDSO: .got.plt PROGBITS 0000000000030450 000450 000030 00  WA  0   0  818 19// CHECKDSO-LABEL: Relocation section '.rela.plt' at offset 0x2e8 contains 3 entries:20// CHECKDSO-NEXT:      Offset             Info             Type            Symbol's Value  Symbol's Name + Addend21/// &(.got.plt[3]) = 0x30450 + 3 * 8 = 0x3046822// CHECKDSO-NEXT:  0000000000030468  0000000400000402 R_AARCH64_JUMP_SLOT 000000000001033c foo + 023/// &(.got.plt[4]) = 0x30450 + 4 * 8 = 0x3047024// CHECKDSO-NEXT:  0000000000030470  0000000100000402 R_AARCH64_JUMP_SLOT 0000000000000000 bar + 025/// &(.got.plt[5]) = 0x30000 + 5 * 8 = 0x3047826// CHECKDSO-NEXT:  0000000000030478  0000000200000402 R_AARCH64_JUMP_SLOT 0000000000000000 weak + 027 28// DUMPDSO: Contents of section .got.plt:29// .got.plt[0..2] = 0 (reserved)30// .got.plt[3..5] = .plt = 0x1001031// DUMPDSO-NEXT: 30450 00000000 00000000 00000000 0000000032// DUMPDSO-NEXT: 30460 00000000 00000000 40030100 0000000033// DUMPDSO-NEXT: 30470 40030100 00000000 40030100 0000000034 35// DISASMDSO: <_start>:36// DISASMDSO-NEXT:     10330: b       0x10360 <foo@plt>37// DISASMDSO-NEXT:     10334: b       0x10370 <bar@plt>38// DISASMDSO-NEXT:     10338: b       0x10380 <weak@plt>39 40// DISASMDSO: <foo>:41// DISASMDSO-NEXT:     1033c: nop42 43// DISASMDSO: Disassembly of section .plt:44// DISASMDSO-EMPTY:45// DISASMDSO-NEXT: <.plt>:46// DISASMDSO-NEXT:     10340: stp     x16, x30, [sp, #-0x10]!47// &(.got.plt[2]) = 0x30450 + 2 * 8 = 0x3046048// DISASMDSO-NEXT:     10344: adrp    x16, 0x3000049// DISASMDSO-NEXT:     10348: ldr     x17, [x16, #0x460]50// DISASMDSO-NEXT:     1034c: add     x16, x16, #0x46051// DISASMDSO-NEXT:     10350: br      x1752// DISASMDSO-NEXT:     10354: nop53// DISASMDSO-NEXT:     10358: nop54// DISASMDSO-NEXT:     1035c: nop55 56// foo@plt 0x3046857// &.got.plt[foo] = 0x3046858// DISASMDSO-EMPTY:59// DISASMDSO-NEXT:   <foo@plt>:60// DISASMDSO-NEXT:     10360: adrp    x16, 0x3000061// DISASMDSO-NEXT:     10364: ldr     x17, [x16, #0x468]62// DISASMDSO-NEXT:     10368: add     x16, x16, #0x46863// DISASMDSO-NEXT:     1036c: br      x1764 65// bar@plt66// &.got.plt[foo] = 0x3047067// DISASMDSO-EMPTY:68// DISASMDSO-NEXT:   <bar@plt>:69// DISASMDSO-NEXT:     10370: adrp    x16, 0x3000070// DISASMDSO-NEXT:     10374: ldr     x17, [x16, #0x470]71// DISASMDSO-NEXT:     10378: add     x16, x16, #0x47072// DISASMDSO-NEXT:     1037c: br      x1773 74// weak@plt75// 0x30468 = 0x10000 + 131072 + 112876// DISASMDSO-EMPTY:77// DISASMDSO-NEXT:   <weak@plt>:78// DISASMDSO-NEXT:     10380: adrp    x16, 0x3000079// DISASMDSO-NEXT:     10384: ldr     x17, [x16, #0x478]80// DISASMDSO-NEXT:     10388: add     x16, x16, #0x47881// DISASMDSO-NEXT:     1038c: br      x1782 83// CHECKEXE-LABEL: Section Headers:84///          Name     Type     Address          Off    Size   ES Flg Lk Inf Al85// CHECKEXE: .plt     PROGBITS 00000000002102e0 0002e0 000040 00 AXy  0   0 1686// CHECKEXE: .got.plt PROGBITS 00000000002303f0 0003f0 000028 00  WA  0   0  887 88// CHECKEXE-LABEL: Relocation section '.rela.plt' at offset 0x298 contains 2 entries:89// CHECKEXE-NEXT:      Offset             Info             Type               Symbol's Value  Symbol's Name + Addend90/// &(.got.plt[3]) = 0x2303f0 + 3 * 8 = 0x23040891// CHECKEXE-NEXT:  0000000000230408  0000000100000402 R_AARCH64_JUMP_SLOT    0000000000000000 bar + 092/// &(.got.plt[4]) = 0x2303f0 + 4 * 8 = 0x23041093// CHECKEXE-NEXT:  0000000000230410  0000000200000402 R_AARCH64_JUMP_SLOT    0000000000000000 weak + 094 95// DUMPEXE: Contents of section .got.plt:96// .got.plt[0..2] = 0 (reserved)97// .got.plt[3..4] = .plt = 0x4001098// DUMPEXE-NEXT:  2303f0 00000000 00000000 00000000 0000000099// DUMPEXE-NEXT:  230400 00000000 00000000 e0022100 00000000100// DUMPEXE-NEXT:  230410 e0022100 00000000101 102// DISASMEXE: <_start>:103// DISASMEXE-NEXT:    2102c8: b 0x2102d4 <foo>104// DISASMEXE-NEXT:    2102cc: b 0x210300 <bar@plt>105// DISASMEXE-NEXT:    2102d0: b 0x210310 <weak@plt>106 107// DISASMEXE: <foo>:108// DISASMEXE-NEXT:    2102d4: nop109 110// DISASMEXE: Disassembly of section .plt:111// DISASMEXE-EMPTY:112// DISASMEXE-NEXT: <.plt>:113// DISASMEXE-NEXT:    2102e0: stp     x16, x30, [sp, #-0x10]!114// &(.got.plt[2]) = 0x2303f0 + 2 * 8 = 0x230400115// DISASMEXE-NEXT:    2102e4: adrp    x16, 0x230000116// DISASMEXE-NEXT:    2102e8: ldr     x17, [x16, #0x400]117// DISASMEXE-NEXT:    2102ec: add     x16, x16, #0x400118// DISASMEXE-NEXT:    2102f0: br      x17119// DISASMEXE-NEXT:    2102f4: nop120// DISASMEXE-NEXT:    2102f8: nop121// DISASMEXE-NEXT:    2102fc: nop122 123// bar@plt124// DISASMEXE-EMPTY:125// DISASMEXE-NEXT:   <bar@plt>:126// DISASMEXE-NEXT:    210300: adrp    x16, 0x230000127// DISASMEXE-NEXT:    210304: ldr     x17, [x16, #0x408]128// DISASMEXE-NEXT:    210308: add     x16, x16, #0x408129// DISASMEXE-NEXT:    21030c: br      x17130 131// weak@plt132// DISASMEXE-EMPTY:133// DISASMEXE-NEXT:   <weak@plt>:134// DISASMEXE-NEXT:    210310: adrp    x16, 0x230000135// DISASMEXE-NEXT:    210314: ldr     x17, [x16, #0x410]136// DISASMEXE-NEXT:    210318: add     x16, x16, #0x410137// DISASMEXE-NEXT:    21031c: br      x17138 139.global _start,foo,bar140.weak weak141_start:142  b foo143  b bar144  b weak145 146.section .text2,"ax",@progbits147foo:148  nop149