aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2011-07-13 13:32:57 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2011-07-13 13:32:57 +0000
commit727a65e6fc07ea95309c875978c83c741359ad4e (patch)
treec27f9b1f6edf8bca3d95d41510094e498024b477 /gcc/varasm.c
parentcb77b6cf1f6f16014d71213cba699d76c87ac2ef (diff)
downloadgcc-727a65e6fc07ea95309c875978c83c741359ad4e.zip
gcc-727a65e6fc07ea95309c875978c83c741359ad4e.tar.gz
gcc-727a65e6fc07ea95309c875978c83c741359ad4e.tar.bz2
tm.texi.in (TARGET_ASM_MERGEABLE_RODATA_PREFIX): Add hook.
* doc/tm.texi.in (TARGET_ASM_MERGEABLE_RODATA_PREFIX): Add hook. * doc/tm.texi: Regenerate. * target.def (mergeable_rodata_prefix: New defhookpod. * varasm.c (mergeable_string_section, mergeable_constant_section): Use it. Allocate name with alloca. From-SVN: r176235
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 045d619..8c65696 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -742,7 +742,8 @@ mergeable_string_section (tree decl ATTRIBUTE_UNUSED,
const char *str;
HOST_WIDE_INT i;
int j, unit;
- char name[30];
+ const char *prefix = targetm.asm_out.mergeable_rodata_prefix;
+ char *name = (char *) alloca (strlen (prefix) + 30);
mode = TYPE_MODE (TREE_TYPE (TREE_TYPE (decl)));
modesize = GET_MODE_BITSIZE (mode);
@@ -766,8 +767,8 @@ mergeable_string_section (tree decl ATTRIBUTE_UNUSED,
}
if (i == len - unit)
{
- sprintf (name, ".rodata.str%d.%d", modesize / 8,
- (int) (align / 8));
+ sprintf (name, "%s.str%d.%d", prefix,
+ modesize / 8, (int) (align / 8));
flags |= (modesize / 8) | SECTION_MERGE | SECTION_STRINGS;
return get_section (name, flags, NULL);
}
@@ -794,9 +795,10 @@ mergeable_constant_section (enum machine_mode mode ATTRIBUTE_UNUSED,
&& align <= 256
&& (align & (align - 1)) == 0)
{
- char name[24];
+ const char *prefix = targetm.asm_out.mergeable_rodata_prefix;
+ char *name = (char *) alloca (strlen (prefix) + 30);
- sprintf (name, ".rodata.cst%d", (int) (align / 8));
+ sprintf (name, "%s.cst%d", prefix, (int) (align / 8));
flags |= (align / 8) | SECTION_MERGE;
return get_section (name, flags, NULL);
}