diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2011-07-13 13:32:57 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2011-07-13 13:32:57 +0000 |
commit | 727a65e6fc07ea95309c875978c83c741359ad4e (patch) | |
tree | c27f9b1f6edf8bca3d95d41510094e498024b477 /gcc/varasm.c | |
parent | cb77b6cf1f6f16014d71213cba699d76c87ac2ef (diff) | |
download | gcc-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.c | 12 |
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); } |