Skip to content

[RISCV] Support printing immediate of RISCV MCInst in hexadecimal format #74053

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions bolt/test/RISCV/call-annotations.s
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ f:

// CHECK-LABEL: Binary Function "_start" after building cfg {
// CHECK: auipc ra, f
// CHECK-NEXT: jalr ra, -4(ra) # Offset: 4
// CHECK-NEXT: jalr ra, -0x4(ra) # Offset: 4
// CHECK-NEXT: jal ra, f # Offset: 8
// CHECK-NEXT: jal zero, f # TAILCALL # Offset: 12

// CHECK-LABEL: Binary Function "long_tail" after building cfg {
// CHECK: auipc t1, f
// CHECK-NEXT: jalr zero, -24(t1) # TAILCALL # Offset: 8
// CHECK-NEXT: jalr zero, -0x18(t1) # TAILCALL # Offset: 8

// CHECK-LABEL: Binary Function "compressed_tail" after building cfg {
// CHECK: jr a0 # TAILCALL # Offset: 0
Expand Down
6 changes: 3 additions & 3 deletions bolt/test/RISCV/relax.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// CHECK: Binary Function "_start" after building cfg {
// CHECK: jal ra, near_f
// CHECK-NEXT: auipc ra, far_f@plt
// CHECK-NEXT: jalr ra, 12(ra)
// CHECK-NEXT: jalr ra, 0xc(ra)
// CHECK-NEXT: j near_f

// CHECK: Binary Function "_start" after fix-riscv-calls {
Expand All @@ -17,8 +17,8 @@

// OBJDUMP: 0000000000600000 <_start>:
// OBJDUMP-NEXT: jal 0x600040 <near_f>
// OBJDUMP-NEXT: auipc ra, 512
// OBJDUMP-NEXT: jalr 124(ra)
// OBJDUMP-NEXT: auipc ra, 0x200
// OBJDUMP-NEXT: jalr 0x7c(ra)
// OBJDUMP-NEXT: j 0x600040 <near_f>
// OBJDUMP: 0000000000600040 <near_f>:
// OBJDUMP: 0000000000800080 <far_f>:
Expand Down
6 changes: 3 additions & 3 deletions bolt/test/RISCV/reloc-tls.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
// RUN: | FileCheck %s

// CHECK-LABEL: Binary Function "tls_le{{.*}}" after building cfg {
// CHECK: lui a5, 0
// CHECK: lui a5, 0x0
// CHECK-NEXT: add a5, a5, tp
// CHECK-NEXT: lw t0, 0(a5)
// CHECK-NEXT: sw t0, 0(a5)
// CHECK-NEXT: lw t0, 0x0(a5)
// CHECK-NEXT: sw t0, 0x0(a5)

// CHECK-LABEL: Binary Function "tls_ie" after building cfg {
// CHECK-LABEL: .LBB01
Expand Down
4 changes: 2 additions & 2 deletions bolt/test/RISCV/reorder-blocks-reverse.s
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ _start:
// CHECK-NEXT: {{.*}}00: beq t0, t1, {{.*}} <_start+0x10>
// CHECK-NEXT: {{.*}}04: j {{.*}} <_start+0x16>
// CHECK-NEXT: {{.*}}08: ret
// CHECK-NEXT: {{.*}}0a: li a0, 6
// CHECK-NEXT: {{.*}}0a: li a0, 0x6
// CHECK-NEXT: {{.*}}0c: j {{.*}} <_start+0x8>
// CHECK-NEXT: {{.*}}10: li a0, 5
// CHECK-NEXT: {{.*}}10: li a0, 0x5
// CHECK-NEXT: {{.*}}12: j {{.*}} <_start+0x8>
// CHECK-NEXT: {{.*}}16: beq t0, t2, {{.*}} <_start+0xa>
// CHECK-NEXT: {{.*}}1a: j {{.*}} <_start+0x10>
4 changes: 2 additions & 2 deletions bolt/test/RISCV/tls-le-gnu-ld.test
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
// RUN: | FileCheck %s

