[Top] [All Lists]

Re: OProfile cannot be loaded as module...

To: David Daney <>
Subject: Re: OProfile cannot be loaded as module...
From: Ralf Baechle <>
Date: Tue, 18 Oct 2005 12:03:55 +0100
In-reply-to: <>
Original-recipient: rfc822;
References: <> <> <>
User-agent: Mutt/
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?


> 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.


<Prev in Thread] Current Thread [Next in Thread>