Skip to content

Commit

Permalink
RISC-V: Make unique SECCAT_SRODATA names start with .srodata (not .sd…
Browse files Browse the repository at this point in the history
…ata2)

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.
  • Loading branch information
keith-packard authored and Jim Wilson committed May 12, 2020
1 parent de6320a commit adce62f
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
5 changes: 5 additions & 0 deletions gcc/ChangeLog
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
40 changes: 40 additions & 0 deletions gcc/config/riscv/riscv.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 *
Expand Down Expand Up @@ -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

Expand Down

0 comments on commit adce62f

Please sign in to comment.