diff options
author | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-09-04 18:11:18 +0000 |
---|---|---|
committer | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-09-04 18:11:18 +0000 |
commit | 9292e3beadaf327aa9e5538e27943aa2d8079805 (patch) | |
tree | 14249a66a863f3cb90c2a01b57d8301ed45902dc /gcc/varasm.c | |
parent | 2a075f9106966bce1915c515f729182a987cf0ce (diff) | |
download | gcc-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.c | 10 |
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: |