* [Qemu-devel] [PATCH v2 0/2] linux-user: Fix AT_PLATFORM for arm @ 2019-02-12 7:48 Richard Henderson 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM " Richard Henderson 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 2/2] linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user Richard Henderson 0 siblings, 2 replies; 8+ messages in thread From: Richard Henderson @ 2019-02-12 7:48 UTC (permalink / raw) To: qemu-devel; +Cc: laurent, qemu-arm With 5 minutes more thought I would have checked the values that the 64-bit kernel supplies for arm32 in compat mode. In the process I noticed that we don't get the right string for arm64 in big-endian mode. r~ Richard Henderson (2): linux-user: Add ELF_PLATFORM for arm linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user linux-user/elfload.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) -- 2.17.2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM for arm 2019-02-12 7:48 [Qemu-devel] [PATCH v2 0/2] linux-user: Fix AT_PLATFORM for arm Richard Henderson @ 2019-02-12 7:48 ` Richard Henderson 2019-02-12 8:31 ` Laurent Vivier 2019-02-14 9:25 ` Laurent Vivier 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 2/2] linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user Richard Henderson 1 sibling, 2 replies; 8+ messages in thread From: Richard Henderson @ 2019-02-12 7:48 UTC (permalink / raw) To: qemu-devel; +Cc: laurent, qemu-arm The 32-bit kernel has strings for v4, v5, v6, v7, v7m. The 64-bit kernel, in compat mode, has strings for v8. Fixes: https://bugs.launchpad.net/bugs/1813034 Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- v2: Include v8. --- linux-user/elfload.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 775a36ccdd..d796d51ec6 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -500,6 +500,37 @@ static uint32_t get_elf_hwcap2(void) #undef GET_FEATURE #undef GET_FEATURE_ID +#define ELF_PLATFORM get_elf_platform() + +static const char *get_elf_platform(void) +{ + CPUARMState *env = thread_cpu->env_ptr; + +#ifdef TARGET_WORDS_BIGENDIAN +# define END "b" +#else +# define END "l" +#endif + + if (arm_feature(env, ARM_FEATURE_V8)) { + return "v8" END; + } else if (arm_feature(env, ARM_FEATURE_V7)) { + if (arm_feature(env, ARM_FEATURE_M)) { + return "v7m" END; + } else { + return "v7" END; + } + } else if (arm_feature(env, ARM_FEATURE_V6)) { + return "v6" END; + } else if (arm_feature(env, ARM_FEATURE_V5)) { + return "v5" END; + } else { + return "v4" END; + } + +#undef END +} + #else /* 64 bit ARM definitions */ #define ELF_START_MMAP 0x80000000 -- 2.17.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM for arm 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM " Richard Henderson @ 2019-02-12 8:31 ` Laurent Vivier 2019-02-12 21:44 ` Richard Henderson 2019-02-14 9:25 ` Laurent Vivier 1 sibling, 1 reply; 8+ messages in thread From: Laurent Vivier @ 2019-02-12 8:31 UTC (permalink / raw) To: Richard Henderson, qemu-devel; +Cc: qemu-arm On 12/02/2019 08:48, Richard Henderson wrote: > The 32-bit kernel has strings for v4, v5, v6, v7, v7m. > The 64-bit kernel, in compat mode, has strings for v8. > > Fixes: https://bugs.launchpad.net/bugs/1813034 > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > v2: Include v8. > --- > linux-user/elfload.c | 31 +++++++++++++++++++++++++++++++ > 1 file changed, 31 insertions(+) > > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index 775a36ccdd..d796d51ec6 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -500,6 +500,37 @@ static uint32_t get_elf_hwcap2(void) > #undef GET_FEATURE > #undef GET_FEATURE_ID > > +#define ELF_PLATFORM get_elf_platform() > + > +static const char *get_elf_platform(void) > +{ > + CPUARMState *env = thread_cpu->env_ptr; > + > +#ifdef TARGET_WORDS_BIGENDIAN > +# define END "b" > +#else > +# define END "l" > +#endif > + > + if (arm_feature(env, ARM_FEATURE_V8)) { > + return "v8" END; > + } else if (arm_feature(env, ARM_FEATURE_V7)) { > + if (arm_feature(env, ARM_FEATURE_M)) { > + return "v7m" END; > + } else { > + return "v7" END; > + } > + } else if (arm_feature(env, ARM_FEATURE_V6)) { > + return "v6" END; > + } else if (arm_feature(env, ARM_FEATURE_V5)) { > + return "v5" END; > + } else { > + return "v4" END; > + } I know nothing about ARM, but in kernel we have also a "v5t" (cpu_elf_name) and in QEMU we have a ARM_FEATURE_V4T which is set with ARM_FEATURE_V5. Is it related? Reviewed-by: Laurent Vivier <laurent@vivier.eu> Thanks, Laurent ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM for arm 2019-02-12 8:31 ` Laurent Vivier @ 2019-02-12 21:44 ` Richard Henderson 0 siblings, 0 replies; 8+ messages in thread From: Richard Henderson @ 2019-02-12 21:44 UTC (permalink / raw) To: Laurent Vivier, qemu-devel; +Cc: qemu-arm On 2/12/19 12:31 AM, Laurent Vivier wrote: > I know nothing about ARM, but in kernel we have also a "v5t" > (cpu_elf_name) and in QEMU we have a ARM_FEATURE_V4T which is set with > ARM_FEATURE_V5. Is it related? >From the ARM ARM (DDI 0406C, page A1-30): The valid variants of ARMv4, ARMv5, and ARMv6 are as follows: ARMv4, ARMv4T, ARMv5T, ARMv5TE, ARMv5TEJ, ARMv6, ARMv6K, ARMv6T2 So all v5 are "t". The use of "v5t" within the kernel seems to be an outlier and perhaps a bug to be squashed: $ grep -r cpu_elf_name . | grep v5 ./mm/proc-xsc3.S: string cpu_elf_name, "v5" ./mm/proc-arm1020.S: string cpu_elf_name, "v5" ./mm/proc-arm946.S: string cpu_elf_name, "v5t" ./mm/proc-arm1020e.S: string cpu_elf_name, "v5" ./mm/proc-arm1022.S: string cpu_elf_name, "v5" ./mm/proc-feroceon.S: string cpu_elf_name, "v5" ./mm/proc-xscale.S: string cpu_elf_name, "v5" ./mm/proc-mohawk.S: string cpu_elf_name, "v5" ./mm/proc-arm926.S: string cpu_elf_name, "v5" ./mm/proc-arm1026.S: string cpu_elf_name, "v5" r~ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM for arm 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM " Richard Henderson 2019-02-12 8:31 ` Laurent Vivier @ 2019-02-14 9:25 ` Laurent Vivier 1 sibling, 0 replies; 8+ messages in thread From: Laurent Vivier @ 2019-02-14 9:25 UTC (permalink / raw) To: Richard Henderson, qemu-devel; +Cc: qemu-arm On 12/02/2019 08:48, Richard Henderson wrote: > The 32-bit kernel has strings for v4, v5, v6, v7, v7m. > The 64-bit kernel, in compat mode, has strings for v8. > > Fixes: https://bugs.launchpad.net/bugs/1813034 > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > v2: Include v8. > --- > linux-user/elfload.c | 31 +++++++++++++++++++++++++++++++ > 1 file changed, 31 insertions(+) Applied to my linux-user branch. Thanks, Laurent ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v2 2/2] linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user 2019-02-12 7:48 [Qemu-devel] [PATCH v2 0/2] linux-user: Fix AT_PLATFORM for arm Richard Henderson 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM " Richard Henderson @ 2019-02-12 7:48 ` Richard Henderson 2019-02-12 8:27 ` Laurent Vivier 2019-02-14 9:25 ` Laurent Vivier 1 sibling, 2 replies; 8+ messages in thread From: Richard Henderson @ 2019-02-12 7:48 UTC (permalink / raw) To: qemu-devel; +Cc: laurent, qemu-arm Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- linux-user/elfload.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index d796d51ec6..5aa0628ae9 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -537,7 +537,11 @@ static const char *get_elf_platform(void) #define ELF_ARCH EM_AARCH64 #define ELF_CLASS ELFCLASS64 -#define ELF_PLATFORM "aarch64" +#ifdef TARGET_WORDS_BIGENDIAN +# define ELF_PLATFORM "aarch64_be" +#else +# define ELF_PLATFORM "aarch64" +#endif static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) -- 2.17.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v2 2/2] linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 2/2] linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user Richard Henderson @ 2019-02-12 8:27 ` Laurent Vivier 2019-02-14 9:25 ` Laurent Vivier 1 sibling, 0 replies; 8+ messages in thread From: Laurent Vivier @ 2019-02-12 8:27 UTC (permalink / raw) To: Richard Henderson, qemu-devel; +Cc: qemu-arm On 12/02/2019 08:48, Richard Henderson wrote: > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > linux-user/elfload.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index d796d51ec6..5aa0628ae9 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -537,7 +537,11 @@ static const char *get_elf_platform(void) > > #define ELF_ARCH EM_AARCH64 > #define ELF_CLASS ELFCLASS64 > -#define ELF_PLATFORM "aarch64" > +#ifdef TARGET_WORDS_BIGENDIAN > +# define ELF_PLATFORM "aarch64_be" > +#else > +# define ELF_PLATFORM "aarch64" > +#endif > > static inline void init_thread(struct target_pt_regs *regs, > struct image_info *infop) > Reviewed-by: Laurent Vivier <laurent@vivier.eu> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v2 2/2] linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 2/2] linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user Richard Henderson 2019-02-12 8:27 ` Laurent Vivier @ 2019-02-14 9:25 ` Laurent Vivier 1 sibling, 0 replies; 8+ messages in thread From: Laurent Vivier @ 2019-02-14 9:25 UTC (permalink / raw) To: Richard Henderson, qemu-devel; +Cc: qemu-arm On 12/02/2019 08:48, Richard Henderson wrote: > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > linux-user/elfload.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index d796d51ec6..5aa0628ae9 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -537,7 +537,11 @@ static const char *get_elf_platform(void) > > #define ELF_ARCH EM_AARCH64 > #define ELF_CLASS ELFCLASS64 > -#define ELF_PLATFORM "aarch64" > +#ifdef TARGET_WORDS_BIGENDIAN > +# define ELF_PLATFORM "aarch64_be" > +#else > +# define ELF_PLATFORM "aarch64" > +#endif > > static inline void init_thread(struct target_pt_regs *regs, > struct image_info *infop) > Applied to my linux-user branch. Thanks, Laurent ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-02-14 9:28 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-02-12 7:48 [Qemu-devel] [PATCH v2 0/2] linux-user: Fix AT_PLATFORM for arm Richard Henderson 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 1/2] linux-user: Add ELF_PLATFORM " Richard Henderson 2019-02-12 8:31 ` Laurent Vivier 2019-02-12 21:44 ` Richard Henderson 2019-02-14 9:25 ` Laurent Vivier 2019-02-12 7:48 ` [Qemu-devel] [PATCH v2 2/2] linux-user: Fix ELF_PLATFORM for aarch64_be-linux-user Richard Henderson 2019-02-12 8:27 ` Laurent Vivier 2019-02-14 9:25 ` Laurent Vivier
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).