// CHECK: Binary Function "_start" after building cfg {
// CHECK: lw t0, 0(tp)
// CHECK-NEXT: sw t0, 0(tp)
// CHECK: lw t0, 0x0(tp)
// CHECK-NEXT: sw t0, 0x0(tp)
16 changes: 8 additions & 8 deletions lld/test/ELF/riscv-call.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@
# RUN: ld.lld %t.rv64.o --defsym foo=_start+8 --defsym bar=_start -o %t.rv64
# RUN: llvm-objdump -d %t.rv32 | FileCheck %s
# RUN: llvm-objdump -d %t.rv64 | FileCheck %s
# CHECK: 97 00 00 00 auipc ra, 0
# CHECK-NEXT: e7 80 80 00 jalr 8(ra)
# CHECK: 97 00 00 00 auipc ra, 0
# CHECK-NEXT: e7 80 80 ff jalr -8(ra)
# CHECK: 97 00 00 00 auipc ra, 0x0
# CHECK-NEXT: e7 80 80 00 jalr 0x8(ra)
# CHECK: 97 00 00 00 auipc ra, 0x0
# CHECK-NEXT: e7 80 80 ff jalr -0x8(ra)

# RUN: ld.lld %t.rv32.o --defsym foo=_start+0x7ffff7ff --defsym bar=_start+8-0x80000800 -o %t.rv32.limits
# RUN: ld.lld %t.rv64.o --defsym foo=_start+0x7ffff7ff --defsym bar=_start+8-0x80000800 -o %t.rv64.limits
# RUN: llvm-objdump -d %t.rv32.limits | FileCheck --check-prefix=LIMITS %s
# RUN: llvm-objdump -d %t.rv64.limits | FileCheck --check-prefix=LIMITS %s
# LIMITS: 97 f0 ff 7f auipc ra, 524287
# LIMITS-NEXT: e7 80 f0 7f jalr 2047(ra)
# LIMITS-NEXT: 97 00 00 80 auipc ra, 524288
# LIMITS-NEXT: e7 80 00 80 jalr -2048(ra)
# LIMITS: 97 f0 ff 7f auipc ra, 0x7ffff
# LIMITS-NEXT: e7 80 f0 7f jalr 0x7ff(ra)
# LIMITS-NEXT: 97 00 00 80 auipc ra, 0x80000
# LIMITS-NEXT: e7 80 00 80 jalr -0x800(ra)

# RUN: ld.lld %t.rv32.o --defsym foo=_start+0x7ffff800 --defsym bar=_start+8-0x80000801 -o %t
# RUN: not ld.lld %t.rv64.o --defsym foo=_start+0x7ffff800 --defsym bar=_start+8-0x80000801 -o /dev/null 2>&1 | \
Expand Down
22 changes: 11 additions & 11 deletions lld/test/ELF/riscv-hi20-lo12.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,23 @@
# RUN: ld.lld %t.rv64.o --defsym foo=0 --defsym bar=42 -o %t.rv64
# RUN: llvm-objdump -d %t.rv32 | FileCheck %s
# RUN: llvm-objdump -d %t.rv64 | FileCheck %s
# CHECK: 37 05 00 00 lui a0, 0
# CHECK: 37 05 00 00 lui a0, 0x0
# CHECK-NEXT: 13 05 05 00 mv a0, a0
# CHECK-NEXT: 23 20 a5 00 sw a0, 0(a0)
# CHECK-NEXT: b7 05 00 00 lui a1, 0
# CHECK-NEXT: 93 85 a5 02 addi a1, a1, 42
# CHECK-NEXT: 23 a5 b5 02 sw a1, 42(a1)
# CHECK-NEXT: 23 20 a5 00 sw a0, 0x0(a0)
# CHECK-NEXT: b7 05 00 00 lui a1, 0x0
# CHECK-NEXT: 93 85 a5 02 addi a1, a1, 0x2a
# CHECK-NEXT: 23 a5 b5 02 sw a1, 0x2a(a1)

