aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/riscv
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2017-12-08 00:44:13 +0000
committerJim Wilson <wilson@gcc.gnu.org>2017-12-07 16:44:13 -0800
commit6cb0725cdbef47a7486629b7933f51a29a591781 (patch)
treebca6dbdbf3d5933fbbf58250160a811a10d723f1 /gcc/config/riscv
parent68a970039e06d40e6d33626030cee86761ca4801 (diff)
downloadgcc-6cb0725cdbef47a7486629b7933f51a29a591781.zip
gcc-6cb0725cdbef47a7486629b7933f51a29a591781.tar.gz
gcc-6cb0725cdbef47a7486629b7933f51a29a591781.tar.bz2
Add srodata section support to riscv port.
2017-12-07 Andrew Waterman <andrew@sifive.com> gcc/ * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define. (TARGET_HAVE_SRODATA_SECTION): New define. (riscv_select_section): New function. From-SVN: r255491
Diffstat (limited to 'gcc/config/riscv')
-rw-r--r--gcc/config/riscv/riscv.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
index c7283d0..cfab2e7 100644
--- a/gcc/config/riscv/riscv.c
+++ b/gcc/config/riscv/riscv.c
@@ -3042,6 +3042,22 @@ riscv_in_small_data_p (const_tree x)
return riscv_size_ok_for_small_data_p (int_size_in_bytes (TREE_TYPE (x)));
}
+/* Switch to the appropriate section for output of DECL. */
+
+static section *
+riscv_select_section (tree decl, int reloc,
+ unsigned HOST_WIDE_INT align)
+{
+ switch (categorize_decl_for_section (decl, reloc))
+ {
+ case SECCAT_SRODATA:
+ return get_named_section (decl, ".srodata", reloc);
+
+ default:
+ return default_elf_select_section (decl, reloc, align);
+ }
+}
+
/* Return a section for X, handling small data. */
static section *
@@ -4320,6 +4336,12 @@ riscv_constant_alignment (const_tree exp, HOST_WIDE_INT align)
#undef TARGET_IN_SMALL_DATA_P
#define TARGET_IN_SMALL_DATA_P riscv_in_small_data_p
+#undef TARGET_HAVE_SRODATA_SECTION
+#define TARGET_HAVE_SRODATA_SECTION true
+
+#undef TARGET_ASM_SELECT_SECTION
+#define TARGET_ASM_SELECT_SECTION riscv_select_section
+
#undef TARGET_ASM_SELECT_RTX_SECTION
#define TARGET_ASM_SELECT_RTX_SECTION riscv_elf_select_rtx_section