-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
RISC-V: Add address printer tests on disassembler
This commit adds address printer tests on the disassembler focusing on various path to/on maybe_print_address. It also tests whether the address adjustment on RV32 (fix to PR29342) works as expected and whether the highest address is printed with a symbol. gas/ChangeLog: * testsuite/gas/riscv/dis-addr-a.s: Rename from auipc-x0.s. * testsuite/gas/riscv/dis-addr-a.d: Rename from auipc-x0.d. * testsuite/gas/riscv/dis-addr-2.s: New address printer tests on the disassembler. * testsuite/gas/riscv/dis-addr-2-32.d: Likewise. * testsuite/gas/riscv/dis-addr-2-64.d: Likewise. * testsuite/gas/riscv/dis-addr-3.s: New address printer tests on the disassembler if `gp' is the highest address. * testsuite/gas/riscv/dis-addr-3-32.d: Likewise. * testsuite/gas/riscv/dis-addr-3-64.d: Likewise.
- Loading branch information
Showing
8 changed files
with
171 additions
and
0 deletions.
There are no files selected for viewing
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#as: -march=rv32ic | ||
#source: dis-addr-2.s | ||
#objdump: -d | ||
|
||
.*: file format elf32-(little|big)riscv | ||
|
||
|
||
Disassembly of section .text: | ||
|
||
0+000 <target>: | ||
[ ]+[0-9a-f]+:[ ]+fffff2b7[ ]+lui[ ]+t0,0xfffff | ||
[ ]+[0-9a-f]+:[ ]+ffc2a903[ ]+lw[ ]+s2,-4\(t0\) # ffffeffc <addr_load> | ||
[ ]+[0-9a-f]+:[ ]+ffffe337[ ]+lui[ ]+t1,0xffffe | ||
[ ]+[0-9a-f]+:[ ]+ff332c23[ ]+sw[ ]+s3,-8\(t1\) # ffffdff8 <addr_store> | ||
[ ]+[0-9a-f]+:[ ]+ffffd3b7[ ]+lui[ ]+t2,0xffffd | ||
[ ]+[0-9a-f]+:[ ]+000380e7[ ]+jalr[ ]+t2 # ffffd000 <addr_jalr_1> | ||
[ ]+[0-9a-f]+:[ ]+ffffce37[ ]+lui[ ]+t3,0xffffc | ||
[ ]+[0-9a-f]+:[ ]+ff4e00e7[ ]+jalr[ ]+-12\(t3\) # ffffbff4 <addr_jalr_2> | ||
[ ]+[0-9a-f]+:[ ]+ffffbeb7[ ]+lui[ ]+t4,0xffffb | ||
[ ]+[0-9a-f]+:[ ]+000e8a67[ ]+jalr[ ]+s4,t4 # ffffb000 <addr_jalr_3> | ||
[ ]+[0-9a-f]+:[ ]+ffffaf37[ ]+lui[ ]+t5,0xffffa | ||
[ ]+[0-9a-f]+:[ ]+ff0f0a93[ ]+addi[ ]+s5,t5,-16 # ffff9ff0 <addr_loadaddr> | ||
[ ]+[0-9a-f]+:[ ]+ffff9fb7[ ]+lui[ ]+t6,0xffff9 | ||
[ ]+[0-9a-f]+:[ ]+1fb1[ ]+addi[ ]+t6,t6,-20 # ffff8fec <addr_loadaddr_c> | ||
[ ]+[0-9a-f]+:[ ]+4001a283[ ]+lw[ ]+t0,1024\(gp\) # 600 <addr_rel_gp_pos> | ||
[ ]+[0-9a-f]+:[ ]+c001a303[ ]+lw[ ]+t1,-1024\(gp\) # fffffe00 <addr_rel_gp_neg> | ||
[ ]+[0-9a-f]+:[ ]+10002383[ ]+lw[ ]+t2,256\(zero\) # 100 <addr_rel_zero_pos> | ||
[ ]+[0-9a-f]+:[ ]+80002e03[ ]+lw[ ]+t3,-2048\(zero\) # fffff800 <addr_rel_zero_neg> | ||
[ ]+[0-9a-f]+:[ ]+fff00e83[ ]+lb[ ]+t4,-1\(zero\) # ffffffff <addr_top> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
#as: -march=rv64ic -defsym rv64=1 | ||
#source: dis-addr-2.s | ||
#objdump: -d | ||
|
||
.*: file format elf64-(little|big)riscv | ||
|
||
|
||
Disassembly of section .text: | ||
|
||
0+000 <target>: | ||
[ ]+[0-9a-f]+:[ ]+fffff2b7[ ]+lui[ ]+t0,0xfffff | ||
[ ]+[0-9a-f]+:[ ]+ffc2a903[ ]+lw[ ]+s2,-4\(t0\) # ffffffffffffeffc <addr_load> | ||
[ ]+[0-9a-f]+:[ ]+ffffe337[ ]+lui[ ]+t1,0xffffe | ||
[ ]+[0-9a-f]+:[ ]+ff332c23[ ]+sw[ ]+s3,-8\(t1\) # ffffffffffffdff8 <addr_store> | ||
[ ]+[0-9a-f]+:[ ]+ffffd3b7[ ]+lui[ ]+t2,0xffffd | ||
[ ]+[0-9a-f]+:[ ]+000380e7[ ]+jalr[ ]+t2 # ffffffffffffd000 <addr_jalr_1> | ||
[ ]+[0-9a-f]+:[ ]+ffffce37[ ]+lui[ ]+t3,0xffffc | ||
[ ]+[0-9a-f]+:[ ]+ff4e00e7[ ]+jalr[ ]+-12\(t3\) # ffffffffffffbff4 <addr_jalr_2> | ||
[ ]+[0-9a-f]+:[ ]+ffffbeb7[ ]+lui[ ]+t4,0xffffb | ||
[ ]+[0-9a-f]+:[ ]+000e8a67[ ]+jalr[ ]+s4,t4 # ffffffffffffb000 <addr_jalr_3> | ||
[ ]+[0-9a-f]+:[ ]+ffffaf37[ ]+lui[ ]+t5,0xffffa | ||
[ ]+[0-9a-f]+:[ ]+ff0f0a93[ ]+addi[ ]+s5,t5,-16 # ffffffffffff9ff0 <addr_loadaddr> | ||
[ ]+[0-9a-f]+:[ ]+ffff9fb7[ ]+lui[ ]+t6,0xffff9 | ||
[ ]+[0-9a-f]+:[ ]+1fb1[ ]+addi[ ]+t6,t6,-20 # ffffffffffff8fec <addr_loadaddr_c> | ||
[ ]+[0-9a-f]+:[ ]+ffff8b37[ ]+lui[ ]+s6,0xffff8 | ||
[ ]+[0-9a-f]+:[ ]+fe8b0b9b[ ]+addiw[ ]+s7,s6,-24 # ffffffffffff7fe8 <addr_loadaddr_w> | ||
[ ]+[0-9a-f]+:[ ]+ffff7c37[ ]+lui[ ]+s8,0xffff7 | ||
[ ]+[0-9a-f]+:[ ]+3c11[ ]+addiw[ ]+s8,s8,-28 # ffffffffffff6fe4 <addr_loadaddr_w_c> | ||
[ ]+[0-9a-f]+:[ ]+4001a283[ ]+lw[ ]+t0,1024\(gp\) # 600 <addr_rel_gp_pos> | ||
[ ]+[0-9a-f]+:[ ]+c001a303[ ]+lw[ ]+t1,-1024\(gp\) # fffffffffffffe00 <addr_rel_gp_neg> | ||
[ ]+[0-9a-f]+:[ ]+10002383[ ]+lw[ ]+t2,256\(zero\) # 100 <addr_rel_zero_pos> | ||
[ ]+[0-9a-f]+:[ ]+80002e03[ ]+lw[ ]+t3,-2048\(zero\) # fffffffffffff800 <addr_rel_zero_neg> | ||
[ ]+[0-9a-f]+:[ ]+fff00e83[ ]+lb[ ]+t4,-1\(zero\) # ffffffffffffffff <addr_top> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
.set __global_pointer$, 0x00000200 | ||
|
||
.ifdef rv64 | ||
topbase = 0xffffffff00000000 | ||
.else | ||
topbase = 0 | ||
.endif | ||
|
||
.set addr_load, topbase + 0xffffeffc # -0x1000 -4 | ||
.set addr_store, topbase + 0xffffdff8 # -0x2000 -8 | ||
.set addr_jalr_1, topbase + 0xffffd000 # -0x3000 | ||
.set addr_jalr_2, topbase + 0xffffbff4 # -0x4000 -12 | ||
.set addr_jalr_3, topbase + 0xffffb000 # -0x5000 | ||
.set addr_loadaddr, topbase + 0xffff9ff0 # -0x6000 -16 | ||
.set addr_loadaddr_c, topbase + 0xffff8fec # -0x7000 -20 | ||
.set addr_loadaddr_w, topbase + 0xffff7fe8 # -0x8000 -24 | ||
.set addr_loadaddr_w_c, topbase + 0xffff6fe4 # -0x9000 -28 | ||
.set addr_rel_gp_pos, 0x00000600 # __global_pointer$ + 0x400 | ||
.set addr_rel_gp_neg, topbase + 0xfffffe00 # __global_pointer$ - 0x400 | ||
.set addr_rel_zero_pos, 0x00000100 | ||
.set addr_rel_zero_neg, topbase + 0xfffff800 # -0x800 | ||
.set addr_top, topbase + 0xffffffff # -1 | ||
|
||
target: | ||
.option push | ||
.option arch, -c | ||
## Use hi_addr | ||
# Load | ||
lui t0, 0xfffff | ||
lw s2, -4(t0) | ||
# Store | ||
lui t1, 0xffffe | ||
sw s3, -8(t1) | ||
# JALR (implicit destination, no offset) | ||
lui t2, 0xffffd | ||
jalr t2 | ||
# JALR (implicit destination, with offset) | ||
lui t3, 0xffffc | ||
jalr -12(t3) | ||
# JALR (explicit destination, no offset) | ||
lui t4, 0xffffb | ||
jalr s4, t4 | ||
# ADDI (not compressed) | ||
lui t5, 0xffffa | ||
addi s5, t5, -16 | ||
# C.ADDI | ||
lui t6, 0xffff9 | ||
.option pop | ||
c.addi t6, -20 | ||
.ifdef rv64 | ||
.option push | ||
.option arch, -c | ||
# ADDIW (not compressed) | ||
lui s6, 0xffff8 | ||
addiw s7, s6, -24 | ||
# C.ADDIW | ||
lui s8, 0xffff7 | ||
.option pop | ||
c.addiw s8, -28 | ||
.endif | ||
|
||
# Use addresses relative to gp | ||
lw t0, 0x400(gp) | ||
lw t1, -0x400(gp) | ||
# Use addresses relative to zero | ||
lw t2, 0x100(zero) | ||
lw t3, -0x800(zero) | ||
|
||
# Access to the highest address | ||
lb t4, -1(zero) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#as: -march=rv32i | ||
#source: dis-addr-3.s | ||
#objdump: -d | ||
|
||
.*: file format elf32-(little|big)riscv | ||
|
||
|
||
Disassembly of section .text: | ||
|
||
0+000 <target>: | ||
[ ]+[0-9a-f]+:[ ]+0051a283[ ]+lw[ ]+t0,5\(gp\) # 4 <addr_rel_gp_pos> | ||
[ ]+[0-9a-f]+:[ ]+ffd1a303[ ]+lw[ ]+t1,-3\(gp\) # fffffffc <addr_rel_gp_neg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#as: -march=rv64i -defsym rv64=1 | ||
#source: dis-addr-3.s | ||
#objdump: -d | ||
|
||
.*: file format elf64-(little|big)riscv | ||
|
||
|
||
Disassembly of section .text: | ||
|
||
0+000 <target>: | ||
[ ]+[0-9a-f]+:[ ]+0051a283[ ]+lw[ ]+t0,5\(gp\) # 4 <addr_rel_gp_pos> | ||
[ ]+[0-9a-f]+:[ ]+ffd1a303[ ]+lw[ ]+t1,-3\(gp\) # fffffffffffffffc <addr_rel_gp_neg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
.ifdef rv64 | ||
topbase = 0xffffffff00000000 | ||
.else | ||
topbase = 0 | ||
.endif | ||
|
||
.set __global_pointer$, topbase + 0xffffffff # -1 | ||
.set addr_rel_gp_pos, 0x00000004 # +4 | ||
.set addr_rel_gp_neg, topbase + 0xfffffffc # -4 | ||
|
||
target: | ||
# Use addresses relative to gp | ||
# (gp is the highest address) | ||
lw t0, +5(gp) | ||
lw t1, -3(gp) |