if [istarget "riscv*-*-*"] {
     run_dump_test "align-small-region"
     run_dump_test "call-relax"
-    run_dump_test "pcgp-relax"
+    run_dump_test "pcgp-relax-01"
+    run_dump_test "pcgp-relax-02"
     run_dump_test "c-lui"
     run_dump_test "c-lui-2"
     run_dump_test "disas-jalr"
 
--- /dev/null
+#source: pcgp-relax-01.s
+#ld: --relax
+#objdump: -d -Mno-aliases
+
+.*:[   ]+file format .*
+
+
+Disassembly of section \.text:
+
+0+[0-9a-f]+ <_start>:
+.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a0,a0,[0-9]+
+.*:[   ]+[0-9a-f]+[    ]+jal[  ]+ra,[0-9a-f]+ <_start>
+.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a1,gp,\-[0-9]+ # [0-9a-f]+ <data_g>
+.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a2,gp,\-[0-9]+ # [0-9a-f]+ <data_g>
+.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a3,tp,0 # 0 <data_t>
+.*:[   ]+[0-9a-f]+[    ]+auipc[        ]+a0,0x[0-9a-f]+
 
--- /dev/null
+       .text
+       .globl _start
+_start:
+       addi    a0, a0, %pcrel_lo(.L2)
+
+       call    _start
+.L1:
+       auipc   a1, %pcrel_hi(data_g)
+       addi    a1, a1, %pcrel_lo(.L1)
+
+       lui     a2, %hi(data_g)
+       addi    a2, a2, %lo(data_g)
+
+       lui     a3, %tprel_hi(data_t)
+       add     a3, a3, tp, %tprel_add(data_t)
+       addi    a3, a3, %tprel_lo(data_t)
+
+.L2:
+       auipc   a0, %pcrel_hi(data_g)
+
+       .data
+       .word 0x0
+       .globl data_g
+data_g:
+       .word 0x1
+
+       .section .tbss
+data_t:
+       .word 0x0
 
--- /dev/null
+#source: pcgp-relax-02.s
+#as:
+#ld: --relax
+#objdump: -d
+
+.*:[   ]+file format .*
+
+
+Disassembly of section .text:
+
+[0-9a-f]+ <_start>:
+.*:[   ]+[0-9a-f]+[    ]+auipc[        ]+a1.*
+.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a0,gp.*<data_a>
+.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a1,a1.*<data_b>
+#pass
 
--- /dev/null
+       .text
+       .globl _start
+_start:
+.L1:   auipc   a0, %pcrel_hi(data_a)
+.L2:   auipc   a1, %pcrel_hi(data_b)
+       addi    a0, a0, %pcrel_lo(.L1)
+       addi    a1, a1, %pcrel_lo(.L2)
+
+       .data
+       .word 0x0
+       .globl data_a
+data_a:
+       .word 0x1
+
+       .section .rodata
+       .globl data_b
+data_b:
+       .word 0x2
 
+++ /dev/null
-#source: pcgp-relax.s
-#ld: --relax
-#objdump: -d -Mno-aliases
-
-.*:[   ]+file format .*
-
-
-Disassembly of section \.text:
-
-0+[0-9a-f]+ <_start>:
-.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a0,a0,[0-9]+
-.*:[   ]+[0-9a-f]+[    ]+jal[  ]+ra,[0-9a-f]+ <_start>
-.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a1,gp,\-[0-9]+ # [0-9a-f]+ <data_g>
-.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a2,gp,\-[0-9]+ # [0-9a-f]+ <data_g>
-.*:[   ]+[0-9a-f]+[    ]+addi[         ]+a3,tp,0 # 0 <data_t>
-.*:[   ]+[0-9a-f]+[    ]+auipc[        ]+a0,0x[0-9a-f]+
 
+++ /dev/null
-       .text
-       .globl _start
-_start:
-       addi    a0, a0, %pcrel_lo(.L2)
-
-       call    _start
-.L1:
-       auipc   a1, %pcrel_hi(data_g)
-       addi    a1, a1, %pcrel_lo(.L1)
-
-       lui     a2, %hi(data_g)
-       addi    a2, a2, %lo(data_g)
-
-       lui     a3, %tprel_hi(data_t)
-       add     a3, a3, tp, %tprel_add(data_t)
-       addi    a3, a3, %tprel_lo(data_t)
-
-.L2:
-       auipc   a0, %pcrel_hi(data_g)
-
-       .data
-       .word 0x0
-       .globl data_g
-data_g:
-       .word 0x1
-
-       .section .tbss
-data_t:
-       .word 0x0