Date: Fri, 16 Jan 2015 16:15:22 +0100 From: =?windows-1252?Q?Roger_Pau_Monn=E9?= <royger@FreeBSD.org> To: Ian Lepore <ian@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r277215 - in head/sys: amd64/include boot/common boot/fdt boot/forth boot/i386/libi386 boot/i386/loader i386/include x86/xen Message-ID: <54B92B0A.1020108@FreeBSD.org> In-Reply-To: <1421362982.14601.280.camel@freebsd.org> References: <201501151627.t0FGRLY2062439@svn.freebsd.org> <1421362982.14601.280.camel@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
El 16/01/15 a les 0.03, Ian Lepore ha escrit: > On Thu, 2015-01-15 at 16:27 +0000, Roger Pau Monné wrote: >> Author: royger >> Date: Thu Jan 15 16:27:20 2015 >> New Revision: 277215 >> URL: https://svnweb.freebsd.org/changeset/base/277215 >> >> Log: >> loader: implement multiboot support for Xen Dom0 >> [...] >> >> Added: >> head/sys/boot/i386/libi386/multiboot.c (contents, props changed) >> head/sys/boot/i386/libi386/multiboot.h (contents, props changed) >> head/sys/boot/i386/libi386/multiboot_tramp.S (contents, props changed) >> Modified: >> head/sys/amd64/include/metadata.h >> head/sys/boot/common/bootstrap.h >> head/sys/boot/common/load_elf.c >> head/sys/boot/common/load_elf_obj.c >> head/sys/boot/common/module.c >> head/sys/boot/fdt/fdt_loader_cmd.c >> head/sys/boot/forth/beastie.4th >> head/sys/boot/forth/loader.4th >> head/sys/boot/forth/support.4th >> head/sys/boot/i386/libi386/Makefile >> head/sys/boot/i386/libi386/bootinfo64.c >> head/sys/boot/i386/libi386/elf64_freebsd.c >> head/sys/boot/i386/libi386/libi386.h >> head/sys/boot/i386/loader/conf.c >> head/sys/i386/include/metadata.h >> head/sys/x86/xen/pv.c > > Something about this change breaks ubldr on arm (it works @ r277214). > Now on an RPi I get this: > > /boot/kernel/kernel data=0x4cf8a4+0x3475c syms=[0x4+0x91650+0x4+0x53354] > panic: Address offset 0x40000000 bigger than size 0x1E000000 > > There is a single physical extent of ram from 0-0x1e000000. Sorry for this, the above patch solved the problem for me. I'm currently running a tinderbox with it to make sure nothing else breaks, but the fix is quite straightforward. --- diff --git a/sys/boot/common/load_elf.c b/sys/boot/common/load_elf.c index 6860815..4c801e9 100644 --- a/sys/boot/common/load_elf.c +++ b/sys/boot/common/load_elf.c @@ -77,7 +77,7 @@ static int __elfN(lookup_symbol)(struct preloaded_file *mp, elf_file_t ef, const static int __elfN(reloc_ptr)(struct preloaded_file *mp, elf_file_t ef, Elf_Addr p, void *val, size_t len); static int __elfN(parse_modmetadata)(struct preloaded_file *mp, elf_file_t ef, - u_int64_t p_start, u_int64_t p_end); + Elf_Addr p_start, Elf_Addr p_end); static symaddr_fn __elfN(symaddr); static char *fake_modname(const char *name); @@ -300,7 +300,7 @@ __elfN(loadimage)(struct preloaded_file *fp, elf_file_t ef, u_int64_t off) Elf_Size size; u_int fpcopy; Elf_Sym sym; - u_int64_t p_start, p_end; + Elf_Addr p_start, p_end; dp = NULL; shdr = NULL; @@ -712,7 +712,7 @@ __elfN(load_modmetadata)(struct preloaded_file *fp, u_int64_t dest) Elf_Shdr *sh_data[2]; char *shstrtab = NULL; size_t size; - u_int64_t p_start, p_end; + Elf_Addr p_start, p_end; bzero(&ef, sizeof(struct elf_file)); ef.fd = -1; @@ -820,7 +820,7 @@ out: int __elfN(parse_modmetadata)(struct preloaded_file *fp, elf_file_t ef, - u_int64_t p_start, u_int64_t p_end) + Elf_Addr p_start, Elf_Addr p_end) { struct mod_metadata md; #if (defined(__i386__) || defined(__powerpc__)) && __ELF_WORD_SIZE == 64
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54B92B0A.1020108>