Skip to content

Commit 3eef474

Browse files
committed
[PPCInstPrinter] Change printBranchOperand(calltarget) to print the target address in hexadecimal form
``` // llvm-objdump -d output (before) 0: bl .-4 4: bl .+0 8: bl .+4 // llvm-objdump -d output (after) ; GNU objdump -d 0: bl 0xfffffffc / bl 0xfffffffffffffffc 4: bl 0x4 8: bl 0xc ``` Many Operand's are not annotated as OPERAND_PCREL. They are not affected (e.g. `b .+67108860`). I plan to fix them in future patches. Modified test/tools/llvm-objdump/ELF/PowerPC/branch-offset.s to test address space wraparound for powerpc32 and powerpc64. Reviewed By: sfertile, jhenderson Differential Revision: https://reviews.llvm.org/D76591
1 parent 3ff3c69 commit 3eef474

26 files changed

+118
-99
lines changed

lld/test/ELF/ppc32-call-stub-nopic.s

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020

2121
## .got2+0x8000-0x10004 = 0x30000+0x8000-0x10004 = 65536*2+32764
2222
# CHECK-LABEL: <_start>:
23-
# CHECK-NEXT: bl .+16
24-
# CHECK-NEXT: bl .+12
25-
# CHECK-NEXT: bl .+24
26-
# CHECK-NEXT: bl .+20
23+
# CHECK-NEXT: bl 0x100101d0
24+
# CHECK-NEXT: bl 0x100101d0
25+
# CHECK-NEXT: bl 0x100101e0
26+
# CHECK-NEXT: bl 0x100101e0
2727
# CHECK-EMPTY:
2828

2929
## -fno-PIC call stubs of f and g.

lld/test/ELF/ppc32-call-stub-pic.s

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,34 @@
3737
# PIE-NEXT: 10210: mflr 30
3838
# PIE-NEXT: addis 30, 30, 3
3939
# PIE-NEXT: addi 30, 30, -32412
40-
# SHARED-NEXT: 10230: mflr 30
41-
# SHARED-NEXT: addis 30, 30, 3
42-
# SHARED-NEXT: addi 30, 30, -32420
43-
4440
## Two bl 00008000.got2.plt_pic32.f
45-
# CHECK-NEXT: bl .+40
46-
# CHECK-NEXT: bl .+36
41+
# PIE-NEXT: bl 0x10244
42+
# PIE-NEXT: bl 0x10244
4743
## Two bl 00008000.got2.plt_pic32.g
48-
# CHECK-NEXT: bl .+48
49-
# CHECK-NEXT: bl .+44
44+
# PIE-NEXT: bl 0x10254
45+
# PIE-NEXT: bl 0x10254
5046
## Two bl 00008000.got2.plt_pic32.h
51-
# CHECK-NEXT: bl .+56
52-
# CHECK-NEXT: bl .+52
53-
# CHECK-NEXT: addis 30, 30, {{.*}}
54-
# CHECK-NEXT: addi 30, 30, {{.*}}
47+
# PIE-NEXT: bl 0x10264
48+
# PIE-NEXT: bl 0x10264
49+
# PIE-NEXT: addis 30, 30, {{.*}}
50+
# PIE-NEXT: addi 30, 30, {{.*}}
5551
## bl 00008000.plt_pic32.f
56-
# CHECK-NEXT: bl .+56
52+
# PIE-NEXT: bl 0x10274
5753
## bl 00008000.plt_pic32.f
58-
# CHECK-NEXT: bl .+68
54+
# PIE-NEXT: bl 0x10284
55+
# SHARED-NEXT: 10230: mflr 30
56+
# SHARED-NEXT: addis 30, 30, 3
57+
# SHARED-NEXT: addi 30, 30, -32420
58+
# SHARED-NEXT: bl 0x10264
59+
# SHARED-NEXT: bl 0x10264
60+
# SHARED-NEXT: bl 0x10274
61+
# SHARED-NEXT: bl 0x10274
62+
# SHARED-NEXT: bl 0x10284
63+
# SHARED-NEXT: bl 0x10284
64+
# SHARED-NEXT: addis 30, 30, {{.*}}
65+
# SHARED-NEXT: addi 30, 30, {{.*}}
66+
# SHARED-NEXT: bl 0x10294
67+
# SHARED-NEXT: bl 0x102a4
5968
# CHECK-EMPTY:
6069

6170
## -fPIC call stubs of f and g.

lld/test/ELF/ppc32-ifunc-nonpreemptible-nopic.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# CHECK: <.text>:
1717
# CHECK-NEXT: 100100e0: blr
1818
# CHECK: <_start>:
19-
# CHECK-NEXT: bl .+12
19+
# CHECK-NEXT: bl 0x100100f0
2020
# CHECK-NEXT: lis 9, 4097
2121
# CHECK-NEXT: addi 9, 9, 256
2222
# CHECK-EMPTY:

lld/test/ELF/ppc32-ifunc-nonpreemptible-pic.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
# CHECK: <.text>:
2222
# CHECK-NEXT: 10188: blr
2323
# CHECK: <_start>:
24-
# CHECK-NEXT: bl .+12
24+
# CHECK-NEXT: bl 0x10198
2525
# CHECK-NEXT: lis 9, 1
2626
# CHECK-NEXT: addi 9, 9, 424
2727
# CHECK-EMPTY:

lld/test/ELF/ppc32-long-thunk.s

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
# SEC: There are no relocations in this file.
1717

1818
# CHECK: <_start>:
19-
# CHECK-NEXT: 2000: bl .+24
20-
# CHECK-NEXT: bl .+20
21-
# CHECK-NEXT: bl .+16
22-
# CHECK-NEXT: bl .+33554428
23-
# PD-NEXT: bl .+24
24-
# PI-NEXT: bl .+40
19+
# CHECK-NEXT: 2000: bl 0x2018
20+
# CHECK-NEXT: bl 0x2018
21+
# CHECK-NEXT: bl 0x2018
22+
# CHECK-NEXT: bl 0x2002008
23+
# PD-NEXT: bl 0x2028
24+
# PI-NEXT: bl 0x2038
2525

2626
## high = 0x02002008 = 65536*512+8200
2727
# PD: <__LongThunk_high>:
@@ -70,8 +70,8 @@ bl .text_high+16 # Need a thunk
7070
blr
7171

7272
# PD: 02002008 <high>:
73-
# PD-NEXT: bl .-33554432
74-
# PD-NEXT: bl .+4
73+
# PD-NEXT: bl 0x2008
74+
# PD-NEXT: bl 0x2002010
7575
# PD: <__LongThunk_>:
7676
# PD-NEXT: 2002010: lis 12, 0
7777
# PD-NEXT: addi 12, 12, 8200

lld/test/ELF/ppc32-tls-gd.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@
3131

3232
## &DTPMOD(a) - _GLOBAL_OFFSET_TABLE_ = 0x20078 - 0x20078 = 0
3333
# GD: addi 3, 31, 0
34-
# GD-NEXT: bl .+32
34+
# GD-NEXT: bl 0x1028c
3535
# GD-NEXT: lwz 3, 0(3)
3636

3737
## &DTPMOD(b) - _GLOBAL_OFFSET_TABLE_ = 0x20080 - 0x20078 = 8
3838
# GD-NEXT: addi 3, 31, 8
39-
# GD-NEXT: bl .+20
39+
# GD-NEXT: bl 0x1028c
4040
# GD-NEXT: lwz 3, 0(3)
4141

4242
## &DTPMOD(c) - _GLOBAL_OFFSET_TABLE_ = 0x20088 - 0x20078 = 16
4343
# GD-NEXT: addi 3, 9, 16
44-
# GD-NEXT: bl .+8
44+
# GD-NEXT: bl 0x1028c
4545
# GD-NEXT: lwz 3, 0(3)
4646

4747
# NOREL: no relocations

lld/test/ELF/ppc32-tls-ld.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
## .got - _GLOBAL_OFFSET_TABLE_ = 0
1818
# LD: addi 3, 30, 0
19-
# LD-NEXT: bl .+40
19+
# LD-NEXT: bl 0x101f8
2020
## a@dtprel = st_value(a)-0x8000 = 65540-0x8000 = 65536*1-32764
2121
## b@dtprel = st_value(a)-0x8000 = 131080-0x8000 = 65536*2-32760
2222
# LD-NEXT: addis 9, 3, 1
@@ -30,7 +30,7 @@
3030
## It shares In.Got->TlsIndexOff allocated when processing a@got@tlsld.
3131
## .got - _GLOBAL_OFFSET_TABLE_ = 0
3232
# LD-NEXT: addi 3, 9, 0
33-
# LD-NEXT: bl .+12
33+
# LD-NEXT: bl 0x101f8
3434
## b@dtprel = st_value(a)-0x8000 = 131080-0x8000 = 65536*2-32760
3535
# LD-NEXT: addis 29, 3, 2
3636
# LD-NEXT: addi 29, 29, -32760

