[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] running 64 bit user mode program on 32 bit host machine
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] running 64 bit user mode program on 32 bit host machine |
Date: |
Mon, 20 Apr 2015 15:17:10 +0100 |
On 20 April 2015 at 14:34, Yongbok Kim <address@hidden> wrote:
> Hi All,
>
> I have faced a problem to run a simple 64 bit Linux user mode application on
> 32 bit Linux host machines.
> I did some investigation and found out that the TARGET_ELF_PAGESTART macro
> in
> the linux-user/elfload.c is causing the problem.
> However I am not sure if this is the right solution as I am not familiar
> with
> the area.
> Perhaps the macro should take care of target’s bits width rather than just
> use
> unsigned long.
> Would you please confirm the change or suggest better solution?
>
> Regards,
> Yongbok
>
>
> $ ../masterbin/mips64-linux-user/qemu-mips64 -cpu MIPS64R6-generic
> ./hello_linux.elf
> qemu: uncaught target signal 11 (Segmentation fault) - core dumped
> Segmentation fault (core dumped)
>
>
> $ git diff
> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
> index 399c021..d99a43b 100644
> --- a/linux-user/elfload.c
> +++ b/linux-user/elfload.c
> @@ -1227,7 +1227,7 @@ struct exec
>
> /* Necessary parameters */
> #define TARGET_ELF_EXEC_PAGESIZE TARGET_PAGE_SIZE
> -#define TARGET_ELF_PAGESTART(_v) ((_v) & ~(unsigned
> long)(TARGET_ELF_EXEC_PAGESIZE-1))
> +#define TARGET_ELF_PAGESTART(_v) ((_v) &
> ~(abi_ulong)(TARGET_ELF_EXEC_PAGESIZE-1))
> #define TARGET_ELF_PAGEOFFSET(_v) ((_v) & (TARGET_ELF_EXEC_PAGESIZE-1))
I think this is a correct change. If you want to resubmit it
as a properly formatted patch with your signed-off-by you
can add my
Reviewed-by: Peter Maydell <address@hidden>
thanks
-- PMM