[PATCH] linux-user/elfload.c: use get_elf_hwcap2 to fix regression

Qi.Chen@windriver.com posted 1 patch 4 days, 21 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260202054537.2538899-1-Qi.Chen@windriver.com
Maintainers: Laurent Vivier <laurent@vivier.eu>, Pierrick Bouvier <pierrick.bouvier@linaro.org>
linux-user/elfload.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] linux-user/elfload.c: use get_elf_hwcap2 to fix regression
Posted by Qi.Chen@windriver.com 4 days, 21 hours ago
From: Chen Qi <Qi.Chen@windriver.com>

In commit fcac98d0b (linux-user: Remove ELF_HWCAP2), the following
macro is removed:

However, in place of the original ELF_HWCAP2, get_elf_hwcap instead
of the original get_elf_hwcap2 was used.

This caused serious regression for at least ppc64 user mode. The
error message is like below:

  Fatal glibc error: CPU lacks ISA 3.00 support (POWER9 or later required)

This patch restores to use get_elf_hwcap2.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 linux-user/elfload.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index 0002d5be2f..35471c0c9a 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -708,7 +708,7 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc,
     NEW_AUX_ENT(AT_EXECFN, info->file_string);
 
     if (HAVE_ELF_HWCAP2) {
-        NEW_AUX_ENT(AT_HWCAP2, get_elf_hwcap(thread_cpu));
+        NEW_AUX_ENT(AT_HWCAP2, get_elf_hwcap2(thread_cpu));
     }
     if (u_base_platform) {
         NEW_AUX_ENT(AT_BASE_PLATFORM, u_base_platform);
-- 
2.34.1
Re: [PATCH] linux-user/elfload.c: use get_elf_hwcap2 to fix regression
Posted by Philippe Mathieu-Daudé 4 days, 11 hours ago
Hi,

On 2/2/26 06:45, Qi.Chen@windriver.com wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
> 
> In commit fcac98d0b (linux-user: Remove ELF_HWCAP2), the following
> macro is removed:
> 
> However, in place of the original ELF_HWCAP2, get_elf_hwcap instead
> of the original get_elf_hwcap2 was used.
> 
> This caused serious regression for at least ppc64 user mode. The
> error message is like below:
> 
>    Fatal glibc error: CPU lacks ISA 3.00 support (POWER9 or later required)
> 
> This patch restores to use get_elf_hwcap2.
> 
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>   linux-user/elfload.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
> index 0002d5be2f..35471c0c9a 100644
> --- a/linux-user/elfload.c
> +++ b/linux-user/elfload.c
> @@ -708,7 +708,7 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc,
>       NEW_AUX_ENT(AT_EXECFN, info->file_string);
>   
>       if (HAVE_ELF_HWCAP2) {
> -        NEW_AUX_ENT(AT_HWCAP2, get_elf_hwcap(thread_cpu));
> +        NEW_AUX_ENT(AT_HWCAP2, get_elf_hwcap2(thread_cpu));
>       }

This is the correct fix. It was committed recently:
https://gitlab.com/qemu-project/qemu/-/commit/c333f9c4ee212297f3b9a8a6ef62396a63c48e61

We forgot to Cc qemu-stable. Michael, could you include this
commit for v10.2.x stable series?

Thanks,

Phil.
Re: [PATCH] linux-user/elfload.c: use get_elf_hwcap2 to fix regression
Posted by Michael Tokarev 4 days, 5 hours ago
On 2/2/26 18:53, Philippe Mathieu-Daudé wrote:
> Hi,
> 
> On 2/2/26 06:45, Qi.Chen@windriver.com wrote:
>> From: Chen Qi <Qi.Chen@windriver.com>
>>
>> In commit fcac98d0b (linux-user: Remove ELF_HWCAP2), the following
>> macro is removed:
>>
>> However, in place of the original ELF_HWCAP2, get_elf_hwcap instead
>> of the original get_elf_hwcap2 was used.
>>
>> This caused serious regression for at least ppc64 user mode. The
>> error message is like below:
>>
>>    Fatal glibc error: CPU lacks ISA 3.00 support (POWER9 or later 
>> required)
>>
>> This patch restores to use get_elf_hwcap2.
>>
>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>> ---
>>   linux-user/elfload.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
>> index 0002d5be2f..35471c0c9a 100644
>> --- a/linux-user/elfload.c
>> +++ b/linux-user/elfload.c
>> @@ -708,7 +708,7 @@ static abi_ulong create_elf_tables(abi_ulong p, 
>> int argc, int envc,
>>       NEW_AUX_ENT(AT_EXECFN, info->file_string);
>>       if (HAVE_ELF_HWCAP2) {
>> -        NEW_AUX_ENT(AT_HWCAP2, get_elf_hwcap(thread_cpu));
>> +        NEW_AUX_ENT(AT_HWCAP2, get_elf_hwcap2(thread_cpu));
>>       }
> 
> This is the correct fix. It was committed recently:
> https://gitlab.com/qemu-project/qemu/-/commit/ 
> c333f9c4ee212297f3b9a8a6ef62396a63c48e61
> 
> We forgot to Cc qemu-stable. Michael, could you include this
> commit for v10.2.x stable series?

Yeah, it's been applied to 10.2.x for quite some time,  - I picked
it up on Jan-13.

Now I wonder - why did I pick it up? :)

But it's there, at least.

Thanks,

/mjt