Doug Rabson writes:
> On Thu, 19 Aug 1999, Andrew Gallatin wrote:
>
> >
> > I do most of my development on alphas & I just turned some local code
> > into a loadable kernel module. It works fine when compiled into the
> > kernel statically, but fails miserably when loaded into an alpha
> > kernel as a module. This alpha is running -current from monday or
> > so.
> >
> > After a day or so of debugging, I decided to run
> > it on an x86 -- it ran just fine. I've narrowed the problem down to
> > one involving optimization and have extracted a simple, reproducable
> > test case.
> >
> > When the test module is loaded without optimization (CFLAGS += -g
> > -O0), it prints the following (which is correct):
>
> It looks like we aren't handling the relocations correctly. When I get a
> chance, I will try to look at it. If you want to have another look, the
> code at fault is probably in alpha/alpha/elf_machdep.c and you can get a
> list of relocations in the module with 'objdump --dynamic-reloc foo.ko'.
Thanks for the pointer, it was right on the money. It turns out that
at the default optimization level, the objdump output looks like this:
<...>
0000000000010ea8 RELATIVE *ABS*
0000000000010e80 GLOB_DAT Xmit_completes+0x0000000000000028
0000000000010e88 GLOB_DAT Xmit_completes+0x0000000000000008
0000000000010e90 GLOB_DAT Xmit_completes+0x0000000000000010
0000000000010e98 GLOB_DAT Xmit_completes+0x0000000000000018
0000000000010ea0 GLOB_DAT Xmit_completes
0000000000010e70 JMP_SLOT printf
<...>
I've just committed a patch to alpha/alpha/elf_machdep.c which takes
into account the addends for objects of type R_ALPHA_GLOB_DAT. This
fixes my problem. Should it be MFC'ed?
Thanks again,
Drew
------------------------------------------------------------------------------
Andrew Gallatin, Sr Systems Programmer http://www.cs.duke.edu/~gallatin
Duke University Email: [EMAIL PROTECTED]
Department of Computer Science Phone: (919) 660-6590
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message