From: dj Date: Wed, 1 Apr 2009 05:26:39 +0000 (+0000) Subject: * varasm.c (default_function_rodata_section): Don't assume X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ac2a837e805a7673a92de84ff69633eda77ccb5f;p=thirdparty%2Fgcc.git * varasm.c (default_function_rodata_section): Don't assume anything about where the first '.' in the section name is. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145388 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f71898978c7..67439f6e7a3a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-04-01 DJ Delorie + + * varasm.c (default_function_rodata_section): Don't assume + anything about where the first '.' in the section name is. + 2009-04-01 Alan Modra * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant diff --git a/gcc/varasm.c b/gcc/varasm.c index 9eefb02d8d9b..c706a8673a60 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. */