RISC-V: Make unique SECCAT_SRODATA names start with .srodata (not .sdata2)
default_unique_section uses ".sdata2" as a prefix for SECCAT_SRODATA unique sections, but RISC-V uses ".srodata" instead. Override the TARGET_ASM_UNIQUE_SECTION function to catch this case, allowing the default to be used for all other sections. Signed-off-by: Keith Packard <keithp@keithp.com> gcc/ * config/riscv/riscv.c (riscv_unique_section): New. (TARGET_ASM_UNIQUE_SECTION): New.
This commit is contained in:
parent
de6320a816
commit
adce62f53d
@ -1,3 +1,8 @@
|
||||
2020-05-12 Keith Packard <keith.packard@sifive.com>
|
||||
|
||||
* config/riscv/riscv.c (riscv_unique_section): New.
|
||||
(TARGET_ASM_UNIQUE_SECTION): New.
|
||||
|
||||
2020-05-12 Craig Blackmore <craig.blackmore@embecosm.com>
|
||||
|
||||
* config.gcc: Add riscv-shorten-memrefs.o to extra_objs for riscv.
|
||||
|
@ -3492,6 +3492,43 @@ riscv_select_section (tree decl, int reloc,
|
||||
}
|
||||
}
|
||||
|
||||
/* Switch to the appropriate section for output of DECL. */
|
||||
|
||||
static void
|
||||
riscv_unique_section (tree decl, int reloc)
|
||||
{
|
||||
const char *prefix = NULL;
|
||||
bool one_only = DECL_ONE_ONLY (decl) && !HAVE_COMDAT_GROUP;
|
||||
|
||||
switch (categorize_decl_for_section (decl, reloc))
|
||||
{
|
||||
case SECCAT_SRODATA:
|
||||
prefix = one_only ? ".sr" : ".srodata";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (prefix)
|
||||
{
|
||||
const char *name, *linkonce;
|
||||
char *string;
|
||||
|
||||
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
|
||||
name = targetm.strip_name_encoding (name);
|
||||
|
||||
/* If we're using one_only, then there needs to be a .gnu.linkonce
|
||||
prefix to the section name. */
|
||||
linkonce = one_only ? ".gnu.linkonce" : "";
|
||||
|
||||
string = ACONCAT ((linkonce, prefix, ".", name, NULL));
|
||||
|
||||
set_decl_section_name (decl, string);
|
||||
return;
|
||||
}
|
||||
default_unique_section (decl, reloc);
|
||||
}
|
||||
|
||||
/* Return a section for X, handling small data. */
|
||||
|
||||
static section *
|
||||
@ -5254,6 +5291,9 @@ riscv_new_address_profitable_p (rtx memref, rtx_insn *insn, rtx new_addr)
|
||||
#undef TARGET_ASM_SELECT_SECTION
|
||||
#define TARGET_ASM_SELECT_SECTION riscv_select_section
|
||||
|
||||
#undef TARGET_ASM_UNIQUE_SECTION
|
||||
#define TARGET_ASM_UNIQUE_SECTION riscv_unique_section
|
||||
|
||||
#undef TARGET_ASM_SELECT_RTX_SECTION
|
||||
#define TARGET_ASM_SELECT_RTX_SECTION riscv_elf_select_rtx_section
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user