lld/test/ELF/ppc32-weak-undef-call.s

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99

1010
## It does not really matter how we fixup it, but we cannot overflow and
1111
## should not generate a call stub (this would waste space).
12-
# PDE: bl .+0
12+
# PDE: bl 0x100100b4
1313

1414
## With -pie or -shared, create a call stub. ld.bfd produces bl .+0
15-
# PIC: bl .+4
16-
# PIC: <00000000.plt_pic32.foo>:
15+
# PIC: bl 0x[[PLT:[0-9a-f]+]]
16+
# PIC-EMPTY:
17+
# PIC-NEXT: 000[[PLT]] <00000000.plt_pic32.foo>:
1718

1819
.weak foo
1920
bl foo

lld/test/ELF/ppc64-bsymbolic-toc-restore.s

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o
44
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-bsymbolic-local-def.s -o %t2.o
55
# RUN: ld.lld -Bsymbolic -shared %t1.o %t2.o -o %t
6-
# RUN: llvm-objdump -d -r %t | FileCheck %s
6+
# RUN: llvm-objdump -d -r --no-show-raw-insn %t | FileCheck %s
77
# RUN: not ld.lld -shared %t1.o %t2.o -o /dev/null 2>&1 | FileCheck --check-prefix=FAIL %s
88

99
# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t1.o
1010
# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/ppc64-bsymbolic-local-def.s -o %t2.o
1111
# RUN: ld.lld -Bsymbolic -shared %t1.o %t2.o -o %t
12-
# RUN: llvm-objdump -d -r %t | FileCheck %s
12+
# RUN: llvm-objdump -d -r --no-show-raw-insn %t | FileCheck %s
1313
# RUN: not ld.lld -shared %t1.o %t2.o -o /dev/null 2>&1 | FileCheck --check-prefix=FAIL %s
1414

1515
# FAIL: call to def lacks nop, can't restore toc
@@ -51,9 +51,9 @@ caller:
5151
# being called.
5252

5353
# CHECK-LABEL: caller
54-
# CHECK: bl .+44
54+
# CHECK: bl 0x[[DEF:[0-9a-f]+]]
5555
# CHECK-NEXT: mr 31, 3
56-
# CHECK-NEXT: bl .+44
56+
# CHECK-NEXT: bl 0x[[NOT_DEFINED:[0-9a-f]+]]
5757
# CHECK-NEXT: ld 2, 24(1)
5858
# CHECK-NEXT: add 3, 3, 31
5959
# CHECK-NEXT: addi 1, 1, 32
@@ -64,5 +64,7 @@ caller:
6464
# CHECK-NEXT: <def>:
6565
# CHECK-NEXT: addis 2, 12, 2
6666
# CHECK-NEXT: addi 2, 2, -32456
67-
# CHECK-NEXT: li 3, 55
67+
# CHECK-NEXT: [[DEF]]: li 3, 55
6868
# CHECK-NEXT: blr
69+
# CHECK-EMPTY:
70+
# CHECK-NEXT: 00000000000[[NOT_DEFINED]] <__plt_not_defined>:

lld/test/ELF/ppc64-call-reach.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ test:
5858
# Check that we are branching to the definitions, and not range-extending
5959
# thunks.
6060
# CHECK-LABEL: test
61-
# CHECK: 10010014: bl .+33554428
61+
# CHECK: 10010014: bl 0x12010010
6262
# CHECK: 10010024: b .+33554428
6363

6464
# NEGOFFSET-LABEL: test
65-
# NEGOFFSET: 10010014: bl .-33554432
65+
# NEGOFFSET: 10010014: bl 0xe010014
6666
# NEGOFFSET: 10010024: b .+33554432
6767

6868
# THUNK-LABEL: <test>:
69-
# THUNK: 10010014: bl .+20
69+
# THUNK: 10010014: bl 0x10010028
7070
# THUNK: 10010024: b .+20
7171

7272
# .branch_lt[0]

lld/test/ELF/ppc64-func-entry-points.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ glob:
7070
# point and we branch to start of foo_external_same.
7171

7272
// CHECK-LABEL: <_start>:
73-
// CHECK: 100101f0: bl .+144
74-
// CHECK: 10010204: bl .+84
73+
// CHECK: 100101f0: bl 0x10010280
74+
// CHECK: 10010204: bl 0x10010258
7575
// CHECK-LABEL: <foo_external_diff>:
7676
// CHECK-NEXT: 10010250: addis 2, 12, 2
7777
// CHECK-NEXT: 10010254: addi 2, 2, -32696