# RUN: ld.lld %t.rv32.o --defsym foo=0x7ffff7ff --defsym bar=0x7ffff800 -o %t.rv32.limits
# RUN: ld.lld %t.rv64.o --defsym foo=0x7ffff7ff --defsym bar=0xffffffff7ffff800 -o %t.rv64.limits
# RUN: llvm-objdump -d %t.rv32.limits | FileCheck --check-prefix=LIMITS %s
# RUN: llvm-objdump -d %t.rv64.limits | FileCheck --check-prefix=LIMITS %s
# LIMITS: 37 f5 ff 7f lui a0, 524287
# LIMITS-NEXT: 13 05 f5 7f addi a0, a0, 2047
# LIMITS-NEXT: a3 2f a5 7e sw a0, 2047(a0)
# LIMITS-NEXT: b7 05 00 80 lui a1, 524288
# LIMITS-NEXT: 93 85 05 80 addi a1, a1, -2048
# LIMITS-NEXT: 23 a0 b5 80 sw a1, -2048(a1)
# LIMITS: 37 f5 ff 7f lui a0, 0x7ffff
# LIMITS-NEXT: 13 05 f5 7f addi a0, a0, 0x7ff
# LIMITS-NEXT: a3 2f a5 7e sw a0, 0x7ff(a0)
# LIMITS-NEXT: b7 05 00 80 lui a1, 0x80000
# LIMITS-NEXT: 93 85 05 80 addi a1, a1, -0x800
# LIMITS-NEXT: 23 a0 b5 80 sw a1, -0x800(a1)

# RUN: not ld.lld %t.rv64.o --defsym foo=0x7ffff800 --defsym bar=0xffffffff7ffff7ff -o /dev/null 2>&1 | FileCheck --check-prefix ERROR %s
# ERROR: relocation R_RISCV_HI20 out of range: 524288 is not in [-524288, 524287]; references 'foo'
Expand Down
16 changes: 8 additions & 8 deletions lld/test/ELF/riscv-ifunc-nonpreemptible.s
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@
# SYM32: 0001190 0 FUNC GLOBAL DEFAULT {{.*}} func

# DIS32: <_start>:
# DIS32-NEXT: 1180: auipc a0, 0
# DIS32-NEXT: addi a0, a0, 16
# DIS32-NEXT: 1180: auipc a0, 0x0
# DIS32-NEXT: addi a0, a0, 0x10
# DIS32: Disassembly of section .iplt:
# DIS32: <func>:
## 32-bit: &.got.plt[func]-. = 0x3220-0x1190 = 4096*2+144
# DIS32-NEXT: 1190: auipc t3, 2
# DIS32-NEXT: lw t3, 144(t3)
# DIS32-NEXT: 1190: auipc t3, 0x2
# DIS32-NEXT: lw t3, 0x90(t3)
# DIS32-NEXT: jalr t1, t3
# DIS32-NEXT: nop

Expand All @@ -47,13 +47,13 @@
# SYM64: 000000000001270 0 FUNC GLOBAL DEFAULT {{.*}} func

# DIS64: <_start>:
# DIS64-NEXT: 1264: auipc a0, 0
# DIS64-NEXT: addi a0, a0, 12
# DIS64-NEXT: 1264: auipc a0, 0x0
# DIS64-NEXT: addi a0, a0, 0xc
# DIS64: Disassembly of section .iplt:
# DIS64: <func>:
## 64-bit: &.got.plt[func]-. = 0x3380-0x1270 = 4096*2+272
# DIS64-NEXT: 1270: auipc t3, 2
# DIS64-NEXT: ld t3, 272(t3)
# DIS64-NEXT: 1270: auipc t3, 0x2
# DIS64-NEXT: ld t3, 0x110(t3)
# DIS64-NEXT: jalr t1, t3
# DIS64-NEXT: nop

Expand Down
24 changes: 12 additions & 12 deletions lld/test/ELF/riscv-pcrel-hilo.s
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,23 @@
# RUN: ld.lld -pie %t.rv64.o --defsym foo=_start+12 --defsym bar=_start -o %t.rv64
# RUN: llvm-objdump -d --no-show-raw-insn %t.rv32 | FileCheck %s
# RUN: llvm-objdump -d --no-show-raw-insn %t.rv64 | FileCheck %s
# CHECK: auipc a0, 0
# CHECK-NEXT: addi a0, a0, 12
# CHECK-NEXT: sw zero, 12(a0)
# CHECK: auipc a0, 0
# CHECK-NEXT: addi a0, a0, -12
# CHECK-NEXT: sw zero, -12(a0)
# CHECK: auipc a0, 0x0
# CHECK-NEXT: addi a0, a0, 0xc
# CHECK-NEXT: sw zero, 0xc(a0)
# CHECK: auipc a0, 0x0
# CHECK-NEXT: addi a0, a0, -0xc
# CHECK-NEXT: sw zero, -0xc(a0)

