public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] RISC-V: Always generate R_RISCV_CALL_PLT reloc for call in assembler.
@ 2022-09-21  3:47 Nelson Chu
  0 siblings, 0 replies; only message in thread
From: Nelson Chu @ 2022-09-21  3:47 UTC (permalink / raw)
  To: bfd-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=70f35d72ef04cd23771875c1661c9975044a749c

commit 70f35d72ef04cd23771875c1661c9975044a749c
Author: Nelson Chu <nelson@rivosinc.com>
Date:   Wed Sep 14 10:25:44 2022 +0800

    RISC-V: Always generate R_RISCV_CALL_PLT reloc for call in assembler.
    
    Since we have the same behaviors of CALL and CALL_PLT relocs in linker for now,
    https://github.com/bminor/binutils-gdb/commit/3b1450b38c644f99aa2e211747b428b9f8d15cca
    
    And the psabi already deprecate the CALL reloc,
    https://github.com/riscv-non-isa/riscv-elf-psabi-doc/commit/a0dced85018d7a0ec17023c9389cbd70b1dbc1b0
    
    Therefore, we should always generate R_RISCV_CALL_PLT reloc for call, even if
    it has @plt postfix.  I believe LLVM (https://reviews.llvm.org/D132530) already
    support this, so GNU as should do the same thing.
    
    gas/
            * config/tc-riscv.c (riscv_ip): Always generate CALL_PLT reloc for
            call, even if it has @plt postfix.
            * testsuite/gas/riscv/no-relax-reloc.d: Updated CALL to CALL_PLT.
            * testsuite/gas/riscv/relax-reloc.d: Likewise.
    ld/
            * testsuite/ld-riscv-elf/variant_cc-r.d: Updated CALL to CALL_PLT.

Diff:
---
 gas/config/tc-riscv.c                    |  8 ++---
 gas/testsuite/gas/riscv/no-relax-reloc.d |  2 +-
 gas/testsuite/gas/riscv/relax-reloc.d    |  2 +-
 ld/testsuite/ld-riscv-elf/variant_cc-r.d | 56 ++++++++++++++++----------------
 4 files changed, 32 insertions(+), 36 deletions(-)

diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 2f5ee18e451..629d4be0624 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -3113,12 +3113,8 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
 	      my_getExpression (imm_expr, asarg);
 	      asarg = expr_end;
 	      if (strcmp (asarg, "@plt") == 0)
-		{
-		  *imm_reloc = BFD_RELOC_RISCV_CALL_PLT;
-		  asarg += 4;
-		}
-	      else
-		*imm_reloc = BFD_RELOC_RISCV_CALL;
+		asarg += 4;
+	      *imm_reloc = BFD_RELOC_RISCV_CALL_PLT;
 	      continue;
 
 	    case 'O':
diff --git a/gas/testsuite/gas/riscv/no-relax-reloc.d b/gas/testsuite/gas/riscv/no-relax-reloc.d
index c2ca1aa6e72..d7269a71037 100644
--- a/gas/testsuite/gas/riscv/no-relax-reloc.d
+++ b/gas/testsuite/gas/riscv/no-relax-reloc.d
@@ -11,4 +11,4 @@ RELOCATION RECORDS FOR .*
 0+c R_RISCV_PCREL_LO12_I.*
 0+10 R_RISCV_GOT_HI20.*
 0+14 R_RISCV_PCREL_LO12_I.*
-0+18 R_RISCV_CALL.*
+0+18 R_RISCV_CALL_PLT.*
diff --git a/gas/testsuite/gas/riscv/relax-reloc.d b/gas/testsuite/gas/riscv/relax-reloc.d
index 623218ec5d1..4a368806066 100644
--- a/gas/testsuite/gas/riscv/relax-reloc.d
+++ b/gas/testsuite/gas/riscv/relax-reloc.d
@@ -16,5 +16,5 @@ RELOCATION RECORDS FOR .*
 0+10 R_RISCV_GOT_HI20.*
 0+14 R_RISCV_PCREL_LO12_I.*
 0+14 R_RISCV_RELAX.*
-0+18 R_RISCV_CALL.*
+0+18 R_RISCV_CALL_PLT.*
 0+18 R_RISCV_RELAX.*
diff --git a/ld/testsuite/ld-riscv-elf/variant_cc-r.d b/ld/testsuite/ld-riscv-elf/variant_cc-r.d
index 5235b8e90d7..7df449bfd2a 100644
--- a/ld/testsuite/ld-riscv-elf/variant_cc-r.d
+++ b/ld/testsuite/ld-riscv-elf/variant_cc-r.d
@@ -6,34 +6,34 @@
 
 Relocation section '.rela.text' at .*
 #...
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+cc_global_default_def \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+cc_global_default_undef \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+cc_global_hidden_def \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+cc_global_default_ifunc\(\)[ 	]+cc_global_default_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+cc_global_hidden_ifunc\(\)[ 	]+cc_global_hidden_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+cc_local \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+cc_local_ifunc\(\)[ 	]+cc_local_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+nocc_global_default_def \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+nocc_global_default_undef \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+nocc_global_hidden_def \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+nocc_global_default_ifunc\(\)[ 	]+nocc_global_default_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+nocc_global_hidden_ifunc\(\)[ 	]+nocc_global_hidden_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+nocc_local \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+nocc_local_ifunc\(\)[ 	]+nocc_local_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+cc_global_default_def \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+cc_global_default_undef \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+cc_global_hidden_def \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+cc_global_default_ifunc\(\)[ 	]+cc_global_default_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+cc_global_hidden_ifunc\(\)[ 	]+cc_global_hidden_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0070[ 	]+cc_local2 \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+cc_local2_ifunc\(\)[ 	]+cc_local2_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+nocc_global_default_def \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+nocc_global_default_undef \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0000[ 	]+nocc_global_hidden_def \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+nocc_global_default_ifunc\(\)[ 	]+nocc_global_default_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+nocc_global_hidden_ifunc\(\)[ 	]+nocc_global_hidden_ifunc \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+0+0070[ 	]+nocc_local2 \+ 0
-[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL[ 	]+nocc_local2_ifunc\(\)[ 	]+nocc_local2_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+cc_global_default_def \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+cc_global_default_undef \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+cc_global_hidden_def \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+cc_global_default_ifunc\(\)[ 	]+cc_global_default_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+cc_global_hidden_ifunc\(\)[ 	]+cc_global_hidden_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+cc_local \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+cc_local_ifunc\(\)[ 	]+cc_local_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+nocc_global_default_def \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+nocc_global_default_undef \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+nocc_global_hidden_def \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+nocc_global_default_ifunc\(\)[ 	]+nocc_global_default_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+nocc_global_hidden_ifunc\(\)[ 	]+nocc_global_hidden_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+nocc_local \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+nocc_local_ifunc\(\)[ 	]+nocc_local_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+cc_global_default_def \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+cc_global_default_undef \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+cc_global_hidden_def \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+cc_global_default_ifunc\(\)[ 	]+cc_global_default_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+cc_global_hidden_ifunc\(\)[ 	]+cc_global_hidden_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0070[ 	]+cc_local2 \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+cc_local2_ifunc\(\)[ 	]+cc_local2_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+nocc_global_default_def \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+nocc_global_default_undef \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0000[ 	]+nocc_global_hidden_def \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+nocc_global_default_ifunc\(\)[ 	]+nocc_global_default_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+nocc_global_hidden_ifunc\(\)[ 	]+nocc_global_hidden_ifunc \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+0+0070[ 	]+nocc_local2 \+ 0
+[0-9a-f]+[ 	]+[0-9a-f]+[ 	]+R_RISCV_CALL_PLT[ 	]+nocc_local2_ifunc\(\)[ 	]+nocc_local2_ifunc \+ 0
 #...
 Symbol table '.symtab' contains .*
 .*

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-09-21  3:47 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-21  3:47 [binutils-gdb] RISC-V: Always generate R_RISCV_CALL_PLT reloc for call in assembler Nelson Chu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).