Re: R_ARM_REL32 relocation patch

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


Thanks Ben, Shall I redo and submit the patch as per your suggestion?

On Tue, Jul 28, 2009 at 4:47 PM, Ben Dooks<ben-linux@xxxxxxxxx> wrote:
> On Tue, Jul 28, 2009 at 04:13:50PM -0500, Nitin Garg wrote:
>> I did google it around, also tried the workaround but that's still a
>> workaround I beleive. Eventually this has to be handled in the kernel.
>> Pls review, Thanks,
>>
>> --- a/arch/arm/kernel/module.c  2009-07-20 16:57:49.000000000 -0500
>> +++ b/arch/arm/kernel/module.c  2009-07-28 14:13:06.000000000 -0500
>> @@ -132,6 +132,11 @@ apply_relocate(Elf32_Shdr *sechdrs, cons
>>                         *(u32 *)loc += sym->st_value;
>>                         break;
>>
>> +               case R_ARM_REL32:
>> +                       offset = *(u32 *)loc + sym->st_value - loc;
>> +                       *(u32 *)loc = offset & 0xffffffff;
>> +                       break;
>> +
>
> You shouldn't need to do offset & 0xffffffff, that's the natural size
> of an u32.
>
> I think this could be re-written as:
>
>        *(u32 *)loc += (sym->st_value - loc) * 4;
>
>
>                  case R_ARM_PC24:
>>                 case R_ARM_CALL:
>>                 case R_ARM_JUMP24:
>> --- a/arch/arm/include/asm/elf.h        2009-07-20 16:57:49.000000000 -0500
>> +++ b/arch/arm/include/asm/elf.h        2009-07-28 10:45:41.000000000 -0500
>> @@ -48,6 +48,7 @@ typedef struct user_fp elf_fpregset_t;
>>  #define R_ARM_NONE             0
>>  #define R_ARM_PC24             1
>>  #define R_ARM_ABS32            2
>> +#define R_ARM_REL32             3
>>  #define R_ARM_CALL             28
>>  #define R_ARM_JUMP24           29
>>  #define R_ARM_V4BX             40
>>
>>
>> On Tue, Jul 28, 2009 at 3:13 PM, Ben Dooks<ben-linux@xxxxxxxxx> wrote:
>> > On Tue, Jul 28, 2009 at 02:58:26PM -0500, Nitin Garg wrote:
>> >> Hi All,
>> >>
>> >> Pls review the attached patch for R_ARM_REL32 relocation handling.
>> >> Binutils 2.19.1 is adding the eh frame and hence we need to handle
>> >> R_ARM_REL32 for Loadable kernel modules.
>> >>
>> >> Thanks,
>> >> Nitin
>> >
>> > Please send patches inline so they can be reviewed (ie, turn up in
>> > the reply).
>> >
>> > Some simple looking around on google shows it may be easier to avoid
>> > generating these in the first place:
>> >
>> > http://forums.arm.com/index.php?s=766f87b528acd6be708a84cf3a58c02c&showtopic=8122&mode=threaded&pid=32358
>> >
>> > --
>> > Ben
>> >
>> > Q:      What's a light-year?
>> > A:      One-third less calories than a regular year.
>> >
>> >
>>
>> -------------------------------------------------------------------
>> List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
>> FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
>> Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php
>
> --
> --
> Ben
>
> Q:      What's a light-year?
> A:      One-third less calories than a regular year.
>
>

-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php


[Linux ARM]     [Linux ARM MSM]     [Linux ARM Kernel]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

Add to Google Follow linuxarm on Twitter