Shay Deloya wrote:
> Continuing my previous problem...
> I have created a module with no bss , and compiled it with kernel 2.2.
> Comparing this module with same code that has bss and acts OK.
> Inserting the module with modutiles 2.2.2/ busybox insmod causes
> a relocation overflow message , the reasons are:
> 1.in function obj_relocate: corrupted intsym->secidx value
> (not the needed index in the ELF)
> for some .text segments, other segments get their index value OK.
> the ELF file seems to be OK.
> 2. in function arch_apply_relocation: the wrong index (secidx=1006a1e8)
> cause R_MIPS_26 symbols (jump commands) to have the value of
> obj_reloc_overflow and then causes relocation overflow.
> Does anyone knows why same module that has a variable in bss acts fine
> and the one without bss causes Relocation overflow in MIPS ? (in x86 there
> is no problem).
> Searching the code I see there is no initialization of the secidx ,
> is it a problem of wrong reading of ELF files by insmod ?
> Attached the two ELF files , and obj_relocate values.
I had a look at the attachments and I think the cause of your problem is
that the module is not a relocatable file!
ld can fix this for you. Try ld -r -o new.o <modulename>.o, and then
insert new.o instead.
Regarding the effect of empty/non-empty .bss section (and of recompiling
modutils), I think this is just a case of "fix by accident". Meaning
it's still broke - it just didn't die (this time).