grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH, RFC, RFT] ARM relocation fixes


From: Leif Lindholm
Subject: Re: [PATCH, RFC, RFT] ARM relocation fixes
Date: Mon, 2 Dec 2013 15:33:06 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

On Mon, Dec 02, 2013 at 03:14:50PM +0100, Leif Lindholm wrote:
> On Mon, Dec 02, 2013 at 02:30:51PM +0100, Leif Lindholm wrote:
> > > >>> Amusingly, I wrote the attached
> > > >> Nothing is attached to your mail. Right now could you pause work on
> > > >> */dl.c: I'm reorganising them to declare more of it as platform
> > > >> independent and unify handling (ARM dl.c is unnecessarily different 
> > > >> from
> > > >> other versions and forget some of ELF handling)
> > > > 
> > > > Ok, I'll hold off.
> > > > 
> > > I've uploaded current work to phcoder/reloc
> > 
> > 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.

/
    Leif



reply via email to

[Prev in Thread] Current Thread [Next in Thread]