lld/test/ELF/ppc64-ifunc.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
# CHECK: <_start>:
2828
# CHECK-NEXT: addis 2, 12, 2
2929
# CHECK-NEXT: addi 2, 2, -32636
30-
# CHECK-NEXT: 1001021c: bl .+32
30+
# CHECK-NEXT: 1001021c: bl 0x1001023c
3131
# CHECK-NEXT: ld 2, 24(1)
32-
# CHECK-NEXT: 10010224: bl .+44
32+
# CHECK-NEXT: 10010224: bl 0x10010250
3333
# CHECK-NEXT: ld 2, 24(1)
3434
# CHECK-NEXT: addis 3, 2, -2
3535
# CHECK-NEXT: addi 3, 3, 32748

lld/test/ELF/ppc64-local-dynamic.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ k:
113113
// Dis: <test>:
114114
// Dis: addis 3, 2, 0
115115
// Dis-NEXT: addi 3, 3, -32760
116-
// Dis-NEXT: bl .+60
116+
// Dis-NEXT: bl 0x10058
117117
// Dis-NEXT: ld 2, 24(1)
118118
// Dis-NEXT: addis 3, 3, 0
119119
// Dis-NEXT: lwa 3, -32768(3)

lld/test/ELF/ppc64-long-branch-pi.s

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
# RELOC-NEXT: }
3131

3232
# CHECK: <_start>:
33-
# CHECK-NEXT: 2000: bl .+16
34-
# CHECK-NEXT: bl .+33554428
35-
# CHECK-NEXT: bl .+24
36-
# CHECK-NEXT: bl .+36
33+
# CHECK-NEXT: 2000: bl 0x2010
34+
# CHECK-NEXT: bl 0x2002000
35+
# CHECK-NEXT: bl 0x2020
36+
# CHECK-NEXT: bl 0x2030
3737

3838
## &.branch_lt[0] - .TOC. = .branch_lt - (.got+0x8000) = -32752
3939
# CHECK: <__long_branch_>:
@@ -65,9 +65,9 @@ bl .text_high+8 # Need a thunk
6565
bl .text_high+0xc # Need a thunk
6666

6767
# CHECK: <high_target>:
68-
# CHECK-NEXT: 2002000: bl .-33554428
69-
# CHECK-NEXT: bl .-33554432
70-
# CHECK-NEXT: bl .+8
68+
# CHECK-NEXT: 2002000: bl 0x2004
69+
# CHECK-NEXT: bl 0x2004
70+
# CHECK-NEXT: bl 0x2002010
7171

7272
## &.branch_lt[3] - .TOC. = .branch_lt - (.got+0x8000) = -32728
7373
# CHECK: <__long_branch_>:

lld/test/ELF/ppc64-long-branch.s

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
# BRANCH-BE-NEXT: 0x02002040 00000000 00002008
3030

3131
# CHECK: <_start>:
32-
# CHECK-NEXT: 2000: bl .+24
33-
# CHECK-NEXT: bl .+20
34-
# CHECK-NEXT: bl .+16
35-
# CHECK-NEXT: bl .+33554428
32+
# CHECK-NEXT: 2000: bl 0x2018
33+
# CHECK-NEXT: bl 0x2018
34+
# CHECK-NEXT: bl 0x2018
35+
# CHECK-NEXT: bl 0x2002008
3636

3737
## &.branch_lt[0] - .TOC. = .branch_lt - (.got+0x8000) = -32760
3838
# CHECK: <__long_branch_high>:
@@ -63,8 +63,8 @@ blr
6363
# CHECK-NEXT: <high>:
6464
# CHECK-NEXT: 2002000: addis 2, 12, 1
6565
# CHECK-NEXT: addi 2, 2, -32728
66-
# CHECK-NEXT: bl .-33554432
67-
# CHECK-NEXT: bl .+8
66+
# CHECK-NEXT: bl 0x2008
67+
# CHECK-NEXT: bl 0x2002014
6868
# CHECK: <__long_branch_>:
6969
# CHECK-NEXT: 2002014: addis 12, 2, 0
7070
# CHECK-NEXT: ld 12, -32744(12)

lld/test/ELF/ppc64-plt-stub.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
# RELOC: 0x10030010 R_PPC64_JMP_SLOT foo 0x0
2525

