[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH, RFC, RFT] ARM relocation fixes
From: |
Vladimir 'φ-coder/phcoder' Serbinenko |
Subject: |
Re: [PATCH, RFC, RFT] ARM relocation fixes |
Date: |
Mon, 02 Dec 2013 18:40:25 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131005 Icedove/17.0.9 |
On 02.12.2013 18:32, Leif Lindholm wrote:
> On Mon, Dec 02, 2013 at 03:33:06PM +0100, Leif Lindholm wrote:
>>>> Ok, so I've tested this on arm64, and it works on the commercial FVP
>>>> Base model (which does not trigger veneer generation due to its runtime
>>>> memory map), but crashes on the Foundation model (which does).
>>>> So the generic dl refactoring seems correct, but somehing about the
>>>> veneers is fishy.
>>>
>>> Well, this one seems to be because mod->trampptr is never initilised
>>> (which should be a problem also on the other archs?).
>>>
>>> With
>>> diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
>>> index 33ccc98..92027e0 100644
>>> --- a/grub-core/kern/dl.c
>>> +++ b/grub-core/kern/dl.c
>>> @@ -317,6 +317,7 @@ grub_dl_load_segments (grub_dl_t mod, const Elf_Ehdr *e)
>>> #if !defined (__i386__) && !defined (__x86_64__) && !defined (__sparc__)
>>> ptr = (char *) ALIGN_UP ((grub_addr_t) ptr, GRUB_ARCH_DL_TRAMP_ALIGN);
>>> mod->tramp = ptr;
>>> + mod->trampptr = (ptr + tramp);
>>> ptr += tramp;
>>> ptr = (char *) ALIGN_UP ((grub_addr_t) ptr, GRUB_ARCH_DL_GOT_ALIGN);
>>> mod->got = ptr;
>>>
>>> This runs successfully on my foundation model.
>>
>> Umm, that's obviously not correct. But it did work :)
>>
>> What is needed is to store the size of the module before adding
>> trampoline and got sizes.
>
> So - after some much needed Lunch, and coffee, I think the below would
> be correct?
>
> diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
> index 33ccc98..a83b744 100644
> --- a/grub-core/kern/dl.c
> +++ b/grub-core/kern/dl.c
> @@ -316,10 +316,10 @@ grub_dl_load_segments (grub_dl_t mod, const Elf_Ehdr *e)
> }
> #if !defined (__i386__) && !defined (__x86_64__) && !defined (__sparc__)
> ptr = (char *) ALIGN_UP ((grub_addr_t) ptr, GRUB_ARCH_DL_TRAMP_ALIGN);
> - mod->tramp = ptr;
> + mod->tramp = mod->trampptr = ptr;
> ptr += tramp;
> ptr = (char *) ALIGN_UP ((grub_addr_t) ptr, GRUB_ARCH_DL_GOT_ALIGN);
> - mod->got = ptr;
> + mod->got = mod->gotptr = ptr;
> ptr += got;
> #endif
>
I've committed a fix before I saw this message but it did essentially
the same.
> /
> Leif
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel
>
signature.asc
Description: OpenPGP digital signature
- Re: [PATCH, RFC, RFT] ARM relocation fixes, (continued)
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes,
Vladimir 'φ-coder/phcoder' Serbinenko <=
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/02
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/03
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/03
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/03
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Leif Lindholm, 2013/12/03
- Re: [PATCH, RFC, RFT] ARM relocation fixes, Vladimir 'φ-coder/phcoder' Serbinenko, 2013/12/03