[test] Migrate Hexagon/PowerPC thunk tests to the default thunk order (#212693)

Drop -z nosort-thunks (added by #211721 to keep creation order) and
update expectations to the default order: forward thunks sorted by
descending destination.
This commit is contained in:
Fangrui Song 2026-07-29 00:01:49 -07:00 committed by GitHub
parent 52f6c88c2c
commit 3df3102da5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 135 additions and 126 deletions

View file

@ -1,7 +1,7 @@
# REQUIRES: hexagon
# RUN: rm -rf %t && split-file %s %t && cd %t
# RUN: llvm-mc -filetype=obj -triple=hexagon-unknown-elf main.s -o main.o
# RUN: ld.lld -z nosort-thunks main.o -o test
# RUN: ld.lld main.o -o test
# RUN: llvm-objdump -d --no-show-raw-insn test | FileCheck %s
## Test thunk range scenarios for Hexagon R_HEX_B22_PCREL relocations.
@ -66,14 +66,14 @@ target_beyond_range_min:
jumpr r31
## Verify thunk generation for targets beyond B22_PCREL range
# CHECK: <__hexagon_thunk_target_within_range_min_from_.text.thunk>:
# CHECK-NEXT: 200b4: { immext(#0x900000)
# CHECK-NEXT: jump 0x9200cc <target_within_range_min> }
# CHECK: <__hexagon_thunk_target_beyond_range_min_from_.text.thunk>:
# CHECK-NEXT: 200bc: { immext(#0x1100000)
# CHECK-NEXT: 200b4: { immext(#0x1100000)
# CHECK-NEXT: jump 0x11200c8 <target_beyond_range_min> }
# CHECK: <__hexagon_thunk_target_within_range_min_from_.text.thunk>:
# CHECK-NEXT: 200bc: { immext(#0x900000)
# CHECK-NEXT: jump 0x9200cc <target_within_range_min> }
# CHECK: <__hexagon_thunk_target_multiple_calls_from_.text.thunk>:
# CHECK-NEXT: 200c4: { immext(#0x8fffc0)
# CHECK-NEXT: jump 0x9200c0 <target_multiple_calls> }
@ -82,8 +82,8 @@ target_beyond_range_min:
# CHECK: <_start>:
# CHECK-NEXT: 200cc: { call 0x8200ac <target_within_range_max> }
# CHECK-NEXT: { call 0x8200b8 <target_beyond_range> }
# CHECK-NEXT: { call 0x200b4 <__hexagon_thunk_target_within_range_min_from_.text.thunk> }
# CHECK-NEXT: { call 0x200bc <__hexagon_thunk_target_beyond_range_min_from_.text.thunk> }
# CHECK-NEXT: { call 0x200bc <__hexagon_thunk_target_within_range_min_from_.text.thunk> }
# CHECK-NEXT: { call 0x200b4 <__hexagon_thunk_target_beyond_range_min_from_.text.thunk> }
# CHECK-NEXT: { call 0x200c4 <__hexagon_thunk_target_multiple_calls_from_.text.thunk> }
# CHECK-NEXT: { call 0x200c4 <__hexagon_thunk_target_multiple_calls_from_.text.thunk> }
# CHECK-NEXT: { call 0x200ec <target_close> }

View file

@ -1,10 +1,10 @@
# REQUIRES: ppc
# RUN: llvm-mc -filetype=obj -triple=powerpc %s -o %t.o
# RUN: echo '.globl f, g, h; f: g: h:' | llvm-mc -filetype=obj -triple=powerpc - -o %t1.o
# RUN: ld.lld -z nosort-thunks -shared %t1.o -soname t1.so -o %t1.so
# RUN: ld.lld -shared %t1.o -soname t1.so -o %t1.so
## Check we can create PLT entries for -fno-PIE executable.
# RUN: ld.lld -z nosort-thunks %t.o %t1.so -o %t
# RUN: ld.lld %t.o %t1.so -o %t
# RUN: llvm-readobj -r -d %t | FileCheck --check-prefix=RELOC %s
# RUN: llvm-readelf -S %t | FileCheck --check-prefix=SEC %s
# RUN: llvm-readelf -x .plt %t | FileCheck --check-prefix=HEX %s
@ -20,27 +20,27 @@
## .got2+0x8000-0x10004 = 0x30000+0x8000-0x10004 = 65536*2+32764
# CHECK-LABEL: <_start>:
# CHECK-NEXT: bl 0x100101d0
# CHECK-NEXT: bl 0x100101d0
# CHECK-NEXT: bl 0x100101e0
# CHECK-NEXT: bl 0x100101e0
# CHECK-NEXT: bl 0x100101d0
# CHECK-NEXT: bl 0x100101d0
# CHECK-EMPTY:
## -fno-PIC call stubs of f and g.
## .plt[0] = 0x100302c4 = 65536*4099+708
## .plt[1] = 0x100302c8 = 65536*4099+712
# CHECK-NEXT: <00000000.plt_call32.f>:
# CHECK-NEXT: lis 11, 4099
# CHECK-NEXT: lwz 11, 708(11)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-EMPTY:
# CHECK-NEXT: <00000000.plt_call32.g>:
# CHECK-NEXT: lis 11, 4099
# CHECK-NEXT: lwz 11, 712(11)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-EMPTY:
# CHECK-NEXT: <00000000.plt_call32.f>:
# CHECK-NEXT: lis 11, 4099
# CHECK-NEXT: lwz 11, 708(11)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-EMPTY:
## In Secure PLT ABI, .plt stores function pointers to first instructions of .glink
# HEX: 0x100302c4 10010200 10010204

View file

@ -1,11 +1,11 @@
# REQUIRES: ppc
# RUN: llvm-mc -filetype=obj -triple=powerpc %s -o %t.o
# RUN: echo '.globl f, g, h; f: g: h:' | llvm-mc -filetype=obj -triple=powerpc - -o %t1.o
# RUN: ld.lld -z nosort-thunks -shared %t1.o -soname t1.so -o %t1.so
# RUN: ld.lld -shared %t1.o -soname t1.so -o %t1.so
# RUN: echo 'bl f+0x8000@plt' | llvm-mc -filetype=obj -triple=powerpc - -o %t2.o
## Check we can create PLT entries for -fPIE or -fpie executable.
# RUN: ld.lld -z nosort-thunks -pie %t.o %t1.so %t2.o -o %t
# RUN: ld.lld -pie %t.o %t1.so %t2.o -o %t
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
# RUN: llvm-readobj -d %t | FileCheck --check-prefix=DYN %s
# RUN: llvm-readelf -S %t | FileCheck --check-prefix=SEC %s
@ -13,7 +13,7 @@
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefixes=CHECK,PIE %s
## Check we can create PLT entries for -fPIC or -fpic DSO.
# RUN: ld.lld -z nosort-thunks -shared %t.o %t1.so %t2.o -o %t
# RUN: ld.lld -shared %t.o %t1.so %t2.o -o %t
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefixes=CHECK,SHARED %s
@ -41,54 +41,40 @@
# PIE-NEXT: bl 0x10244
# PIE-NEXT: bl 0x10244
## Two bl 00008000.got2.plt_pic32.g
# PIE-NEXT: bl 0x10254
# PIE-NEXT: bl 0x10254
# PIE-NEXT: bl 0x10284
# PIE-NEXT: bl 0x10284
## Two bl 00008000.got2.plt_pic32.h
# PIE-NEXT: bl 0x10264
# PIE-NEXT: bl 0x10264
# PIE-NEXT: bl 0x10274
# PIE-NEXT: bl 0x10274
# PIE-NEXT: addis 30, 30, {{.*}}
# PIE-NEXT: addi 30, 30, {{.*}}
## bl 00008000.plt_pic32.f
# PIE-NEXT: bl 0x10274
## bl 00008000.plt_pic32.f
# PIE-NEXT: bl 0x10284
## bl 00000000.plt_pic32.f
# PIE-NEXT: bl 0x10254
## bl 00008000.got2.plt_pic32.f
# PIE-NEXT: bl 0x10264
# SHARED-NEXT: bcl 20, 31, 0x10230
# SHARED-NEXT: 10230: mflr 30
# SHARED-NEXT: addis 30, 30, 3
# SHARED-NEXT: addi 30, 30, -32420
# SHARED-NEXT: bl 0x10264
# SHARED-NEXT: bl 0x10264
# SHARED-NEXT: bl 0x10274
# SHARED-NEXT: bl 0x10274
# SHARED-NEXT: bl 0x10284
# SHARED-NEXT: bl 0x10284
# SHARED-NEXT: bl 0x102a4
# SHARED-NEXT: bl 0x102a4
# SHARED-NEXT: bl 0x10294
# SHARED-NEXT: bl 0x10294
# SHARED-NEXT: addis 30, 30, {{.*}}
# SHARED-NEXT: addi 30, 30, {{.*}}
# SHARED-NEXT: bl 0x10294
# SHARED-NEXT: bl 0x102a4
# SHARED-NEXT: bl 0x10274
# SHARED-NEXT: bl 0x10284
# CHECK-EMPTY:
## -fPIC call stubs of f and g.
## -fPIC call stub of f.
# CHECK-NEXT: <00008000.got2.plt_pic32.f>:
# CHECK-NEXT: lwz 11, 32760(30)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-NEXT: nop
# CHECK-EMPTY:
# CHECK-NEXT: <00008000.got2.plt_pic32.g>:
# CHECK-NEXT: lwz 11, 32764(30)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-NEXT: nop
# CHECK-EMPTY:
## The -fPIC call stub of h needs two instructions addis+lwz to represent the offset 65536*1-32768.
# CHECK-NEXT: <00008000.got2.plt_pic32.h>:
# CHECK-NEXT: addis 11, 30, 1
# CHECK-NEXT: lwz 11, -32768(11)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-EMPTY:
## -fpic call stub of f.
# CHECK-NEXT: <00000000.plt_pic32.f>:
@ -102,6 +88,27 @@
## .got2 may have different addresses in different object files,
## so the call stub cannot be shared.
# CHECK-NEXT: <00008000.got2.plt_pic32.f>:
# CHECK-NEXT: lwz 11, 32760(30)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-NEXT: nop
# CHECK-EMPTY:
## The -fPIC call stub of h needs two instructions addis+lwz to represent the offset 65536*1-32768.
# CHECK-NEXT: <00008000.got2.plt_pic32.h>:
# CHECK-NEXT: addis 11, 30, 1
# CHECK-NEXT: lwz 11, -32768(11)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-EMPTY:
## -fPIC call stub of g.
# CHECK-NEXT: <00008000.got2.plt_pic32.g>:
# CHECK-NEXT: lwz 11, 32764(30)
# CHECK-NEXT: mtctr 11
# CHECK-NEXT: bctr
# CHECK-NEXT: nop
# CHECK-EMPTY:
## In Secure PLT ABI, .plt stores function pointers to first instructions of .glink
# HEX: 0x00040374 00010294 00010298 0001029c

View file

@ -5,12 +5,12 @@
# RUN: }' > %t.script
# RUN: llvm-mc -filetype=obj -triple=powerpc %s -o %t.o
# RUN: ld.lld -z nosort-thunks -T %t.script %t.o -o %t
# RUN: ld.lld -T %t.script %t.o -o %t
# RUN: llvm-readelf -r %t | FileCheck --check-prefix=SEC %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefixes=CHECK,PD %s
# RUN: llvm-nm --no-sort %t | FileCheck --check-prefix=NM %s
# RUN: ld.lld -z nosort-thunks -T %t.script -pie %t.o -o %t
# RUN: ld.lld -T %t.script -pie %t.o -o %t
# RUN: llvm-readelf -r %t | FileCheck --check-prefix=SEC %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefixes=CHECK,PI %s
# RUN: llvm-nm --no-sort %t | FileCheck --check-prefix=NM %s
@ -18,45 +18,47 @@
# SEC: There are no relocations in this file.
# CHECK: <_start>:
# CHECK-NEXT: 2000: bl 0x2018
# CHECK-NEXT: bl 0x2018
# CHECK-NEXT: bl 0x2018
# CHECK-NEXT: bl 0x2002008
# PD-NEXT: 2000: bl 0x2028
# PD-NEXT: bl 0x2028
# PD-NEXT: bl 0x2028
# PI-NEXT: 2000: bl 0x2038
# PI-NEXT: bl 0x2038
## high = 0x02002008 = 65536*512+8200
# PD: <__LongThunk_high>:
# PD-NEXT: 2018: lis 12, 512
# PD-NEXT: addi 12, 12, 8200
# PD-NEXT: mtctr 12
# PD-NEXT: bctr
# PI-NEXT: bl 0x2038
# CHECK-NEXT: bl 0x2002008
# CHECK-NEXT: bl 0x2018
## .text_high+16 = 0x02002010 = 65536*512+8208
# PD: <__LongThunk_>:
# PD-NEXT: 2028: lis 12, 512
# PD-NEXT: 2018: lis 12, 512
# PD-NEXT: addi 12, 12, 8208
# PD-NEXT: mtctr 12
# PD-NEXT: bctr
## high-0x2028 = 0x02002008-0x2020 = 65536*512-24
# PI: <__LongThunk_high>:
## high = 0x02002008 = 65536*512+8200
# PD: <__LongThunk_high>:
# PD-NEXT: 2028: lis 12, 512
# PD-NEXT: addi 12, 12, 8200
# PD-NEXT: mtctr 12
# PD-NEXT: bctr
## .text_high+16-0x2020 = 0x02002010-0x2020 = 65536*512-16
# PI: <__LongThunk_>:
# PI-NEXT: 2018: mflr 0
# PI-NEXT: bcl 20, 31, 0x2020
# PI-NEXT: 2020: mflr 12
# PI-NEXT: addis 12, 12, 512
# PI-NEXT: addi 12, 12, -24
# PI-NEXT: addi 12, 12, -16
# PI-NEXT: mtlr 0
# PI-NEXT: mtctr 12
# PI-NEXT: bctr
## .text_high+16-0x2048 = 0x02002010-0x2048 = 65536*512-48
# PI: <__LongThunk_>:
## high-0x2040 = 0x02002008-0x2040 = 65536*512-56
# PI: <__LongThunk_high>:
# PI-NEXT: 2038: mflr 0
# PI-NEXT: bcl 20, 31, 0x2040
# PI-NEXT: 2040: mflr 12
# PI-NEXT: addis 12, 12, 512
# PI-NEXT: addi 12, 12, -48
# PI-NEXT: addi 12, 12, -56
# PI-NEXT: mtlr 0
# PI-NEXT: mtctr 12
# PI-NEXT: bctr

View file

@ -1,37 +1,37 @@
# REQUIRES: ppc
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o
# RUN: ld.lld -z nosort-thunks --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: ld.lld --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: -z separate-code %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: ld.lld -z nosort-thunks --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: ld.lld --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: -z separate-code %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: ld.lld -z nosort-thunks --defsym callee=0xE010014 --defsym tail_callee=0xE010024 \
# RUN: ld.lld --defsym callee=0xE010014 --defsym tail_callee=0xE010024 \
# RUN: -z separate-code %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=NEGOFFSET %s
# RUN: ld.lld -z nosort-thunks --defsym callee=0x12010018 --defsym tail_callee=0x12010028 \
# RUN: ld.lld --defsym callee=0x12010018 --defsym tail_callee=0x12010028 \
# RUN: -z separate-code %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=THUNK %s
# RUN: llvm-readelf --sections %t | FileCheck --check-prefix=BRANCHLT %s
# RUN: not ld.lld -z nosort-thunks --defsym callee=0x1001002D --defsym tail_callee=0x1001002F \
# RUN: not ld.lld --defsym callee=0x1001002D --defsym tail_callee=0x1001002F \
# RUN: -z separate-code %t.o -o %t 2>&1 | FileCheck --check-prefix=MISSALIGNED %s
# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
# RUN: ld.lld -z nosort-thunks --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: ld.lld --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: -z separate-code %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: ld.lld -z nosort-thunks --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: ld.lld --defsym callee=0x12010010 --defsym tail_callee=0x12010020 \
# RUN: -z separate-code %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: ld.lld -z nosort-thunks --defsym callee=0xE010014 --defsym tail_callee=0xE010024 \
# RUN: ld.lld --defsym callee=0xE010014 --defsym tail_callee=0xE010024 \
# RUN: -z separate-code %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=NEGOFFSET %s
# RUN: ld.lld -z nosort-thunks --defsym callee=0x12010018 --defsym tail_callee=0x12010028 \
# RUN: ld.lld --defsym callee=0x12010018 --defsym tail_callee=0x12010028 \
# RUN: -z separate-code %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=THUNK %s
# RUN: llvm-readelf --sections %t | FileCheck --check-prefix=BRANCHLT %s
# RUN: not ld.lld -z nosort-thunks --defsym callee=0x1001002D --defsym tail_callee=0x1001002F \
# RUN: not ld.lld --defsym callee=0x1001002D --defsym tail_callee=0x1001002F \
# RUN: -z separate-code %t.o -o %t 2>&1 | FileCheck --check-prefix=MISSALIGNED %s
# MISSALIGNED: ld.lld: error: {{.*}}.o:(.text+0x14): improper alignment for relocation R_PPC64_REL24: 0x19 is not aligned to 4 bytes
@ -66,20 +66,20 @@ test:
# NEGOFFSET: 10010024: b 0xe010024
# THUNK-LABEL: <test>:
# THUNK: 10010014: bl 0x10010030
# THUNK: 10010024: b 0x10010050
# THUNK: 10010014: bl 0x10010050
# THUNK: 10010024: b 0x10010030
# .branch_lt[0]
# THUNK-LABEL: <__long_branch_callee>:
# THUNK-LABEL: <__long_branch_tail_callee>:
# THUNK-NEXT: 10010030: addis 12, 2, 1
# THUNK-NEXT: ld 12, -32760(12)
# THUNK-NEXT: ld 12, -32752(12)
# THUNK-NEXT: mtctr 12
# THUNK-NEXT: bctr
# .branch_lt[1]
# THUNK-LABEL: <__long_branch_tail_callee>:
# THUNK-LABEL: <__long_branch_callee>:
# THUNK-NEXT: 10010050: addis 12, 2, 1
# THUNK-NEXT: ld 12, -32752(12)
# THUNK-NEXT: ld 12, -32760(12)
# THUNK-NEXT: mtctr 12
# THUNK-NEXT: bctr

View file

@ -1,7 +1,7 @@
# REQUIRES: ppc
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o
# RUN: ld.lld -z nosort-thunks %t.o -o %t
# RUN: ld.lld %t.o -o %t
# RUN: llvm-readelf -s %t | FileCheck --check-prefix=SYM %s
# RUN: llvm-readelf -S %t | FileCheck --check-prefix=SECTIONS %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
@ -9,7 +9,7 @@
# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
## IRELATIVE relocs relocating NOBITS .plt do not cause --check-dynamic-relocations errors.
# RUN: ld.lld -z nosort-thunks %t.o -o %t --apply-dynamic-relocs --check-dynamic-relocations
# RUN: ld.lld %t.o -o %t --apply-dynamic-relocs --check-dynamic-relocations
# RUN: llvm-readelf -s %t | FileCheck --check-prefix=SYM %s
# RUN: llvm-readelf -S %t | FileCheck --check-prefix=SECTIONS %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
@ -28,23 +28,15 @@
# CHECK: <_start>:
# CHECK-NEXT: addis 2, 12, 2
# CHECK-NEXT: addi 2, 2, -32636
# CHECK-NEXT: 1001021c: bl 0x10010240
# CHECK-NEXT: 1001021c: bl 0x10010254
# CHECK-NEXT: ld 2, 24(1)
# CHECK-NEXT: 10010224: bl 0x10010254
# CHECK-NEXT: 10010224: bl 0x10010240
# CHECK-NEXT: ld 2, 24(1)
# CHECK-NEXT: addis 3, 2, -2
# CHECK-NEXT: addi 3, 3, 32720
# CHECK-NEXT: addis 3, 2, -2
# CHECK-NEXT: addi 3, 3, 32752
# .plt[1] - .TOC. = 0x100302a0+8 - 0x10028298 = (1<<16) - 32752
# CHECK: <__plt_ifunc2>:
# CHECK-NEXT: std 2, 24(1)
# CHECK-NEXT: addis 12, 2, 1
# CHECK-NEXT: ld 12, -32752(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
# .plt[2] - .TOC. = 0x100302a0+16 - 0x10028298 = (1<<16) - 32744
# CHECK: <__plt_ifunc3>:
# CHECK-NEXT: std 2, 24(1)
@ -52,6 +44,14 @@
# CHECK-NEXT: ld 12, -32744(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
# .plt[1] - .TOC. = 0x100302a0+8 - 0x10028298 = (1<<16) - 32752
# CHECK: <__plt_ifunc2>:
# CHECK-NEXT: std 2, 24(1)
# CHECK-NEXT: addis 12, 2, 1
# CHECK-NEXT: ld 12, -32752(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
# CHECK-EMPTY:
## .glink has 3 IPLT entries for ifunc1, ifunc2 and ifunc3.

View file

@ -4,13 +4,13 @@
# RUN: .text_low 0x2000: { *(.text_low) } \
# RUN: .text_high 0x2002000 : { *(.text_high) } \
# RUN: }' > %t.script
# RUN: ld.lld -z nosort-thunks -pie -T %t.script %t.o -o %t
# RUN: ld.lld -pie -T %t.script %t.o -o %t
# RUN: llvm-readelf -S %t | FileCheck --check-prefix=SEC-PIE %s
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
## RELATIVE relocs relocating NOBITS .branch_lt do not cause --check-dynamic-relocations errors.
# RUN: ld.lld -z nosort-thunks -shared -T %t.script %t.o -o %t.so --apply-dynamic-relocs --check-dynamic-relocations
# RUN: ld.lld -shared -T %t.script %t.o -o %t.so --apply-dynamic-relocs --check-dynamic-relocations
# RUN: llvm-readelf -S %t.so | FileCheck --check-prefix=SEC-SHARED %s
# RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck %s
@ -32,15 +32,15 @@
# RELOC-NEXT: }
# CHECK: <_start>:
# CHECK-NEXT: 2000: bl 0x2010
# CHECK-NEXT: 2000: bl 0x2050
# CHECK-NEXT: bl 0x2002000
# CHECK-NEXT: bl 0x2030
# CHECK-NEXT: bl 0x2050
# CHECK-NEXT: bl 0x2010
## &.branch_lt[0] - .TOC. = .branch_lt - (.got+0x8000) = -32744
## &.branch_lt[2] - .TOC. = .branch_lt - (.got+0x8000) = -32728
# CHECK: <__long_branch_>:
# CHECK-NEXT: 2010: addis 12, 2, 0
# CHECK-NEXT: ld 12, -32744(12)
# CHECK-NEXT: ld 12, -32728(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
@ -51,10 +51,10 @@
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
## &.branch_lt[2] - .TOC. = .branch_lt - (.got+0x8000) = -32728
## &.branch_lt[0] - .TOC. = .branch_lt - (.got+0x8000) = -32744
# CHECK: <__long_branch_>:
# CHECK-NEXT: 2050: addis 12, 2, 0
# CHECK-NEXT: ld 12, -32728(12)
# CHECK-NEXT: ld 12, -32744(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr

View file

@ -5,28 +5,28 @@
# RUN: }' > %t.lds
# RUN: llvm-mc -filetype=obj -triple=powerpc64 %s -o %t.o
# RUN: ld.lld -z nosort-thunks -T %t.lds %t.o -o %t
# RUN: ld.lld -T %t.lds %t.o -o %t
# RUN: llvm-readelf -r %t | FileCheck --check-prefix=SEC %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o %t.o
# RUN: ld.lld -z nosort-thunks -pie -T %t.lds %t.o -o %t
# RUN: ld.lld -pie -T %t.lds %t.o -o %t
# RUN: llvm-readelf -r %t | FileCheck --check-prefix=SEC %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# SEC: There are no relocations in this file.
# CHECK-LABEL: <_start>:
# CHECK-NEXT: 2000: bt 2, 0x2020
# CHECK-NEXT: bt+ 2, 0x2020
# CHECK-NEXT: 2000: bt 2, 0x2040
# CHECK-NEXT: bt+ 2, 0x2040
# CHECK-NEXT: bf 2, 0xa004
# CHECK-NEXT: bt 2, 0x2040
# CHECK-NEXT: bt 2, 0x2020
# CHECK-NEXT: blr
# CHECK-NEXT: trap
# CHECK-NEXT: trap
# CHECK-NEXT: trap
# CHECK-EMPTY:
# CHECK-NEXT: <__long_branch_high>:
# CHECK-NEXT: <__long_branch_>:
# CHECK-NEXT: 2020: addis 12, 2, 0
# CHECK-NEXT: ld 12, {{.*}}(12)
# CHECK-NEXT: mtctr 12
@ -34,7 +34,7 @@
# CHECK-NEXT: ...
# CHECK-EMPTY:
# CHECK-NEXT: <__long_branch_>:
# CHECK-NEXT: <__long_branch_high>:
# CHECK-NEXT: 2040: addis 12, 2, 0
# CHECK-NEXT: ld 12, {{.*}}(12)
# CHECK-NEXT: mtctr 12

View file

@ -5,14 +5,14 @@
# RUN: }' > %t.script
# RUN: llvm-mc -filetype=obj -triple=ppc64le %s -o %t.o
# RUN: ld.lld -z nosort-thunks -T %t.script %t.o -o %t
# RUN: ld.lld -T %t.script %t.o -o %t
# RUN: llvm-readelf -S -r %t | FileCheck --check-prefix=SEC %s
# RUN: llvm-readelf -x .branch_lt %t | FileCheck --check-prefix=BRANCH-LE %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
# RUN: llvm-nm --no-sort %t | FileCheck --check-prefix=NM %s
# RUN: llvm-mc -filetype=obj -triple=ppc64 %s -o %t.o
# RUN: ld.lld -z nosort-thunks -T %t.script %t.o -o %t
# RUN: ld.lld -T %t.script %t.o -o %t
# RUN: llvm-readelf -S -r %t | FileCheck --check-prefix=SEC %s
# RUN: llvm-readelf -x .branch_lt %t | FileCheck --check-prefix=BRANCH-BE %s
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
@ -31,25 +31,25 @@
# BRANCH-BE-NEXT: 0x02002058 00000000 00002008
# CHECK: <_start>:
# CHECK-NEXT: 2000: bl 0x2020
# CHECK-NEXT: bl 0x2020
# CHECK-NEXT: bl 0x2020
# CHECK-NEXT: 2000: bl 0x2040
# CHECK-NEXT: bl 0x2040
# CHECK-NEXT: bl 0x2040
# CHECK-NEXT: bl 0x2002008
## &.branch_lt[0] - .TOC. = .branch_lt - (.got+0x8000) = -32760
# CHECK: <__long_branch_high>:
# CHECK-NEXT: 2020: addis 12, 2, 0
# CHECK-NEXT: ld 12, -32760(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
## &.branch_lt[1] - .TOC. = .branch_lt - (.got+0x8000) = -32752
# CHECK: <__long_branch_>:
# CHECK-NEXT: 2040: addis 12, 2, 0
# CHECK-NEXT: 2020: addis 12, 2, 0
# CHECK-NEXT: ld 12, -32752(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
## &.branch_lt[0] - .TOC. = .branch_lt - (.got+0x8000) = -32760
# CHECK: <__long_branch_high>:
# CHECK-NEXT: 2040: addis 12, 2, 0
# CHECK-NEXT: ld 12, -32760(12)
# CHECK-NEXT: mtctr 12
# CHECK-NEXT: bctr
.section .text_low, "ax", %progbits
.globl _start
_start: