Re: OProfile cannot be loaded as module...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 17, 2005 at 01:14:01PM -0700, David Daney wrote:

> >>arch/mips/oprofile/common.c defines several symbols (op_model_mipsxx and 
> >>op_model_rm9000) with __attribute__((weak)).  It then assumes that ELF 
> >>linking conventions will prevail and there will be no problems if they 
> >>are undefined.
> >>
> >>The problem is if you try to load oprofile as a module.  The kernel 
> >>module linker evidentially does not understand weak symbols and refuses 
> >>to load the module because they are undefined.
> >
> >
> >Actually it contains code to handle weak symbols so this is a bit
> >surprising not last because STB_WEAK handling happen in the generic
> >module loader code and is being used by other architectures as well.
> >
> >So if there's a problem with the module loader I'd prefer to solve that
> >instead of starting to kludge around it.
> >
> 
> Fine, but what exactly are the semantics of __attribute__((weak)) in 
> modules?  It gets resolved when linking with other objects that make up 
> the module.  But what if the weak symbol can be resolved at module load 
> time against symbols in either the kernel proper or other modules?

Yes.

> What happens if the weak symbol can be resolved by a symbol in a module
> that is loaded after the one with the weak symbol?  Does it get fixed up
> when the new module is loaded?

No, it won't - and I don't think that would be a good idea.  The potencial
for bugs is just too large.

  Ralf


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux