aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2009-04-01 01:26:39 -0400
committerDJ Delorie <dj@gcc.gnu.org>2009-04-01 01:26:39 -0400
commite893f6f38e3842a0d4e74be5835b4506ba6bb3de (patch)
tree1bf6bdcc0b2bd80933257daa2898b982ba9c284c /gcc/varasm.c
parentb246d10043fd9d5cf21122e999cb1dbb4534686d (diff)
downloadgcc-e893f6f38e3842a0d4e74be5835b4506ba6bb3de.zip
gcc-e893f6f38e3842a0d4e74be5835b4506ba6bb3de.tar.gz
gcc-e893f6f38e3842a0d4e74be5835b4506ba6bb3de.tar.bz2
varasm.c (default_function_rodata_section): Don't assume anything about where the first '.' in the section name is.
* varasm.c (default_function_rodata_section): Don't assume anything about where the first '.' in the section name is. From-SVN: r145388
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 9eefb02..c706a86 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -869,11 +869,18 @@ default_function_rodata_section (tree decl)
if (DECL_ONE_ONLY (decl) && HAVE_COMDAT_GROUP)
{
- size_t len = strlen (name) + 3;
- char* rname = (char *) alloca (len);
+ char *dot;
+ size_t len;
+ char* rname;
+
+ dot = strchr (name + 1, '.');
+ if (!dot)
+ dot = name;
+ len = strlen (dot) + 8;
+ rname = (char *) alloca (len);
strcpy (rname, ".rodata");
- strcat (rname, name + 5);
+ strcat (rname, dot);
return get_section (rname, SECTION_LINKONCE, decl);
}
/* For .gnu.linkonce.t.foo we want to use .gnu.linkonce.r.foo. */