On Fri, Apr 08, 2005 at 09:57:35AM -0700, H. J. Lu wrote:
> On Thu, Apr 07, 2005 at 03:36:18PM -0700, James E Wilson wrote:
> > H. J. Lu wrote:
> > >Gcc 4,0 generates
> > >.section .gnu.linkonce.t._ZN3FooC1Ev,"axG",@progbits,_ZN3FooC1Ev,comdat
> > >for comdat group. Can gcc use
> > >.section .text._ZN3FooC1Ev,"axG",@progbits,_ZN3FooC1Ev,comdat
> > >instead? At least, there will be less characters for linker to process.
> > 
> > I know of no reason why we must continue using .gnu.linkonce for targets 
> > that have proper comdat support.
> > 
> > However, I don't think this will be an easy transition, because there 
> > are too many places that make assumptions about the fact that 
> > .gnu.linkonce has a special meaning.  That might be an argument against 
> > even trying.
> > 
> > For instance, in varasm.c, in default_function_rodata_section, we have
> >       /* For .gnu.linkonce.t.foo we want to use .gnu.linkonce.r.foo.  */
> >       if (DECL_ONE_ONLY (decl) && strncmp (name, ".gnu.linkonce.t.", 
> > 16) == 0)
> > and this code fails if you remove the .gnu.linkonce from the section 
> > name.  We'd need code to check for and handle a comdat section here.
> > 
> > dwarf2out.c assumes that comdat sections for debugging start with 
> > .gnu.linkonce.
> 
> I am not sure if dwarf2out.c supports comdat group at all:
> 
> http://gcc.gnu.org/ml/gcc-patches/2005-04/msg00711.html
> 
> > 
> > There are likely many other places that need fixing also.
> > 
> > There is also the possible issue that using .text.foo conflicts with the 
> > naming scheme used by the -ffunction-sections -fdata-sections options. 
> > What happens if we have two sections both named .text.foo, one of which 
> > is a comdat section, and one of which came from -ffunction-sections?  We 
> 
> The assembler with proper comdat group should be OK. I had to fix
> the assembler to support dupulicated section names for comdat group.
> For linker, input section names are only used to group sections for
> output.
> 

There is another problem. set_named_section_flags in varasm.c assumes
each section has a unique name.



H.J.

Reply via email to