summaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>2002-09-04 18:11:18 +0000
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>2002-09-04 18:11:18 +0000
commit9292e3beadaf327aa9e5538e27943aa2d8079805 (patch)
tree14249a66a863f3cb90c2a01b57d8301ed45902dc /gcc/varasm.c
parent2a075f9106966bce1915c515f729182a987cf0ce (diff)
downloadgcc-9292e3beadaf327aa9e5538e27943aa2d8079805.tar.gz
* target-def.h (TARGET_HAVE_SRODATA_SECTION): New macro.
* target.h (gcc_target): Add have_srodata_section member. * varasm.c (section_category): Add SECCAT_SRODATA. (categorize_decl_for_section): Return SECCAT_SRODATA for sdata if READONLY_SDATA_SECTION defined. (decl_readonly_section_1): True for SECCAT_SRODATA also. (default_elf_select_section_1): Map SECCAT_SRODATA to .sdata2. (default_unique_section_1): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56806 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index e84a2891153..02078a3ede1 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -4898,6 +4898,7 @@ enum section_category
SECCAT_RODATA_MERGE_STR,
SECCAT_RODATA_MERGE_STR_INIT,
SECCAT_RODATA_MERGE_CONST,
+ SECCAT_SRODATA,
SECCAT_DATA,
@@ -4999,6 +5000,8 @@ categorize_decl_for_section (decl, reloc, shlib)
{
if (ret == SECCAT_BSS)
ret = SECCAT_SBSS;
+ else if (targetm.have_srodata_section && ret == SECCAT_RODATA)
+ ret = SECCAT_SRODATA;
else
ret = SECCAT_SDATA;
}
@@ -5026,6 +5029,7 @@ decl_readonly_section_1 (decl, reloc, shlib)
case SECCAT_RODATA_MERGE_STR:
case SECCAT_RODATA_MERGE_STR_INIT:
case SECCAT_RODATA_MERGE_CONST:
+ case SECCAT_SRODATA:
return true;
break;
default:
@@ -5069,6 +5073,9 @@ default_elf_select_section_1 (decl, reloc, align, shlib)
case SECCAT_RODATA_MERGE_CONST:
mergeable_constant_section (DECL_MODE (decl), align, 0);
break;
+ case SECCAT_SRODATA:
+ named_section (NULL_TREE, ".sdata2", reloc);
+ break;
case SECCAT_DATA:
data_section ();
break;
@@ -5141,6 +5148,9 @@ default_unique_section_1 (decl, reloc, shlib)
case SECCAT_RODATA_MERGE_CONST:
prefix = one_only ? ".gnu.linkonce.r." : ".rodata.";
break;
+ case SECCAT_SRODATA:
+ prefix = one_only ? ".gnu.linkonce.s2." : ".sdata2.";
+ break;
case SECCAT_DATA:
case SECCAT_DATA_REL:
case SECCAT_DATA_REL_LOCAL: