Re: No bss cause strange values in insmod and ELF

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

 



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
that
it's still broke - it just didn't die (this time).

Regards,
Tommy Christensen


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

  Powered by Linux