x86: Fix bug about glibc.cpu.hwcaps.
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
dj/TryBot-32bit |
success
|
Build for i686
|
Commit Message
1. export GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512
2. Add _dl_printf("p -- %s\n", p); just before switch(nl) in
sysdeps/x86/cpu-tunables.c
3. compiled and run ./testrun.sh /usr/bin/ls
you will get:
p -- -AVX512
p -- LC_ADDRESS=en_US.UTF-8
p -- LC_NUMERIC=C
...
The function, TUNABLE_CALLBACK (set_hwcaps)
(tunable_val_t *valp), checks far more than it should and it
should stop at end of "-AVX512".
---
sysdeps/x86/cpu-tunables.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Comments
On Tue, Feb 28, 2023 at 9:22 PM caiyinyu <caiyinyu@loongson.cn> wrote:
>
> 1. export GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512
> 2. Add _dl_printf("p -- %s\n", p); just before switch(nl) in
> sysdeps/x86/cpu-tunables.c
> 3. compiled and run ./testrun.sh /usr/bin/ls
> you will get:
>
> p -- -AVX512
> p -- LC_ADDRESS=en_US.UTF-8
> p -- LC_NUMERIC=C
> ...
>
> The function, TUNABLE_CALLBACK (set_hwcaps)
> (tunable_val_t *valp), checks far more than it should and it
> should stop at end of "-AVX512".
> ---
> sysdeps/x86/cpu-tunables.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c
> index d3e1367bda..772fb0c4c2 100644
> --- a/sysdeps/x86/cpu-tunables.c
> +++ b/sysdeps/x86/cpu-tunables.c
> @@ -107,13 +107,13 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
> NOTE: the IFUNC selection may change over time. Please check all
> multiarch implementations when experimenting. */
>
> - const char *p = valp->strval;
> + const char *p = valp->strval, *c;
> struct cpu_features *cpu_features = &GLRO(dl_x86_cpu_features);
> size_t len;
>
> do
> {
> - const char *c, *n;
> + const char *n;
> bool disable;
> size_t nl;
>
> @@ -283,7 +283,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
> }
> p += len + 1;
> }
> - while (*p != '\0');
> + while (*c != '\0');
> }
>
> # if CET_ENABLED
> --
> 2.31.1
>
Can you make a bugzilla for this?
在 2023/3/1 下午12:19, Noah Goldstein 写道:
> On Tue, Feb 28, 2023 at 9:22 PM caiyinyu <caiyinyu@loongson.cn> wrote:
>> 1. export GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512
>> 2. Add _dl_printf("p -- %s\n", p); just before switch(nl) in
>> sysdeps/x86/cpu-tunables.c
>> 3. compiled and run ./testrun.sh /usr/bin/ls
>> you will get:
>>
>> p -- -AVX512
>> p -- LC_ADDRESS=en_US.UTF-8
>> p -- LC_NUMERIC=C
>> ...
>>
>> The function, TUNABLE_CALLBACK (set_hwcaps)
>> (tunable_val_t *valp), checks far more than it should and it
>> should stop at end of "-AVX512".
>> ---
>> sysdeps/x86/cpu-tunables.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c
>> index d3e1367bda..772fb0c4c2 100644
>> --- a/sysdeps/x86/cpu-tunables.c
>> +++ b/sysdeps/x86/cpu-tunables.c
>> @@ -107,13 +107,13 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
>> NOTE: the IFUNC selection may change over time. Please check all
>> multiarch implementations when experimenting. */
>>
>> - const char *p = valp->strval;
>> + const char *p = valp->strval, *c;
>> struct cpu_features *cpu_features = &GLRO(dl_x86_cpu_features);
>> size_t len;
>>
>> do
>> {
>> - const char *c, *n;
>> + const char *n;
>> bool disable;
>> size_t nl;
>>
>> @@ -283,7 +283,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
>> }
>> p += len + 1;
>> }
>> - while (*p != '\0');
>> + while (*c != '\0');
>> }
>>
>> # if CET_ENABLED
>> --
>> 2.31.1
>>
> Can you make a bugzilla for this?
bugzilla:
https://sourceware.org/bugzilla/show_bug.cgi?id=30183
On Wed, Mar 1, 2023 at 3:11 AM caiyinyu <caiyinyu@loongson.cn> wrote:
>
>
> 在 2023/3/1 下午12:19, Noah Goldstein 写道:
> > On Tue, Feb 28, 2023 at 9:22 PM caiyinyu <caiyinyu@loongson.cn> wrote:
> >> 1. export GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512
> >> 2. Add _dl_printf("p -- %s\n", p); just before switch(nl) in
> >> sysdeps/x86/cpu-tunables.c
> >> 3. compiled and run ./testrun.sh /usr/bin/ls
> >> you will get:
> >>
> >> p -- -AVX512
> >> p -- LC_ADDRESS=en_US.UTF-8
> >> p -- LC_NUMERIC=C
> >> ...
> >>
> >> The function, TUNABLE_CALLBACK (set_hwcaps)
> >> (tunable_val_t *valp), checks far more than it should and it
> >> should stop at end of "-AVX512".
> >> ---
> >> sysdeps/x86/cpu-tunables.c | 6 +++---
> >> 1 file changed, 3 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c
> >> index d3e1367bda..772fb0c4c2 100644
> >> --- a/sysdeps/x86/cpu-tunables.c
> >> +++ b/sysdeps/x86/cpu-tunables.c
> >> @@ -107,13 +107,13 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
> >> NOTE: the IFUNC selection may change over time. Please check all
> >> multiarch implementations when experimenting. */
> >>
> >> - const char *p = valp->strval;
> >> + const char *p = valp->strval, *c;
> >> struct cpu_features *cpu_features = &GLRO(dl_x86_cpu_features);
> >> size_t len;
> >>
> >> do
> >> {
> >> - const char *c, *n;
> >> + const char *n;
> >> bool disable;
> >> size_t nl;
> >>
> >> @@ -283,7 +283,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
> >> }
> >> p += len + 1;
> >> }
> >> - while (*p != '\0');
> >> + while (*c != '\0');
> >> }
> >>
> >> # if CET_ENABLED
> >> --
> >> 2.31.1
> >>
> > Can you make a bugzilla for this?
> bugzilla:
>
> https://sourceware.org/bugzilla/show_bug.cgi?id=30183
>
>
Can you append '[BZ #30183]' to the commit message.
Otherwise looks good.
On Wed, Mar 1, 2023 at 8:43 AM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>
> On Wed, Mar 1, 2023 at 3:11 AM caiyinyu <caiyinyu@loongson.cn> wrote:
> >
> >
> > 在 2023/3/1 下午12:19, Noah Goldstein 写道:
> > > On Tue, Feb 28, 2023 at 9:22 PM caiyinyu <caiyinyu@loongson.cn> wrote:
> > >> 1. export GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512
> > >> 2. Add _dl_printf("p -- %s\n", p); just before switch(nl) in
> > >> sysdeps/x86/cpu-tunables.c
> > >> 3. compiled and run ./testrun.sh /usr/bin/ls
> > >> you will get:
> > >>
> > >> p -- -AVX512
> > >> p -- LC_ADDRESS=en_US.UTF-8
> > >> p -- LC_NUMERIC=C
> > >> ...
> > >>
> > >> The function, TUNABLE_CALLBACK (set_hwcaps)
> > >> (tunable_val_t *valp), checks far more than it should and it
> > >> should stop at end of "-AVX512".
> > >> ---
> > >> sysdeps/x86/cpu-tunables.c | 6 +++---
> > >> 1 file changed, 3 insertions(+), 3 deletions(-)
> > >>
> > >> diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c
> > >> index d3e1367bda..772fb0c4c2 100644
> > >> --- a/sysdeps/x86/cpu-tunables.c
> > >> +++ b/sysdeps/x86/cpu-tunables.c
> > >> @@ -107,13 +107,13 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
> > >> NOTE: the IFUNC selection may change over time. Please check all
> > >> multiarch implementations when experimenting. */
> > >>
> > >> - const char *p = valp->strval;
> > >> + const char *p = valp->strval, *c;
> > >> struct cpu_features *cpu_features = &GLRO(dl_x86_cpu_features);
> > >> size_t len;
> > >>
> > >> do
> > >> {
> > >> - const char *c, *n;
> > >> + const char *n;
> > >> bool disable;
> > >> size_t nl;
> > >>
> > >> @@ -283,7 +283,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
> > >> }
> > >> p += len + 1;
> > >> }
> > >> - while (*p != '\0');
> > >> + while (*c != '\0');
> > >> }
> > >>
> > >> # if CET_ENABLED
> > >> --
> > >> 2.31.1
> > >>
> > > Can you make a bugzilla for this?
> > bugzilla:
> >
> > https://sourceware.org/bugzilla/show_bug.cgi?id=30183
> >
> >
> Can you append '[BZ #30183]' to the commit message.
> Otherwise looks good.
Is it possible to add a testcase?
在 2023/3/2 上午12:42, Noah Goldstein 写道:
> On Wed, Mar 1, 2023 at 3:11 AM caiyinyu <caiyinyu@loongson.cn> wrote:
>>
>> 在 2023/3/1 下午12:19, Noah Goldstein 写道:
>>> On Tue, Feb 28, 2023 at 9:22 PM caiyinyu <caiyinyu@loongson.cn> wrote:
>>>> 1. export GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512
>>>> 2. Add _dl_printf("p -- %s\n", p); just before switch(nl) in
>>>> sysdeps/x86/cpu-tunables.c
>>>> 3. compiled and run ./testrun.sh /usr/bin/ls
>>>> you will get:
>>>>
>>>> p -- -AVX512
>>>> p -- LC_ADDRESS=en_US.UTF-8
>>>> p -- LC_NUMERIC=C
>>>> ...
>>>>
>>>> The function, TUNABLE_CALLBACK (set_hwcaps)
>>>> (tunable_val_t *valp), checks far more than it should and it
>>>> should stop at end of "-AVX512".
>>>> ---
>>>> sysdeps/x86/cpu-tunables.c | 6 +++---
>>>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c
>>>> index d3e1367bda..772fb0c4c2 100644
>>>> --- a/sysdeps/x86/cpu-tunables.c
>>>> +++ b/sysdeps/x86/cpu-tunables.c
>>>> @@ -107,13 +107,13 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
>>>> NOTE: the IFUNC selection may change over time. Please check all
>>>> multiarch implementations when experimenting. */
>>>>
>>>> - const char *p = valp->strval;
>>>> + const char *p = valp->strval, *c;
>>>> struct cpu_features *cpu_features = &GLRO(dl_x86_cpu_features);
>>>> size_t len;
>>>>
>>>> do
>>>> {
>>>> - const char *c, *n;
>>>> + const char *n;
>>>> bool disable;
>>>> size_t nl;
>>>>
>>>> @@ -283,7 +283,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
>>>> }
>>>> p += len + 1;
>>>> }
>>>> - while (*p != '\0');
>>>> + while (*c != '\0');
>>>> }
>>>>
>>>> # if CET_ENABLED
>>>> --
>>>> 2.31.1
>>>>
>>> Can you make a bugzilla for this?
>> bugzilla:
>>
>> https://sourceware.org/bugzilla/show_bug.cgi?id=30183
>>
>>
> Can you append '[BZ #30183]' to the commit message.
> Otherwise looks good.
OK.
https://sourceware.org/pipermail/libc-alpha/2023-March/145996.html
@@ -107,13 +107,13 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
NOTE: the IFUNC selection may change over time. Please check all
multiarch implementations when experimenting. */
- const char *p = valp->strval;
+ const char *p = valp->strval, *c;
struct cpu_features *cpu_features = &GLRO(dl_x86_cpu_features);
size_t len;
do
{
- const char *c, *n;
+ const char *n;
bool disable;
size_t nl;
@@ -283,7 +283,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
}
p += len + 1;
}
- while (*p != '\0');
+ while (*c != '\0');
}
# if CET_ENABLED