tools/libs/light/libxl_cpuid.c | 21 ++++++++++++--------- tools/libs/light/libxl_internal.c | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-)
Archlinux just updated glibc to 2.43+r5+g856c426a7534-1 and that
causes libxl build failure:
libxl_cpuid.c: In function ‘libxl_cpuid_parse_config_xend’:
libxl_cpuid.c:447:16: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
447 | endptr = strchr(str, '=');
| ^
libxl_cpuid.c:452:16: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
452 | endptr = strchr(str, ',');
| ^
libxl_cpuid.c:454:20: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
454 | endptr = strchr(str, 0);
| ^
cc1: all warnings being treated as errors
Add missing consts. Note in libxl_cpuid_parse_config_xend() non-const
endptr still is needed, to be compatible with the second argument to
strtoul(). Add second variable for this reason.
And while at it, move semicolon to its own line
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
Changes in v3:
- go back to adding consts, as it wasn't about GCC after all
- reduce variable scope, move semicolon
Changes in v2:
- revert to old standard (specify it explicitly now), instead of
adjusting the code to the new standard - this way is more
backport-friendly
---
tools/libs/light/libxl_cpuid.c | 21 ++++++++++++---------
tools/libs/light/libxl_internal.c | 2 +-
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c
index 8420b2465f39..14f08df33a14 100644
--- a/tools/libs/light/libxl_cpuid.c
+++ b/tools/libs/light/libxl_cpuid.c
@@ -440,29 +440,32 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_list *policy,
str = endptr + 1;
entry = cpuid_find_match(policy, leaf, subleaf);
for (str = endptr + 1; *str != 0;) {
+ const char *endptrc;
+
if (str[0] != 'e' || str[2] != 'x') {
return 4;
}
value = str[1] - 'a';
- endptr = strchr(str, '=');
- if (value > 3 || endptr == NULL) {
+ endptrc = strchr(str, '=');
+ if (value > 3 || endptrc == NULL) {
return 4;
}
- str = endptr + 1;
- endptr = strchr(str, ',');
- if (endptr == NULL) {
- endptr = strchr(str, 0);
+ str = endptrc + 1;
+ endptrc = strchr(str, ',');
+ if (endptrc == NULL) {
+ endptrc = strchr(str, 0);
}
- if (endptr - str != 32) {
+ if (endptrc - str != 32) {
return 5;
}
entry->policy[value] = calloc(32 + 1, 1);
strncpy(entry->policy[value], str, 32);
entry->policy[value][32] = 0;
- if (*endptr == 0) {
+ if (*endptrc == 0) {
break;
}
- for (str = endptr + 1; *str == ' ' || *str == '\n'; str++);
+ for (str = endptrc + 1; *str == ' ' || *str == '\n'; str++)
+ ;
}
return 0;
}
diff --git a/tools/libs/light/libxl_internal.c b/tools/libs/light/libxl_internal.c
index 2941ca0bbd0e..d70cfed7d88f 100644
--- a/tools/libs/light/libxl_internal.c
+++ b/tools/libs/light/libxl_internal.c
@@ -204,7 +204,7 @@ char *libxl__strndup(libxl__gc *gc, const char *c, size_t n)
char *libxl__dirname(libxl__gc *gc, const char *s)
{
- char *c = strrchr(s, '/');
+ const char *c = strrchr(s, '/');
if (!c)
return NULL;
--
2.52.0
On Fri, Feb 20, 2026 at 01:12:00PM +0100, Marek Marczykowski-Górecki wrote: > Archlinux just updated glibc to 2.43+r5+g856c426a7534-1 and that > causes libxl build failure: > > libxl_cpuid.c: In function ‘libxl_cpuid_parse_config_xend’: > libxl_cpuid.c:447:16: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 447 | endptr = strchr(str, '='); > | ^ > libxl_cpuid.c:452:16: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 452 | endptr = strchr(str, ','); > | ^ > libxl_cpuid.c:454:20: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 454 | endptr = strchr(str, 0); > | ^ > cc1: all warnings being treated as errors > > Add missing consts. Note in libxl_cpuid_parse_config_xend() non-const > endptr still is needed, to be compatible with the second argument to > strtoul(). Add second variable for this reason. > > And while at it, move semicolon to its own line > > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Acked-by: Anthony PERARD <anthony.perard@vates.tech> Thanks, -- Anthony Perard | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech
On 20.02.2026 13:12, Marek Marczykowski-Górecki wrote: > Archlinux just updated glibc to 2.43+r5+g856c426a7534-1 and that > causes libxl build failure: > > libxl_cpuid.c: In function ‘libxl_cpuid_parse_config_xend’: > libxl_cpuid.c:447:16: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 447 | endptr = strchr(str, '='); > | ^ > libxl_cpuid.c:452:16: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 452 | endptr = strchr(str, ','); > | ^ > libxl_cpuid.c:454:20: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 454 | endptr = strchr(str, 0); > | ^ > cc1: all warnings being treated as errors > > Add missing consts. Note in libxl_cpuid_parse_config_xend() non-const > endptr still is needed, to be compatible with the second argument to > strtoul(). Add second variable for this reason. > > And while at it, move semicolon to its own line > > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> I'd like to note though that this can't be all that's needed for tools/ to build fine in such an environment. xenstored/core.c has two problematic uses of strrchr(), for example. Jan
On Fri, Feb 20, 2026 at 03:06:56PM +0100, Jan Beulich wrote: > On 20.02.2026 13:12, Marek Marczykowski-Górecki wrote: > > Archlinux just updated glibc to 2.43+r5+g856c426a7534-1 and that > > causes libxl build failure: > > > > libxl_cpuid.c: In function ‘libxl_cpuid_parse_config_xend’: > > libxl_cpuid.c:447:16: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > > 447 | endptr = strchr(str, '='); > > | ^ > > libxl_cpuid.c:452:16: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > > 452 | endptr = strchr(str, ','); > > | ^ > > libxl_cpuid.c:454:20: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > > 454 | endptr = strchr(str, 0); > > | ^ > > cc1: all warnings being treated as errors > > > > Add missing consts. Note in libxl_cpuid_parse_config_xend() non-const > > endptr still is needed, to be compatible with the second argument to > > strtoul(). Add second variable for this reason. > > > > And while at it, move semicolon to its own line > > > > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> > > Reviewed-by: Jan Beulich <jbeulich@suse.com> > > I'd like to note though that this can't be all that's needed for tools/ to > build fine in such an environment. xenstored/core.c has two problematic uses > of strrchr(), for example. Hm, it builds fine for me, not sure why. -- Best Regards, Marek Marczykowski-Górecki Invisible Things Lab
© 2016 - 2026 Red Hat, Inc.