"do section mismatch check on full vmlinux" breaks powerpc build

Sam Ravnborg sam at ravnborg.org
Thu Jul 26 07:33:25 EST 2007


On Wed, Jul 25, 2007 at 04:16:10PM -0500, Nathan Lynch wrote:
> Hi Sam-
> 
> Sam Ravnborg wrote:
> > On Tue, Jul 24, 2007 at 05:41:05PM -0500, Nathan Lynch wrote:
> > > 
> > > 2.6.23-rc1 breaks the build for 64-bit powerpc for me (using
> > > maple_defconfig):
> > > 
> > >   LD      vmlinux.o
> > > powerpc64-unknown-linux-gnu-ld: dynreloc miscount for
> > > kernel/built-in.o, section .opd
> > > powerpc64-unknown-linux-gnu-ld: can not edit opd Bad value
> > > make: *** [vmlinux.o] Error 1
> > > 
> > 
> > I narrowed it down to the following change to avoid the breakage:
> > 
> > diff --git a/include/linux/mm.h b/include/linux/mm.h
> > index c456c3a..2ea222f 100644
> > --- a/include/linux/mm.h
> > +++ b/include/linux/mm.h
> > @@ -1246,7 +1246,7 @@ void drop_slab(void);
> >  extern int randomize_va_space;
> >  #endif
> >  
> > -__attribute__((weak)) const char *arch_vma_name(struct vm_area_struct *vma);
> > +//__attribute__((weak)) const char *arch_vma_name(struct vm_area_struct *vma);
> >  
> >  #endif /* __KERNEL__ */
> >  #endif /* _LINUX_MM_H */
> > 
> > So seems that something goes a bit fishy when using weak symbols and this trigges 
> > a binutils bug.
> > 
> > The above line was introdused in the following commit:
> > 
> > commit f269fdd1829acc5e53bf57b145003e5733133f2b
> > Author: David Howells <dhowells at redhat.com>
> > Date:   Wed Sep 27 01:50:23 2006 -0700
> > 
> >     [PATCH] NOMMU: move the fallback arch_vma_name() to a sensible place
> 
> 
> Thanks for looking into this.  Removing the "__attribute__((weak))"
> from arch_vma_name's declaration in linux/mm.h unbreaks the build for
> me.
> 
> Maybe it shouldn't matter, but it seems unusual to have the weak
> attribute specified at the function's declaration.  I wasn't able to
> find any examples of that for other weak functions in the kernel
> (e.g. sched_clock).

Unfortunately removing the weak attribute uncovered that x86_64 has
two functions with the same name => link error.
Needs to have that sorted first out but ball is rolling.
(Se lkml for details)

	Sam



More information about the Linuxppc-dev mailing list