Thanks for the explanation, but the bug has been a show stopper for powerpc GNU-linux users trying to evaluate grub-ieee1275 since 1509, and is still there in rev 1891.
Please can someone apply the reversion now? On Tue, Sep 30, 2008 at 7:14 PM, Bean <[EMAIL PROTECTED]> wrote: > On Tue, Sep 30, 2008 at 3:26 PM, peter cros <[EMAIL PROTECTED]> wrote: >> The change was between svn version 1421 and 1509 which had bugfixes, >> in grub_elf32_load, and grub_elf64_load. > > Hi, > > The patch is for bsd loader, but it seems it uses the wrong method to > change load address. This is the right patch: > > 2008-09-30 Bean <[EMAIL PROTECTED]> > > * kern/elf.c (grub_elf32_load): Revert to previous code. > (grub_elf64_load): Likewise. Yes confirmed that is the right patch for me running ubuntu linux on an Apple G4 powerpc and G5 powerpc64, configuration using platform =ieee1275, target=powerpc. > > * loader/i386/bsd.c (grub_bsd_elf32_hook): Change return address. I can't comment on i386/bsd, I had not considered how other platforms/targets might use different calls to (grub_elf32_load)(grub_elf64_load). > > diff --git a/kern/elf.c b/kern/elf.c > index 2b1e223..8ddf9e5 100644 > --- a/kern/elf.c > +++ b/kern/elf.c > @@ -232,9 +232,9 @@ grub_elf32_load (grub_elf_t _elf, > grub_elf32_load_hook_t _load_hook, > if (phdr->p_type != PT_LOAD) > return 0; > > + load_addr = phdr->p_paddr; > if (load_hook && load_hook (phdr, &load_addr)) > return 1; > - load_addr = phdr->p_paddr; > > if (load_addr < load_base) > load_base = load_addr; > @@ -411,9 +411,9 @@ grub_elf64_load (grub_elf_t _elf, > grub_elf64_load_hook_t _load_hook, > if (phdr->p_type != PT_LOAD) > return 0; > > + load_addr = phdr->p_paddr; > if (load_hook && load_hook (phdr, &load_addr)) > return 1; > - load_addr = phdr->p_paddr; > > if (load_addr < load_base) > load_base = load_addr; > diff --git a/loader/i386/bsd.c b/loader/i386/bsd.c > index 4966afa..25d0f59 100644 > --- a/loader/i386/bsd.c > +++ b/loader/i386/bsd.c > @@ -454,7 +454,7 @@ grub_bsd_load_aout (grub_file_t file) > } > > static grub_err_t > -grub_bsd_elf32_hook (Elf32_Phdr * phdr, UNUSED grub_addr_t * addr) > +grub_bsd_elf32_hook (Elf32_Phdr * phdr, grub_addr_t * addr) > { > Elf32_Addr paddr; > > @@ -472,6 +472,8 @@ grub_bsd_elf32_hook (Elf32_Phdr * phdr, UNUSED > grub_addr_t * addr) > if (paddr + phdr->p_memsz > kern_end) > kern_end = paddr + phdr->p_memsz; > > + *addr = paddr; > + > return GRUB_ERR_NONE; > } > > -- > Bean > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > peter cros _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel