Port-arm archive

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

Re: ARM kernel module supported reloc types



On Mon, Dec 29, 2008 at 09:47:47PM +0000, Julio M. Merino Vidal wrote:

> On Fri, Dec 19, 2008 at 01:44:32AM -0500, Rafal Boni wrote:
> > On Thu, Dec 18, 2008 at 09:35:02PM -0800, Matt Thomas wrote:
> > > Yes.  PC24 is not appropriate in dynamic shared library loading but  
> > > since kernel modules are simple .o files, it is appropriate.
> > 
> > Ok, so the next hole I fall into is symbols being too far for the PC24
> > reloc to resolve (printf in the example modules), and a crash related
> > to the auto-loading of the compat module.
> > 
> > The second one I haven't dug into very much (it gave me a reason to give
> > up for the night), but the first is interesting -- in the old LKM frame-
> > work, the lkmtramp.awk scripts generated trampoline code for all targets
> > of PC24 relocs... do we have an equivalent for the new modules?  Where is
> > this supposed to happen in the new world order?
> 
> Alright... so I have also been fighting this for the past two days and
> just now I find this thread.  Great, it'd have saved me some time!
> 
> So far I have also implemented support for R_ARM_PC24 and found the same
> problems as you: the target addresses do not fit into the 24 bits.  As a
> workaround, you can build the modules with -mlong-calls; at least that is
> working for my test module (src/tests/modules/k_helper).  But the
> trampolines are a solution and not a workaround as this.

This is slow, a better way to fix the "reach" problem is described here:

http://mail-index.netbsd.org/port-arm/2008/12/19/msg000587.html

> What I find now is that the data is not handled properly (or at least that
> seems to be the case).  For example, the module load fails because it
> raises an error during initialization, and the kernel tries to print the
> module's name but fails (empty string).  Similarly, the module load problems
> seem to be related due to missing data too.

There is probably a bug in arm's kobj_reloc().

Thanks,
Andrew


Home | Main Index | Thread Index | Old Index