# RUN: ld.lld %t.rv32.o --defsym foo=_start+0x7ffff7ff --defsym bar=_start+12-0x80000800 -o %t.rv32.limits
# RUN: ld.lld %t.rv64.o --defsym foo=_start+0x7ffff7ff --defsym bar=_start+12-0x80000800 -o %t.rv64.limits
# RUN: llvm-objdump -d --no-show-raw-insn %t.rv32.limits | FileCheck --check-prefix=LIMITS %s
# RUN: llvm-objdump -d --no-show-raw-insn %t.rv64.limits | FileCheck --check-prefix=LIMITS %s
# LIMITS: auipc a0, 524287
# LIMITS-NEXT: addi a0, a0, 2047
# LIMITS-NEXT: sw zero, 2047(a0)
# LIMITS: auipc a0, 524288
# LIMITS-NEXT: addi a0, a0, -2048
# LIMITS-NEXT: sw zero, -2048(a0)
# LIMITS: auipc a0, 0x7ffff
# LIMITS-NEXT: addi a0, a0, 0x7ff
# LIMITS-NEXT: sw zero, 0x7ff(a0)
# LIMITS: auipc a0, 0x80000
# LIMITS-NEXT: addi a0, a0, -0x800
# LIMITS-NEXT: sw zero, -0x800(a0)

# RUN: ld.lld %t.rv32.o --defsym foo=_start+0x7ffff800 --defsym bar=_start+12-0x80000801 -o %t
# RUN: not ld.lld %t.rv64.o --defsym foo=_start+0x7ffff800 --defsym bar=_start+12-0x80000801 -o /dev/null 2>&1 | FileCheck --check-prefix=ERROR %s
Expand Down
48 changes: 24 additions & 24 deletions lld/test/ELF/riscv-plt.s
Original file line number Diff line number Diff line change
Expand Up @@ -46,47 +46,47 @@
# DIS: <_start>:
## Direct call
## foo - . = 0x11020-0x11000 = 32
# DIS-NEXT: 11000: auipc ra, 0
# DIS-NEXT: jalr 32(ra)
# DIS-NEXT: 11000: auipc ra, 0x0
# DIS-NEXT: jalr 0x20(ra)
## bar@plt - . = 0x11050-0x11008 = 72
# DIS-NEXT: 11008: auipc ra, 0
# DIS-NEXT: jalr 72(ra)
# DIS-NEXT: 11008: auipc ra, 0x0
# DIS-NEXT: jalr 0x48(ra)
## bar@plt - . = 0x11050-0x11010 = 64
# DIS-NEXT: 11010: auipc ra, 0
# DIS-NEXT: jalr 64(ra)
# DIS-NEXT: 11010: auipc ra, 0x0
# DIS-NEXT: jalr 0x40(ra)
## weak@plt - . = 0x11060-0x11018 = 72
# DIS-NEXT: 11018: auipc ra, 0
# DIS-NEXT: jalr 72(ra)
# DIS-NEXT: 11018: auipc ra, 0x0
# DIS-NEXT: jalr 0x48(ra)
# DIS: <foo>:
# DIS-NEXT: 11020:

# DIS: Disassembly of section .plt:
# DIS: <.plt>:
# DIS-NEXT: auipc t2, 2
# DIS-NEXT: auipc t2, 0x2
# DIS-NEXT: sub t1, t1, t3
## .got.plt - .plt = 0x13068 - 0x11030 = 4096*2+56
# DIS32-NEXT: lw t3, 56(t2)
# DIS64-NEXT: ld t3, 160(t2)
# DIS-NEXT: addi t1, t1, -44
# DIS32-NEXT: addi t0, t2, 56
# DIS64-NEXT: addi t0, t2, 160
# DIS32-NEXT: srli t1, t1, 2
# DIS64-NEXT: srli t1, t1, 1
# DIS32-NEXT: lw t0, 4(t0)
# DIS64-NEXT: ld t0, 8(t0)
# DIS32-NEXT: lw t3, 0x38(t2)
# DIS64-NEXT: ld t3, 0xa0(t2)
# DIS-NEXT: addi t1, t1, -0x2c
# DIS32-NEXT: addi t0, t2, 0x38
# DIS64-NEXT: addi t0, t2, 0xa0
# DIS32-NEXT: srli t1, t1, 0x2
# DIS64-NEXT: srli t1, t1, 0x1
# DIS32-NEXT: lw t0, 0x4(t0)
# DIS64-NEXT: ld t0, 0x8(t0)
# DIS-NEXT: jr t3

