Message ID | 55350055.1070305@imgtec.com |
---|---|
State | New |
Headers | show |
On 20 April 2015 at 14:34, Yongbok Kim <yongbok.kim@imgtec.com> 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 <peter.maydell@linaro.org> thanks -- PMM
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))