summaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authormengqinggang <mengqinggang@loongson.cn>2023-04-18 11:49:21 +0100
committerNick Clifton <nickc@redhat.com>2023-04-18 11:49:21 +0100
commita02676b77d84d8229b5d4b01259535234cded19e (patch)
tree5303783009550d51a718453a7ff335ea57f582fd /gas
parent01996a7a49bb278a50e72cb9a70011b8f907968e (diff)
downloadbinutils-gdb-a02676b77d84d8229b5d4b01259535234cded19e.tar.gz
Symbols with GOT relocatios do not fix adjustbale
gas * config/tc-loongarch.c (loongarch_fix_adjustable): Symbols with GOT relocatios do not fix adjustbale. * testsuite/gas/loongarch/macro_op_large_abs.d: Regenerated. * testsuite/gas/loongarch/macro_op_large_pc.d: Regenerated. ld * testsuite/ld-loongarch-elf/macro_op.d: Regenerated. -
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-loongarch.c15
-rw-r--r--gas/testsuite/gas/loongarch/macro_op_large_abs.d120
-rw-r--r--gas/testsuite/gas/loongarch/macro_op_large_pc.d18
4 files changed, 91 insertions, 69 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 760230dc7b6..80548d24ba6 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2023-04-18 mengqinggang <mengqinggang@loongson.cn>
+
+ * config/tc-loongarch.c (loongarch_fix_adjustable): Symbols with
+ GOT relocatios do not fix adjustbale.
+ * testsuite/gas/loongarch/macro_op_large_abs.d: Regenerated.
+ * testsuite/gas/loongarch/macro_op_large_pc.d: Regenerated.
+
2023-04-18 Thomas Koenig <tkoenig@netcologne.de>
* doc/internals.texi (Relaxing with a table): Describe handling of
diff --git a/gas/config/tc-loongarch.c b/gas/config/tc-loongarch.c
index dd47581ed7a..7d8749c5951 100644
--- a/gas/config/tc-loongarch.c
+++ b/gas/config/tc-loongarch.c
@@ -1270,6 +1270,21 @@ loongarch_fix_adjustable (fixS *fix)
|| S_FORCE_RELOC (fix->fx_addsy, true))
return 0;
+ /* Loongarch loads extern symbols by GOT, and if there are embedded
+ asm(".local S"), gcc just output ".local S" to assembly file.
+ For a local symbol with GOT relocations, this adjustments will make
+ GOT relocation's addend not equal to zero. So this adjustments is
+ forbidden for got relocs. */
+ if(fix->fx_r_type == BFD_RELOC_LARCH_GOT_PC_HI20
+ || fix->fx_r_type == BFD_RELOC_LARCH_GOT_PC_LO12
+ || fix->fx_r_type == BFD_RELOC_LARCH_GOT64_PC_LO20
+ || fix->fx_r_type == BFD_RELOC_LARCH_GOT64_PC_HI12
+ || fix->fx_r_type == BFD_RELOC_LARCH_GOT_HI20
+ || fix->fx_r_type == BFD_RELOC_LARCH_GOT_LO12
+ || fix->fx_r_type == BFD_RELOC_LARCH_GOT64_LO20
+ || fix->fx_r_type == BFD_RELOC_LARCH_GOT64_HI12)
+ return 0;
+
return 1;
}
diff --git a/gas/testsuite/gas/loongarch/macro_op_large_abs.d b/gas/testsuite/gas/loongarch/macro_op_large_abs.d
index c3214a859e6..c0b98dbbea2 100644
--- a/gas/testsuite/gas/loongarch/macro_op_large_abs.d
+++ b/gas/testsuite/gas/loongarch/macro_op_large_abs.d
@@ -1,4 +1,4 @@
-#as:
+#as: -mla-global-with-abs
#objdump: -dr
#skip: loongarch32-*-*
@@ -7,7 +7,7 @@
Disassembly of section .text:
-00000000.* <.text>:
+00000000.* <.L1>:
[ ]+0:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
[ ]+0:[ ]+R_LARCH_PCALA_HI20[ ]+.text
[ ]+4:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
@@ -17,61 +17,61 @@ Disassembly of section .text:
[ ]+c:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
[ ]+c:[ ]+R_LARCH_PCALA64_HI12[ ]+.text
[ ]+10:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
-[ ]+14:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
-[ ]+14:[ ]+R_LARCH_GOT_PC_HI20[ ]+.text
-[ ]+18:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
-[ ]+18:[ ]+R_LARCH_GOT_PC_LO12[ ]+.text
-[ ]+1c:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
-[ ]+1c:[ ]+R_LARCH_GOT64_PC_LO20[ ]+.text
-[ ]+20:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
-[ ]+20:[ ]+R_LARCH_GOT64_PC_HI12[ ]+.text
-[ ]+24:[ ]+380c1484[ ]+ldx.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
-[ ]+28:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
-[ ]+28:[ ]+R_LARCH_PCALA_HI20[ ]+.text
-[ ]+2c:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
-[ ]+2c:[ ]+R_LARCH_PCALA_LO12[ ]+.text
-[ ]+30:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
-[ ]+30:[ ]+R_LARCH_PCALA64_LO20[ ]+.text
-[ ]+34:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
-[ ]+34:[ ]+R_LARCH_PCALA64_HI12[ ]+.text
-[ ]+38:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
-[ ]+3c:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
-[ ]+3c:[ ]+R_LARCH_GOT_PC_HI20[ ]+.text
-[ ]+40:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
-[ ]+40:[ ]+R_LARCH_GOT_PC_LO12[ ]+.text
-[ ]+44:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
-[ ]+44:[ ]+R_LARCH_GOT64_PC_LO20[ ]+.text
-[ ]+48:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
-[ ]+48:[ ]+R_LARCH_GOT64_PC_HI12[ ]+.text
-[ ]+4c:[ ]+380c1484[ ]+ldx.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
-[ ]+50:[ ]+14000004[ ]+lu12i.w[ ]+\$a0,[ ]+0
-[ ]+50:[ ]+R_LARCH_TLS_LE_HI20[ ]+TLS1
-[ ]+54:[ ]+03800084[ ]+ori[ ]+\$a0,[ ]+\$a0,[ ]+0x0
-[ ]+54:[ ]+R_LARCH_TLS_LE_LO12[ ]+TLS1
-[ ]+58:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
-[ ]+58:[ ]+R_LARCH_TLS_IE_PC_HI20[ ]+TLS1
-[ ]+5c:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
-[ ]+5c:[ ]+R_LARCH_TLS_IE_PC_LO12[ ]+TLS1
-[ ]+60:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
-[ ]+60:[ ]+R_LARCH_TLS_IE64_PC_LO20[ ]+TLS1
-[ ]+64:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
-[ ]+64:[ ]+R_LARCH_TLS_IE64_PC_HI12[ ]+TLS1
-[ ]+68:[ ]+380c1484[ ]+ldx.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
-[ ]+6c:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
-[ ]+6c:[ ]+R_LARCH_TLS_LD_PC_HI20[ ]+TLS1
-[ ]+70:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
-[ ]+70:[ ]+R_LARCH_GOT_PC_LO12[ ]+TLS1
-[ ]+74:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
-[ ]+74:[ ]+R_LARCH_GOT64_PC_LO20[ ]+TLS1
-[ ]+78:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
-[ ]+78:[ ]+R_LARCH_GOT64_PC_HI12[ ]+TLS1
-[ ]+7c:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
-[ ]+80:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
-[ ]+80:[ ]+R_LARCH_TLS_GD_PC_HI20[ ]+TLS1
-[ ]+84:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
-[ ]+84:[ ]+R_LARCH_GOT_PC_LO12[ ]+TLS1
-[ ]+88:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
-[ ]+88:[ ]+R_LARCH_GOT64_PC_LO20[ ]+TLS1
-[ ]+8c:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
-[ ]+8c:[ ]+R_LARCH_GOT64_PC_HI12[ ]+TLS1
-[ ]+90:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
+[ ]+14:[ ]+14000004[ ]+lu12i.w[ ]+\$a0,[ ]+0
+[ ]+14:[ ]+R_LARCH_MARK_LA[ ]+\*ABS\*
+[ ]+14:[ ]+R_LARCH_ABS_HI20[ ]+.text
+[ ]+18:[ ]+03800084[ ]+ori[ ]+\$a0,[ ]+\$a0,[ ]+0x0
+[ ]+18:[ ]+R_LARCH_ABS_LO12[ ]+.text
+[ ]+1c:[ ]+16000004[ ]+lu32i.d[ ]+\$a0,[ ]+0
+[ ]+1c:[ ]+R_LARCH_ABS64_LO20[ ]+.text
+[ ]+20:[ ]+03000084[ ]+lu52i.d[ ]+\$a0,[ ]+\$a0,[ ]+0
+[ ]+20:[ ]+R_LARCH_ABS64_HI12[ ]+.text
+[ ]+24:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
+[ ]+24:[ ]+R_LARCH_PCALA_HI20[ ]+.text
+[ ]+28:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
+[ ]+28:[ ]+R_LARCH_PCALA_LO12[ ]+.text
+[ ]+2c:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
+[ ]+2c:[ ]+R_LARCH_PCALA64_LO20[ ]+.text
+[ ]+30:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
+[ ]+30:[ ]+R_LARCH_PCALA64_HI12[ ]+.text
+[ ]+34:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
+[ ]+38:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
+[ ]+38:[ ]+R_LARCH_GOT_PC_HI20[ ]+.L1
+[ ]+3c:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
+[ ]+3c:[ ]+R_LARCH_GOT_PC_LO12[ ]+.L1
+[ ]+40:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
+[ ]+40:[ ]+R_LARCH_GOT64_PC_LO20[ ]+.L1
+[ ]+44:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
+[ ]+44:[ ]+R_LARCH_GOT64_PC_HI12[ ]+.L1
+[ ]+48:[ ]+380c1484[ ]+ldx.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
+[ ]+4c:[ ]+14000004[ ]+lu12i.w[ ]+\$a0,[ ]+0
+[ ]+4c:[ ]+R_LARCH_TLS_LE_HI20[ ]+TLS1
+[ ]+50:[ ]+03800084[ ]+ori[ ]+\$a0,[ ]+\$a0,[ ]+0x0
+[ ]+50:[ ]+R_LARCH_TLS_LE_LO12[ ]+TLS1
+[ ]+54:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
+[ ]+54:[ ]+R_LARCH_TLS_IE_PC_HI20[ ]+TLS1
+[ ]+58:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
+[ ]+58:[ ]+R_LARCH_TLS_IE_PC_LO12[ ]+TLS1
+[ ]+5c:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
+[ ]+5c:[ ]+R_LARCH_TLS_IE64_PC_LO20[ ]+TLS1
+[ ]+60:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
+[ ]+60:[ ]+R_LARCH_TLS_IE64_PC_HI12[ ]+TLS1
+[ ]+64:[ ]+380c1484[ ]+ldx.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
+[ ]+68:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
+[ ]+68:[ ]+R_LARCH_TLS_LD_PC_HI20[ ]+TLS1
+[ ]+6c:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
+[ ]+6c:[ ]+R_LARCH_GOT_PC_LO12[ ]+TLS1
+[ ]+70:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
+[ ]+70:[ ]+R_LARCH_GOT64_PC_LO20[ ]+TLS1
+[ ]+74:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
+[ ]+74:[ ]+R_LARCH_GOT64_PC_HI12[ ]+TLS1
+[ ]+78:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
+[ ]+7c:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
+[ ]+7c:[ ]+R_LARCH_TLS_GD_PC_HI20[ ]+TLS1
+[ ]+80:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
+[ ]+80:[ ]+R_LARCH_GOT_PC_LO12[ ]+TLS1
+[ ]+84:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
+[ ]+84:[ ]+R_LARCH_GOT64_PC_LO20[ ]+TLS1
+[ ]+88:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
+[ ]+88:[ ]+R_LARCH_GOT64_PC_HI12[ ]+TLS1
+[ ]+8c:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
diff --git a/gas/testsuite/gas/loongarch/macro_op_large_pc.d b/gas/testsuite/gas/loongarch/macro_op_large_pc.d
index c3214a859e6..3b532755b6c 100644
--- a/gas/testsuite/gas/loongarch/macro_op_large_pc.d
+++ b/gas/testsuite/gas/loongarch/macro_op_large_pc.d
@@ -7,7 +7,7 @@
Disassembly of section .text:
-00000000.* <.text>:
+00000000.* <.L1>:
[ ]+0:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
[ ]+0:[ ]+R_LARCH_PCALA_HI20[ ]+.text
[ ]+4:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
@@ -18,13 +18,13 @@ Disassembly of section .text:
[ ]+c:[ ]+R_LARCH_PCALA64_HI12[ ]+.text
[ ]+10:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
[ ]+14:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
-[ ]+14:[ ]+R_LARCH_GOT_PC_HI20[ ]+.text
+[ ]+14:[ ]+R_LARCH_GOT_PC_HI20[ ]+.L1
[ ]+18:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
-[ ]+18:[ ]+R_LARCH_GOT_PC_LO12[ ]+.text
+[ ]+18:[ ]+R_LARCH_GOT_PC_LO12[ ]+.L1
[ ]+1c:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
-[ ]+1c:[ ]+R_LARCH_GOT64_PC_LO20[ ]+.text
+[ ]+1c:[ ]+R_LARCH_GOT64_PC_LO20[ ]+.L1
[ ]+20:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
-[ ]+20:[ ]+R_LARCH_GOT64_PC_HI12[ ]+.text
+[ ]+20:[ ]+R_LARCH_GOT64_PC_HI12[ ]+.L1
[ ]+24:[ ]+380c1484[ ]+ldx.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
[ ]+28:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
[ ]+28:[ ]+R_LARCH_PCALA_HI20[ ]+.text
@@ -36,13 +36,13 @@ Disassembly of section .text:
[ ]+34:[ ]+R_LARCH_PCALA64_HI12[ ]+.text
[ ]+38:[ ]+00109484[ ]+add.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
[ ]+3c:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0,[ ]+0
-[ ]+3c:[ ]+R_LARCH_GOT_PC_HI20[ ]+.text
+[ ]+3c:[ ]+R_LARCH_GOT_PC_HI20[ ]+.L1
[ ]+40:[ ]+02c00005[ ]+addi.d[ ]+\$a1,[ ]+\$zero,[ ]+0
-[ ]+40:[ ]+R_LARCH_GOT_PC_LO12[ ]+.text
+[ ]+40:[ ]+R_LARCH_GOT_PC_LO12[ ]+.L1
[ ]+44:[ ]+16000005[ ]+lu32i.d[ ]+\$a1,[ ]+0
-[ ]+44:[ ]+R_LARCH_GOT64_PC_LO20[ ]+.text
+[ ]+44:[ ]+R_LARCH_GOT64_PC_LO20[ ]+.L1
[ ]+48:[ ]+030000a5[ ]+lu52i.d[ ]+\$a1,[ ]+\$a1,[ ]+0
-[ ]+48:[ ]+R_LARCH_GOT64_PC_HI12[ ]+.text
+[ ]+48:[ ]+R_LARCH_GOT64_PC_HI12[ ]+.L1
[ ]+4c:[ ]+380c1484[ ]+ldx.d[ ]+\$a0,[ ]+\$a0,[ ]+\$a1
[ ]+50:[ ]+14000004[ ]+lu12i.w[ ]+\$a0,[ ]+0
[ ]+50:[ ]+R_LARCH_TLS_LE_HI20[ ]+TLS1