RISC-V: Resurrect GP-relative disassembly hints

We missed a "_gp" when changing the GP symbol.  To make sure that
doesn't happen again, we now use the same definition everywhere (thanks,
Nick).

include/ChangeLog:

2017-04-03  Palmer Dabbelt  <palmer@dabbelt.com>

        * elf/riscv.h (RISCV_GP_SYMBOL): New define.

bfd/ChangeLog:

2017-04-03  Palmer Dabbelt  <palmer@dabbelt.com>

        * elfnn-riscv.c (GP_NAME): Delete.
        (riscv_global_pointer_value): Change GP_NAME to RISCV_GP_SYMBOL.
        (_bfd_riscv_relax_lui): Likewise.

opcodes/ChangeLog:

2017-04-03  Palmer Dabbelt  <palmer@dabbelt.com>

        * riscv-dis.c (riscv_disassemble_insn): Change "_gp" to
        RISCV_GP_SYMBOL.
This commit is contained in:
Palmer Dabbelt
2017-04-03 10:08:29 -07:00
parent 65dd1e590e
commit b52920324f
6 changed files with 22 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2017-04-03 Palmer Dabbelt <palmer@dabbelt.com>
* elfnn-riscv.c (GP_NAME): Delete.
(riscv_global_pointer_value): Change GP_NAME to RISCV_GP_SYMBOL.
(_bfd_riscv_relax_lui): Likewise.
2017-04-04 Nick Clifton <nickc@redhat.com> 2017-04-04 Nick Clifton <nickc@redhat.com>
PR binutils/21342 PR binutils/21342

View File

@ -52,10 +52,6 @@
#define ELF_MAXPAGESIZE 0x1000 #define ELF_MAXPAGESIZE 0x1000
#define ELF_COMMONPAGESIZE 0x1000 #define ELF_COMMONPAGESIZE 0x1000
/* The global pointer's symbol name. */
#define GP_NAME "__global_pointer$"
/* The RISC-V linker needs to keep track of the number of relocs that it /* The RISC-V linker needs to keep track of the number of relocs that it
decides to copy as dynamic relocs in check_relocs for each symbol. decides to copy as dynamic relocs in check_relocs for each symbol.
This is so that it can later discard them if they are found to be This is so that it can later discard them if they are found to be
@ -1467,7 +1463,7 @@ riscv_global_pointer_value (struct bfd_link_info *info)
{ {
struct bfd_link_hash_entry *h; struct bfd_link_hash_entry *h;
h = bfd_link_hash_lookup (info->hash, GP_NAME, FALSE, FALSE, TRUE); h = bfd_link_hash_lookup (info->hash, RISCV_GP_SYMBOL, FALSE, FALSE, TRUE);
if (h == NULL || h->type != bfd_link_hash_defined) if (h == NULL || h->type != bfd_link_hash_defined)
return 0; return 0;
@ -2818,7 +2814,8 @@ _bfd_riscv_relax_lui (bfd *abfd,
/* If gp and the symbol are in the same output section, then /* If gp and the symbol are in the same output section, then
consider only that section's alignment. */ consider only that section's alignment. */
struct bfd_link_hash_entry *h = struct bfd_link_hash_entry *h =
bfd_link_hash_lookup (link_info->hash, GP_NAME, FALSE, FALSE, TRUE); bfd_link_hash_lookup (link_info->hash, RISCV_GP_SYMBOL, FALSE, FALSE,
TRUE);
if (h->u.def.section->output_section == sym_sec->output_section) if (h->u.def.section->output_section == sym_sec->output_section)
max_alignment = (bfd_vma) 1 << sym_sec->output_section->alignment_power; max_alignment = (bfd_vma) 1 << sym_sec->output_section->alignment_power;
} }

View File

@ -1,3 +1,7 @@
2017-04-03 Palmer Dabbelt <palmer@dabbelt.com>
* elf/riscv.h (RISCV_GP_SYMBOL): New define.
2017-03-27 Andrew Waterman <andrew@sifive.com> 2017-03-27 Andrew Waterman <andrew@sifive.com>
* opcode/riscv-opc.h (CSR_PMPCFG0): New define. * opcode/riscv-opc.h (CSR_PMPCFG0): New define.

View File

@ -109,4 +109,7 @@ END_RELOC_NUMBERS (R_RISCV_max)
/* File uses the quad-float ABI. */ /* File uses the quad-float ABI. */
#define EF_RISCV_FLOAT_ABI_QUAD 0x0006 #define EF_RISCV_FLOAT_ABI_QUAD 0x0006
/* The name of the global pointer symbol. */
#define RISCV_GP_SYMBOL "__global_pointer$"
#endif /* _ELF_RISCV_H */ #endif /* _ELF_RISCV_H */

View File

@ -1,3 +1,8 @@
2017-04-03 Palmer Dabbelt <palmer@dabbelt.com>
* riscv-dis.c (riscv_disassemble_insn): Change "_gp" to
RISCV_GP_SYMBOL.
2017-03-30 Pip Cet <pipcet@gmail.com> 2017-03-30 Pip Cet <pipcet@gmail.com>
* configure.ac: Add (empty) bfd_wasm32_arch target. * configure.ac: Add (empty) bfd_wasm32_arch target.

View File

@ -384,7 +384,7 @@ riscv_disassemble_insn (bfd_vma memaddr, insn_t word, disassemble_info *info)
pd->hi_addr[i] = -1; pd->hi_addr[i] = -1;
for (i = 0; i < info->symtab_size; i++) for (i = 0; i < info->symtab_size; i++)
if (strcmp (bfd_asymbol_name (info->symtab[i]), "_gp") == 0) if (strcmp (bfd_asymbol_name (info->symtab[i]), RISCV_GP_SYMBOL) == 0)
pd->gp = bfd_asymbol_value (info->symtab[i]); pd->gp = bfd_asymbol_value (info->symtab[i]);
} }
else else