## 32-bit: &.got.plt[bar]-. = 0x13070-0x11050 = 4096*2+32
# DIS: 11050: auipc t3, 2
# DIS32-NEXT: lw t3, 32(t3)
# DIS64-NEXT: ld t3, 144(t3)
# DIS: 11050: auipc t3, 0x2
# DIS32-NEXT: lw t3, 0x20(t3)
# DIS64-NEXT: ld t3, 0x90(t3)
# DIS-NEXT: jalr t1, t3
# DIS-NEXT: nop

## 32-bit: &.got.plt[weak]-. = 0x13074-0x11060 = 4096*2+20
# DIS: 11060: auipc t3, 2
# DIS32-NEXT: lw t3, 20(t3)
# DIS64-NEXT: ld t3, 136(t3)
# DIS: 11060: auipc t3, 0x2
# DIS32-NEXT: lw t3, 0x14(t3)
# DIS64-NEXT: ld t3, 0x88(t3)
# DIS-NEXT: jalr t1, t3
# DIS-NEXT: nop

Expand Down
62 changes: 31 additions & 31 deletions lld/test/ELF/riscv-relax-align-rvc.s
Original file line number Diff line number Diff line change
Expand Up @@ -22,67 +22,67 @@
# CHECK-DAG: 00010000 g .text {{0*}}36 _start

# CHECK: <_start>:
# CHECK-NEXT: c.addi a0, 1
# CHECK-NEXT: c.addi a0, 0x1
# CHECK-EMPTY:
# CHECK-NEXT: <a>:
# CHECK-NEXT: c.nop
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-EMPTY:
# CHECK-NEXT: <b>:
# CHECK-NEXT: 10010: c.addi a0, 2
# CHECK-NEXT: 10010: c.addi a0, 0x2
# CHECK-EMPTY:
# CHECK-NEXT: <c>:
# CHECK-NEXT: c.addi a0, 3
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: c.addi a0, 0x3
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-EMPTY:
# CHECK-NEXT: <d>:
# CHECK-NEXT: 10020: c.addi a0, 4
# CHECK-NEXT: c.addi a0, 5
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: addi zero, zero, 0
# CHECK-NEXT: 10030: c.addi a0, 6
# CHECK-NEXT: c.addi a0, 7
# CHECK-NEXT: c.addi a0, 8
# CHECK-NEXT: 10020: c.addi a0, 0x4
# CHECK-NEXT: c.addi a0, 0x5
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-NEXT: addi zero, zero, 0x0
# CHECK-NEXT: 10030: c.addi a0, 0x6
# CHECK-NEXT: c.addi a0, 0x7
# CHECK-NEXT: c.addi a0, 0x8
# CHECK-EMPTY:

# CHECK: <.text2>:
# CHECK-NEXT: addi a0, a1, 1
# CHECK-NEXT: c.addi a0, 1
# CHECK-NEXT: addi a0, a1, 0x1
# CHECK-NEXT: c.addi a0, 0x1
# CHECK-NEXT: c.nop
# CHECK-NEXT: c.addi a0, 2
# CHECK-NEXT: c.addi a0, 0x2

.global _start
_start:
c.addi a0, 1
c.addi a0, 0x1
a:
.balign 16
b:
c.addi a0, 2
c.addi a0, 0x2
c:
c.addi a0, 3
c.addi a0, 0x3
.balign 32
.size a, . - a
d:
c.addi a0, 4
c.addi a0, 5
c.addi a0, 0x4
c.addi a0, 0x5
.balign 16
.size c, . - c
c.addi a0, 6
c.addi a0, 0x6
.size b, . - b
c.addi a0, 7
c.addi a0, 0x7
.balign 4
c.addi a0, 8
c.addi a0, 0x8
.size d, . - d
.size _start, . - _start

.section .text2,"ax"
.balign 16
addi a0, a1, 1
c.addi a0, 1
addi a0, a1, 0x1
c.addi a0, 0x1
.balign 8
c.addi a0, 2
c.addi a0, 0x2
Loading