2626
# CHECK: <_start>:
27-
# CHECK: 10010298: bl .+16
27+
# CHECK: 10010298: bl 0x100102a8
2828

2929
# CHECK-LABEL: 00000000100102a8 <__plt_foo>:
3030
# CHECK-NEXT: std 2, 24(1)

lld/test/ELF/ppc64-rel-calls.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ bar:
3131
nop
3232
blr
3333

34-
# CHECK: 10010164: bl .-12
34+
# CHECK: 10010164: bl 0x10010158
3535
# CHECK-NEXT: nop
36-
# CHECK-NEXT: 1001016c: bl .-20
36+
# CHECK-NEXT: 1001016c: bl 0x10010158
3737
# CHECK-NEXT: nop
3838
# CHECK-NEXT: blr

lld/test/ELF/ppc64-tls-gd.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@
2727
## &DTPMOD(a) - .TOC. = &.got[0] - (.got+0x8000) = -32768
2828
# GD: addis 3, 2, 0
2929
# GD-NEXT: addi 3, 3, -32768
30-
# GD-NEXT: bl .+36
30+
# GD-NEXT: bl 0x103f4
3131
# GD-NEXT: ld 2, 24(1)
3232

3333
## &DTPMOD(b) - .TOC. = &.got[2] - (.got+0x8000) = -32752
3434
# GD-NEXT: addis 3, 2, 0
3535
# GD-NEXT: addi 3, 3, -32752
36-
# GD-NEXT: bl .+20
36+
# GD-NEXT: bl 0x103f4
3737
# GD-NEXT: ld 2, 24(1)
3838

3939
## &DTPMOD(b) - .TOC. = &.got[4] - (.got+0x8000) = -32736
4040
# GD-NEXT: li 3, -32736
41-
# GD-NEXT: bl .+8
41+
# GD-NEXT: bl 0x103f4
4242
# GD-NEXT: ld 2, 24(1)
4343

4444
# NOREL: no relocations

lld/test/ELF/ppc64-toc-restore-recursive-call.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# with non-recursive calls.
1616

1717
# CHECK-LABEL: 0000000000010290 <recursive_func>:
18-
# CHECK: 102b8: bl .+32
18+
# CHECK: 102b8: bl 0x102d8
1919
# CHECK-NEXT: ld 2, 24(1)
2020

2121
# CHECK-LABEL: 00000000000102d8 <__plt_recursive_func>:

lld/test/ELF/ppc64-toc-restore.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ _start:
2929
nop
3030
bl bar_local
3131
// CHECK-LABEL: <_start>:
32-
// CHECK-NEXT: 100102c8: bl .+60
32+
// CHECK-NEXT: 100102c8: bl 0x10010304
3333
// CHECK-NEXT: 100102cc: ld 2, 24(1)
34-
// CHECK-NEXT: 100102d0: bl .-16
34+
// CHECK-NEXT: 100102d0: bl 0x100102c0
3535
// CHECK-EMPTY:
3636

3737
# Calling a function in another object file which will have same
@@ -43,8 +43,8 @@ _diff_object:
4343
bl foo_not_shared
4444
nop
4545
// CHECK-LABEL: <_diff_object>:
46-
// CHECK-NEXT: 100102d4: bl .+28
47-
// CHECK-NEXT: 100102d8: bl .+24
46+
// CHECK-NEXT: 100102d4: bl 0x100102f0
47+
// CHECK-NEXT: 100102d8: bl 0x100102f0
4848
// CHECK-NEXT: 100102dc: nop
4949

5050
# Branching to a local function does not need a nop
@@ -61,5 +61,5 @@ last:
6161
bl foo
6262
nop
6363
// CHECK-LABEL: <last>:
64-
// CHECK-NEXT: 100102e4: bl .+32
64+
// CHECK-NEXT: 100102e4: bl 0x10010304
6565
// CHECK-NEXT: 100102e8: ld 2, 24(1)

lld/test/ELF/ppc64-weak-undef-call.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ _start:
2424
# be unreachable. But, we should link successfully. We should not, however,
2525
# generate a .plt entry (this would be wasted space). For now, we do nothing
2626
# (leaving the zero relative offset present in the input).
27-
# CHECK: 10010158: bl .+0
27+
# CHECK: 10010158: bl 0x10010158
2828
# CHECK: 1001015c: nop
2929
# CHECK: 10010160: blr

0 commit comments

Comments
 (0)