* [PATCH 0/2] Fix const qualifier build errors with recent glibc
@ 2025-12-10 18:13 Cédric Le Goater
2025-12-10 18:13 ` [PATCH 1/2] i386: " Cédric Le Goater
2025-12-10 18:13 ` [PATCH 2/2] tests/vhost-user-bridge.c: " Cédric Le Goater
0 siblings, 2 replies; 15+ messages in thread
From: Cédric Le Goater @ 2025-12-10 18:13 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini,
Richard Henderson, Cédric Le Goater
Hello,
More fixes for the build breakage due to the recent change in glibc
2.42.9000 :
https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690
Thanks,
C.
Cédric Le Goater (2):
i386: Fix const qualifier build errors with recent glibc
tests/vhost-user-bridge.c: Fix const qualifier build errors with
recent glibc
hw/i386/x86-common.c | 2 +-
tests/vhost-user-bridge.c | 10 ++++------
2 files changed, 5 insertions(+), 7 deletions(-)
--
2.52.0
^ permalink raw reply [flat|nested] 15+ messages in thread* [PATCH 1/2] i386: Fix const qualifier build errors with recent glibc 2025-12-10 18:13 [PATCH 0/2] Fix const qualifier build errors with recent glibc Cédric Le Goater @ 2025-12-10 18:13 ` Cédric Le Goater 2025-12-10 18:39 ` Peter Maydell 2025-12-11 15:16 ` Philippe Mathieu-Daudé 2025-12-10 18:13 ` [PATCH 2/2] tests/vhost-user-bridge.c: " Cédric Le Goater 1 sibling, 2 replies; 15+ messages in thread From: Cédric Le Goater @ 2025-12-10 18:13 UTC (permalink / raw) To: qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson, Cédric Le Goater A recent change in glibc 2.42.9000 [1] changes the return type of strstr() and other string functions to be 'const char *' when the input is a 'const char *'. This breaks the build in : ../hw/i386/x86-common.c:827:11: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] 827 | vmode = strstr(kernel_cmdline, "vga="); | ^ Fix this by changing the type of the variables that store the result of these functions to 'const char *'. [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 Signed-off-by: Cédric Le Goater <clg@redhat.com> --- hw/i386/x86-common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index c844749900a30c9c9c284c529e93c84c9457b128..f77e2e63046ff56d079363e411a9ee0eca365291 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -654,7 +654,7 @@ void x86_load_linux(X86MachineState *x86ms, uint8_t header[8192], *setup, *kernel; hwaddr real_addr, prot_addr, cmdline_addr, initrd_addr = 0; FILE *f; - char *vmode; + const char *vmode; MachineState *machine = MACHINE(x86ms); struct setup_data *setup_data; const char *kernel_filename = machine->kernel_filename; -- 2.52.0 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] i386: Fix const qualifier build errors with recent glibc 2025-12-10 18:13 ` [PATCH 1/2] i386: " Cédric Le Goater @ 2025-12-10 18:39 ` Peter Maydell 2025-12-11 15:16 ` Philippe Mathieu-Daudé 1 sibling, 0 replies; 15+ messages in thread From: Peter Maydell @ 2025-12-10 18:39 UTC (permalink / raw) To: Cédric Le Goater Cc: qemu-devel, Philippe Mathieu-Daudé, Paolo Bonzini, Richard Henderson On Wed, 10 Dec 2025 at 18:13, Cédric Le Goater <clg@redhat.com> wrote: > > A recent change in glibc 2.42.9000 [1] changes the return type of > strstr() and other string functions to be 'const char *' when the > input is a 'const char *'. This breaks the build in : > > ../hw/i386/x86-common.c:827:11: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 827 | vmode = strstr(kernel_cmdline, "vga="); > | ^ > > Fix this by changing the type of the variables that store the result > of these functions to 'const char *'. > > [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 > > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > hw/i386/x86-common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c > index c844749900a30c9c9c284c529e93c84c9457b128..f77e2e63046ff56d079363e411a9ee0eca365291 100644 > --- a/hw/i386/x86-common.c > +++ b/hw/i386/x86-common.c > @@ -654,7 +654,7 @@ void x86_load_linux(X86MachineState *x86ms, > uint8_t header[8192], *setup, *kernel; > hwaddr real_addr, prot_addr, cmdline_addr, initrd_addr = 0; > FILE *f; > - char *vmode; > + const char *vmode; > MachineState *machine = MACHINE(x86ms); > struct setup_data *setup_data; > const char *kernel_filename = machine->kernel_filename; > -- Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] i386: Fix const qualifier build errors with recent glibc 2025-12-10 18:13 ` [PATCH 1/2] i386: " Cédric Le Goater 2025-12-10 18:39 ` Peter Maydell @ 2025-12-11 15:16 ` Philippe Mathieu-Daudé 1 sibling, 0 replies; 15+ messages in thread From: Philippe Mathieu-Daudé @ 2025-12-11 15:16 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel Cc: Peter Maydell, Paolo Bonzini, Richard Henderson On 10/12/25 19:13, Cédric Le Goater wrote: > A recent change in glibc 2.42.9000 [1] changes the return type of > strstr() and other string functions to be 'const char *' when the > input is a 'const char *'. This breaks the build in : > > ../hw/i386/x86-common.c:827:11: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 827 | vmode = strstr(kernel_cmdline, "vga="); > | ^ > > Fix this by changing the type of the variables that store the result > of these functions to 'const char *'. > > [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 > > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > hw/i386/x86-common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-10 18:13 [PATCH 0/2] Fix const qualifier build errors with recent glibc Cédric Le Goater 2025-12-10 18:13 ` [PATCH 1/2] i386: " Cédric Le Goater @ 2025-12-10 18:13 ` Cédric Le Goater 2025-12-10 18:14 ` Cédric Le Goater 2025-12-12 23:33 ` Yodel Eldar 1 sibling, 2 replies; 15+ messages in thread From: Cédric Le Goater @ 2025-12-10 18:13 UTC (permalink / raw) To: qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson, Cédric Le Goater A recent change in glibc 2.42.9000 [1] changes the return type of strstr() and other string functions to be 'const char *' when the input is a 'const char *'. This breaks the build in : ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: ../tests/vhost-user-bridge.c:749:15: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] 749 | char *p = strchr(buf, ':'); | ^~~~~~ Fix this by using the glib g_strsplit() routine instead of strdup(). [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 Suggested-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Cédric Le Goater <clg@redhat.com> --- tests/vhost-user-bridge.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c index a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 --- a/tests/vhost-user-bridge.c +++ b/tests/vhost-user-bridge.c @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) static int vubr_parse_host_port(const char **host, const char **port, const char *buf) { - char *p = strchr(buf, ':'); - - if (!p) { + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); + if (!tokens[0] || !tokens[1]) { return -1; } - *p = '\0'; - *host = strdup(buf); - *port = strdup(p + 1); + *host = g_steal_pointer(&tokens[0]); + *port = g_steal_pointer(&tokens[1]); return 0; } -- 2.52.0 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-10 18:13 ` [PATCH 2/2] tests/vhost-user-bridge.c: " Cédric Le Goater @ 2025-12-10 18:14 ` Cédric Le Goater 2025-12-11 7:55 ` Cédric Le Goater 2025-12-12 23:33 ` Yodel Eldar 1 sibling, 1 reply; 15+ messages in thread From: Cédric Le Goater @ 2025-12-10 18:14 UTC (permalink / raw) To: qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson On 12/10/25 19:13, Cédric Le Goater wrote: > A recent change in glibc 2.42.9000 [1] changes the return type of > strstr() and other string functions to be 'const char *' when the > input is a 'const char *'. This breaks the build in : > > ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: > ../tests/vhost-user-bridge.c:749:15: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 749 | char *p = strchr(buf, ':'); > | ^~~~~~ > > Fix this by using the glib g_strsplit() routine instead of strdup(). > > [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 > > Suggested-by: Peter Maydell <peter.maydell@linaro.org> > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > tests/vhost-user-bridge.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) I should have added 'Not Tested' ! Thanks, C. > diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c > index a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 > --- a/tests/vhost-user-bridge.c > +++ b/tests/vhost-user-bridge.c > @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) > static int > vubr_parse_host_port(const char **host, const char **port, const char *buf) > { > - char *p = strchr(buf, ':'); > - > - if (!p) { > + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); > + if (!tokens[0] || !tokens[1]) { > return -1; > } > - *p = '\0'; > - *host = strdup(buf); > - *port = strdup(p + 1); > + *host = g_steal_pointer(&tokens[0]); > + *port = g_steal_pointer(&tokens[1]); > return 0; > } > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-10 18:14 ` Cédric Le Goater @ 2025-12-11 7:55 ` Cédric Le Goater 0 siblings, 0 replies; 15+ messages in thread From: Cédric Le Goater @ 2025-12-11 7:55 UTC (permalink / raw) To: qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson On 12/10/25 19:14, Cédric Le Goater wrote: > On 12/10/25 19:13, Cédric Le Goater wrote: >> A recent change in glibc 2.42.9000 [1] changes the return type of >> strstr() and other string functions to be 'const char *' when the >> input is a 'const char *'. This breaks the build in : >> >> ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: >> ../tests/vhost-user-bridge.c:749:15: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] >> 749 | char *p = strchr(buf, ':'); >> | ^~~~~~ >> >> Fix this by using the glib g_strsplit() routine instead of strdup(). >> >> [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 >> >> Suggested-by: Peter Maydell <peter.maydell@linaro.org> >> Signed-off-by: Cédric Le Goater <clg@redhat.com> >> --- >> tests/vhost-user-bridge.c | 10 ++++------ >> 1 file changed, 4 insertions(+), 6 deletions(-) > > I should have added 'Not Tested' ! It seems to be going well: $ build/tests/vhost-user-bridge -l 127.0.0.1:1234 -r 127.0.0.1:4321 ud socket: /tmp/vubr.sock (server) local: 127.0.0.1:1234 remote: 127.0.0.1:4321 Waiting for connections on UNIX socket /tmp/vubr.sock ... Added sock 3 for watching. max_sock: 3 Added sock 4 for watching. max_sock: 4 Waiting for data from udp backend on 127.0.0.1:1234... C. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-10 18:13 ` [PATCH 2/2] tests/vhost-user-bridge.c: " Cédric Le Goater 2025-12-10 18:14 ` Cédric Le Goater @ 2025-12-12 23:33 ` Yodel Eldar 2025-12-13 0:17 ` Yodel Eldar 1 sibling, 1 reply; 15+ messages in thread From: Yodel Eldar @ 2025-12-12 23:33 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson Hi, Cédric! On 10/12/2025 12:13, Cédric Le Goater wrote: > A recent change in glibc 2.42.9000 [1] changes the return type of > strstr() and other string functions to be 'const char *' when the > input is a 'const char *'. This breaks the build in : > > ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: > ../tests/vhost-user-bridge.c:749:15: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] > 749 | char *p = strchr(buf, ':'); > | ^~~~~~ > > Fix this by using the glib g_strsplit() routine instead of strdup(). > > [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 > > Suggested-by: Peter Maydell <peter.maydell@linaro.org> > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > tests/vhost-user-bridge.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c > index a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 > --- a/tests/vhost-user-bridge.c > +++ b/tests/vhost-user-bridge.c > @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) > static int > vubr_parse_host_port(const char **host, const char **port, const char *buf) > { > - char *p = strchr(buf, ':'); > - > - if (!p) { > + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); > + if (!tokens[0] || !tokens[1]) { > return -1; > } > - *p = '\0'; > - *host = strdup(buf); > - *port = strdup(p + 1); > + *host = g_steal_pointer(&tokens[0]); > + *port = g_steal_pointer(&tokens[1]); > return 0; > } > Thanks for addressing this before the glibc change is widely propagated among distros. Acked-by: Yodel Eldar <yodel.eldar@yodel.dev> Tested-by: Yodel Eldar <yodel.eldar@yodel.dev> For testing, I built and installed glibc (76 commits ahead of cd748a63a) in an x86_64 Linux container and built vhost-user-bridge on top of that. Ran it with: ./build/tests/vhost-user-bridge -H qemu-system-x86_64 \ -enable-kvm -m 4G \ -object memory-backend-ram,id=mem0,size=4G,share=on \ -numa node,memdev=mem0 -mem-prealloc \ -chardev socket,id=char0,path=/tmp/vubr.sock \ -netdev type=vhost-user,id=net0,chardev=char0,vhostforce=on \ -device virtio-net-pci,netdev=net0 \ -drive file=linux.qcow2 and visually inspected the logged traffic. Thanks, Yodel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-12 23:33 ` Yodel Eldar @ 2025-12-13 0:17 ` Yodel Eldar 2025-12-13 6:59 ` Cédric Le Goater 0 siblings, 1 reply; 15+ messages in thread From: Yodel Eldar @ 2025-12-13 0:17 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson On 12/12/2025 17:33, Yodel Eldar wrote: > Hi, Cédric! > > On 10/12/2025 12:13, Cédric Le Goater wrote: >> A recent change in glibc 2.42.9000 [1] changes the return type of >> strstr() and other string functions to be 'const char *' when the >> input is a 'const char *'. This breaks the build in : >> >> ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: >> ../tests/vhost-user-bridge.c:749:15: error: initialization discards >> ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] >> 749 | char *p = strchr(buf, ':'); >> | ^~~~~~ >> >> Fix this by using the glib g_strsplit() routine instead of strdup(). >> >> [1] https://sourceware.org/git/? >> p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 >> >> Suggested-by: Peter Maydell <peter.maydell@linaro.org> >> Signed-off-by: Cédric Le Goater <clg@redhat.com> >> --- >> tests/vhost-user-bridge.c | 10 ++++------ >> 1 file changed, 4 insertions(+), 6 deletions(-) >> >> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c >> index >> a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 >> --- a/tests/vhost-user-bridge.c >> +++ b/tests/vhost-user-bridge.c >> @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) >> static int >> vubr_parse_host_port(const char **host, const char **port, const >> char *buf) >> { >> - char *p = strchr(buf, ':'); >> - >> - if (!p) { >> + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); >> + if (!tokens[0] || !tokens[1]) { >> return -1; >> } >> - *p = '\0'; >> - *host = strdup(buf); >> - *port = strdup(p + 1); >> + *host = g_steal_pointer(&tokens[0]); >> + *port = g_steal_pointer(&tokens[1]); >> return 0; >> } > > Thanks for addressing this before the glibc change is widely propagated > among distros. > > Acked-by: Yodel Eldar <yodel.eldar@yodel.dev> > Tested-by: Yodel Eldar <yodel.eldar@yodel.dev> > > For testing, I built and installed glibc (76 commits ahead of cd748a63a) > in an x86_64 Linux container and built vhost-user-bridge on top of that. > Ran it with: > > ./build/tests/vhost-user-bridge -H > > qemu-system-x86_64 \ > -enable-kvm -m 4G \ > -object memory-backend-ram,id=mem0,size=4G,share=on \ > -numa node,memdev=mem0 -mem-prealloc \ > -chardev socket,id=char0,path=/tmp/vubr.sock \ > -netdev type=vhost-user,id=net0,chardev=char0,vhostforce=on \ > -device virtio-net-pci,netdev=net0 \ > -drive file=linux.qcow2 > > and visually inspected the logged traffic. > > Thanks, > Yodel > P.S. To build vhost-user-bridge, I had to modify util/log.c as in the PULL submission "<20251209200537.84097-9-philmd@linaro.org>". For completion, the commands used: ../configure --enable-tools --enable-vhost-user --disable-system \ --disable-user ninja tests/vhost-user-bridge Yodel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-13 0:17 ` Yodel Eldar @ 2025-12-13 6:59 ` Cédric Le Goater 2025-12-13 20:15 ` Yodel Eldar 0 siblings, 1 reply; 15+ messages in thread From: Cédric Le Goater @ 2025-12-13 6:59 UTC (permalink / raw) To: Yodel Eldar, qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson, Michael Tokarev On 12/13/25 01:17, Yodel Eldar wrote: > > On 12/12/2025 17:33, Yodel Eldar wrote: >> Hi, Cédric! >> >> On 10/12/2025 12:13, Cédric Le Goater wrote: >>> A recent change in glibc 2.42.9000 [1] changes the return type of >>> strstr() and other string functions to be 'const char *' when the >>> input is a 'const char *'. This breaks the build in : >>> >>> ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: >>> ../tests/vhost-user-bridge.c:749:15: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] >>> 749 | char *p = strchr(buf, ':'); >>> | ^~~~~~ >>> >>> Fix this by using the glib g_strsplit() routine instead of strdup(). >>> >>> [1] https://sourceware.org/git/? p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 >>> >>> Suggested-by: Peter Maydell <peter.maydell@linaro.org> >>> Signed-off-by: Cédric Le Goater <clg@redhat.com> >>> --- >>> tests/vhost-user-bridge.c | 10 ++++------ >>> 1 file changed, 4 insertions(+), 6 deletions(-) >>> >>> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c >>> index a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 >>> --- a/tests/vhost-user-bridge.c >>> +++ b/tests/vhost-user-bridge.c >>> @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) >>> static int >>> vubr_parse_host_port(const char **host, const char **port, const char *buf) >>> { >>> - char *p = strchr(buf, ':'); >>> - >>> - if (!p) { >>> + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); >>> + if (!tokens[0] || !tokens[1]) { >>> return -1; >>> } >>> - *p = '\0'; >>> - *host = strdup(buf); >>> - *port = strdup(p + 1); >>> + *host = g_steal_pointer(&tokens[0]); >>> + *port = g_steal_pointer(&tokens[1]); >>> return 0; >>> } >> >> Thanks for addressing this before the glibc change is widely propagated >> among distros. >> >> Acked-by: Yodel Eldar <yodel.eldar@yodel.dev> >> Tested-by: Yodel Eldar <yodel.eldar@yodel.dev> >> >> For testing, I built and installed glibc (76 commits ahead of cd748a63a) >> in an x86_64 Linux container and built vhost-user-bridge on top of that. >> Ran it with: >> >> ./build/tests/vhost-user-bridge -H >> >> qemu-system-x86_64 \ >> -enable-kvm -m 4G \ >> -object memory-backend-ram,id=mem0,size=4G,share=on \ >> -numa node,memdev=mem0 -mem-prealloc \ >> -chardev socket,id=char0,path=/tmp/vubr.sock \ >> -netdev type=vhost-user,id=net0,chardev=char0,vhostforce=on \ >> -device virtio-net-pci,netdev=net0 \ >> -drive file=linux.qcow2 >> >> and visually inspected the logged traffic. >> >> Thanks, >> Yodel >> > > P.S. To build vhost-user-bridge, I had to modify util/log.c as in > the PULL submission "<20251209200537.84097-9-philmd@linaro.org>". > > For completion, the commands used: > > ../configure --enable-tools --enable-vhost-user --disable-system \ > --disable-user > > ninja tests/vhost-user-bridge > > Yodel > Thanks Yodel, My plan is to send a small PR as soon as QEMU 10.2 is out and ask Michael T. to include the changes in the stable branches. C. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-13 6:59 ` Cédric Le Goater @ 2025-12-13 20:15 ` Yodel Eldar 2025-12-14 8:56 ` Cédric Le Goater 0 siblings, 1 reply; 15+ messages in thread From: Yodel Eldar @ 2025-12-13 20:15 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson, Michael Tokarev On 13/12/2025 00:59, Cédric Le Goater wrote: > On 12/13/25 01:17, Yodel Eldar wrote: >> >> On 12/12/2025 17:33, Yodel Eldar wrote: >>> Hi, Cédric! >>> >>> On 10/12/2025 12:13, Cédric Le Goater wrote: >>>> A recent change in glibc 2.42.9000 [1] changes the return type of >>>> strstr() and other string functions to be 'const char *' when the >>>> input is a 'const char *'. This breaks the build in : >>>> >>>> ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: >>>> ../tests/vhost-user-bridge.c:749:15: error: initialization discards >>>> ‘const’ qualifier from pointer target type [-Werror=discarded- >>>> qualifiers] >>>> 749 | char *p = strchr(buf, ':'); >>>> | ^~~~~~ >>>> >>>> Fix this by using the glib g_strsplit() routine instead of strdup(). >>>> >>>> [1] https://sourceware.org/git/? >>>> p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 >>>> >>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org> >>>> Signed-off-by: Cédric Le Goater <clg@redhat.com> >>>> --- >>>> tests/vhost-user-bridge.c | 10 ++++------ >>>> 1 file changed, 4 insertions(+), 6 deletions(-) >>>> >>>> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c >>>> index >>>> a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 >>>> --- a/tests/vhost-user-bridge.c >>>> +++ b/tests/vhost-user-bridge.c >>>> @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) >>>> static int >>>> vubr_parse_host_port(const char **host, const char **port, const >>>> char *buf) >>>> { >>>> - char *p = strchr(buf, ':'); >>>> - >>>> - if (!p) { >>>> + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); >>>> + if (!tokens[0] || !tokens[1]) { >>>> return -1; >>>> } >>>> - *p = '\0'; >>>> - *host = strdup(buf); >>>> - *port = strdup(p + 1); >>>> + *host = g_steal_pointer(&tokens[0]); >>>> + *port = g_steal_pointer(&tokens[1]); >>>> return 0; >>>> } >>> >>> Thanks for addressing this before the glibc change is widely propagated >>> among distros. >>> >>> Acked-by: Yodel Eldar <yodel.eldar@yodel.dev> >>> Tested-by: Yodel Eldar <yodel.eldar@yodel.dev> >>> >>> For testing, I built and installed glibc (76 commits ahead of cd748a63a) >>> in an x86_64 Linux container and built vhost-user-bridge on top of that. >>> Ran it with: >>> >>> ./build/tests/vhost-user-bridge -H >>> >>> qemu-system-x86_64 \ >>> -enable-kvm -m 4G \ >>> -object memory-backend-ram,id=mem0,size=4G,share=on \ >>> -numa node,memdev=mem0 -mem-prealloc \ >>> -chardev socket,id=char0,path=/tmp/vubr.sock \ >>> -netdev type=vhost-user,id=net0,chardev=char0,vhostforce=on \ >>> -device virtio-net-pci,netdev=net0 \ >>> -drive file=linux.qcow2 >>> >>> and visually inspected the logged traffic. >>> >>> Thanks, >>> Yodel >>> >> >> P.S. To build vhost-user-bridge, I had to modify util/log.c as in >> the PULL submission "<20251209200537.84097-9-philmd@linaro.org>". >> >> For completion, the commands used: >> >> ../configure --enable-tools --enable-vhost-user --disable-system \ >> --disable-user >> >> ninja tests/vhost-user-bridge >> >> Yodel >> > > > Thanks Yodel, > > My plan is to send a small PR as soon as QEMU 10.2 is out and ask > Michael T. to include the changes in the stable branches. > > C. > > Glad to hear it! Sorry for staggering my testing methodology over multiple emails, but I should add for clarification and completeness: to exercise your change to vubr_parse_host_port(), I passed various input into the -l and -r options of vhost-user-bridge; and, with: tcpdump -i lo -n -X udp port 5678 while running: ./build/tests/vhost-user-bridge -H -l 127.0.0.1:4567 -r 127.0.0.1:5678 for example, I was able to monitor the traffic (ARP requests) from port 4567 to 5678. Yodel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-13 20:15 ` Yodel Eldar @ 2025-12-14 8:56 ` Cédric Le Goater 2025-12-14 16:18 ` Yodel Eldar 0 siblings, 1 reply; 15+ messages in thread From: Cédric Le Goater @ 2025-12-14 8:56 UTC (permalink / raw) To: Yodel Eldar, qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson, Michael Tokarev Hello Yodel, On 12/13/25 21:15, Yodel Eldar wrote: > > On 13/12/2025 00:59, Cédric Le Goater wrote: >> On 12/13/25 01:17, Yodel Eldar wrote: >>> >>> On 12/12/2025 17:33, Yodel Eldar wrote: >>>> Hi, Cédric! >>>> >>>> On 10/12/2025 12:13, Cédric Le Goater wrote: >>>>> A recent change in glibc 2.42.9000 [1] changes the return type of >>>>> strstr() and other string functions to be 'const char *' when the >>>>> input is a 'const char *'. This breaks the build in : >>>>> >>>>> ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: >>>>> ../tests/vhost-user-bridge.c:749:15: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded- qualifiers] >>>>> 749 | char *p = strchr(buf, ':'); >>>>> | ^~~~~~ >>>>> >>>>> Fix this by using the glib g_strsplit() routine instead of strdup(). >>>>> >>>>> [1] https://sourceware.org/git/? p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 >>>>> >>>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org> >>>>> Signed-off-by: Cédric Le Goater <clg@redhat.com> >>>>> --- >>>>> tests/vhost-user-bridge.c | 10 ++++------ >>>>> 1 file changed, 4 insertions(+), 6 deletions(-) >>>>> >>>>> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c >>>>> index a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 >>>>> --- a/tests/vhost-user-bridge.c >>>>> +++ b/tests/vhost-user-bridge.c >>>>> @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) >>>>> static int >>>>> vubr_parse_host_port(const char **host, const char **port, const char *buf) >>>>> { >>>>> - char *p = strchr(buf, ':'); >>>>> - >>>>> - if (!p) { >>>>> + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); >>>>> + if (!tokens[0] || !tokens[1]) { >>>>> return -1; >>>>> } >>>>> - *p = '\0'; >>>>> - *host = strdup(buf); >>>>> - *port = strdup(p + 1); >>>>> + *host = g_steal_pointer(&tokens[0]); >>>>> + *port = g_steal_pointer(&tokens[1]); >>>>> return 0; >>>>> } >>>> >>>> Thanks for addressing this before the glibc change is widely propagated >>>> among distros. >>>> >>>> Acked-by: Yodel Eldar <yodel.eldar@yodel.dev> >>>> Tested-by: Yodel Eldar <yodel.eldar@yodel.dev> >>>> >>>> For testing, I built and installed glibc (76 commits ahead of cd748a63a) >>>> in an x86_64 Linux container and built vhost-user-bridge on top of that. >>>> Ran it with: >>>> >>>> ./build/tests/vhost-user-bridge -H >>>> >>>> qemu-system-x86_64 \ >>>> -enable-kvm -m 4G \ >>>> -object memory-backend-ram,id=mem0,size=4G,share=on \ >>>> -numa node,memdev=mem0 -mem-prealloc \ >>>> -chardev socket,id=char0,path=/tmp/vubr.sock \ >>>> -netdev type=vhost-user,id=net0,chardev=char0,vhostforce=on \ >>>> -device virtio-net-pci,netdev=net0 \ >>>> -drive file=linux.qcow2 >>>> >>>> and visually inspected the logged traffic. >>>> >>>> Thanks, >>>> Yodel >>>> >>> >>> P.S. To build vhost-user-bridge, I had to modify util/log.c as in >>> the PULL submission "<20251209200537.84097-9-philmd@linaro.org>". >>> >>> For completion, the commands used: >>> >>> ../configure --enable-tools --enable-vhost-user --disable-system \ >>> --disable-user >>> >>> ninja tests/vhost-user-bridge >>> >>> Yodel >>> >> >> >> Thanks Yodel, >> >> My plan is to send a small PR as soon as QEMU 10.2 is out and ask >> Michael T. to include the changes in the stable branches. >> >> C. >> >> > > Glad to hear it! > > Sorry for staggering my testing methodology over multiple emails, but I > should add for clarification and completeness: to exercise your change > to vubr_parse_host_port(), I passed various input into the -l and -r > options of vhost-user-bridge; and, with: > > tcpdump -i lo -n -X udp port 5678 > > while running: > > ./build/tests/vhost-user-bridge -H -l 127.0.0.1:4567 -r 127.0.0.1:5678 > > for example, > > I was able to monitor the traffic (ARP requests) from port 4567 to 5678. > Would you mind providing a test case under tests/ or tests/functional ? Thanks, C. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-14 8:56 ` Cédric Le Goater @ 2025-12-14 16:18 ` Yodel Eldar 2025-12-14 17:47 ` Cédric Le Goater 0 siblings, 1 reply; 15+ messages in thread From: Yodel Eldar @ 2025-12-14 16:18 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson, Michael Tokarev On 14/12/2025 02:56, Cédric Le Goater wrote: > Hello Yodel, > > On 12/13/25 21:15, Yodel Eldar wrote: >> >> On 13/12/2025 00:59, Cédric Le Goater wrote: >>> On 12/13/25 01:17, Yodel Eldar wrote: >>>> >>>> On 12/12/2025 17:33, Yodel Eldar wrote: >>>>> Hi, Cédric! >>>>> >>>>> On 10/12/2025 12:13, Cédric Le Goater wrote: >>>>>> A recent change in glibc 2.42.9000 [1] changes the return type of >>>>>> strstr() and other string functions to be 'const char *' when the >>>>>> input is a 'const char *'. This breaks the build in : >>>>>> >>>>>> ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: >>>>>> ../tests/vhost-user-bridge.c:749:15: error: initialization >>>>>> discards ‘const’ qualifier from pointer target type [- >>>>>> Werror=discarded- qualifiers] >>>>>> 749 | char *p = strchr(buf, ':'); >>>>>> | ^~~~~~ >>>>>> >>>>>> Fix this by using the glib g_strsplit() routine instead of strdup(). >>>>>> >>>>>> [1] https://sourceware.org/git/? >>>>>> p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 >>>>>> >>>>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org> >>>>>> Signed-off-by: Cédric Le Goater <clg@redhat.com> >>>>>> --- >>>>>> tests/vhost-user-bridge.c | 10 ++++------ >>>>>> 1 file changed, 4 insertions(+), 6 deletions(-) >>>>>> >>>>>> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c >>>>>> index >>>>>> a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 >>>>>> --- a/tests/vhost-user-bridge.c >>>>>> +++ b/tests/vhost-user-bridge.c >>>>>> @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) >>>>>> static int >>>>>> vubr_parse_host_port(const char **host, const char **port, const >>>>>> char *buf) >>>>>> { >>>>>> - char *p = strchr(buf, ':'); >>>>>> - >>>>>> - if (!p) { >>>>>> + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); >>>>>> + if (!tokens[0] || !tokens[1]) { >>>>>> return -1; >>>>>> } >>>>>> - *p = '\0'; >>>>>> - *host = strdup(buf); >>>>>> - *port = strdup(p + 1); >>>>>> + *host = g_steal_pointer(&tokens[0]); >>>>>> + *port = g_steal_pointer(&tokens[1]); >>>>>> return 0; >>>>>> } >>>>> >>>>> Thanks for addressing this before the glibc change is widely >>>>> propagated >>>>> among distros. >>>>> >>>>> Acked-by: Yodel Eldar <yodel.eldar@yodel.dev> >>>>> Tested-by: Yodel Eldar <yodel.eldar@yodel.dev> >>>>> >>>>> For testing, I built and installed glibc (76 commits ahead of >>>>> cd748a63a) >>>>> in an x86_64 Linux container and built vhost-user-bridge on top of >>>>> that. >>>>> Ran it with: >>>>> >>>>> ./build/tests/vhost-user-bridge -H >>>>> >>>>> qemu-system-x86_64 \ >>>>> -enable-kvm -m 4G \ >>>>> -object memory-backend-ram,id=mem0,size=4G,share=on \ >>>>> -numa node,memdev=mem0 -mem-prealloc \ >>>>> -chardev socket,id=char0,path=/tmp/vubr.sock \ >>>>> -netdev type=vhost-user,id=net0,chardev=char0,vhostforce=on \ >>>>> -device virtio-net-pci,netdev=net0 \ >>>>> -drive file=linux.qcow2 >>>>> >>>>> and visually inspected the logged traffic. >>>>> >>>>> Thanks, >>>>> Yodel >>>>> >>>> >>>> P.S. To build vhost-user-bridge, I had to modify util/log.c as in >>>> the PULL submission "<20251209200537.84097-9-philmd@linaro.org>". >>>> >>>> For completion, the commands used: >>>> >>>> ../configure --enable-tools --enable-vhost-user --disable-system \ >>>> --disable-user >>>> >>>> ninja tests/vhost-user-bridge >>>> >>>> Yodel >>>> >>> >>> >>> Thanks Yodel, >>> >>> My plan is to send a small PR as soon as QEMU 10.2 is out and ask >>> Michael T. to include the changes in the stable branches. >>> >>> C. >>> >>> >> >> Glad to hear it! >> >> Sorry for staggering my testing methodology over multiple emails, but I >> should add for clarification and completeness: to exercise your change >> to vubr_parse_host_port(), I passed various input into the -l and -r >> options of vhost-user-bridge; and, with: >> >> tcpdump -i lo -n -X udp port 5678 >> >> while running: >> >> ./build/tests/vhost-user-bridge -H -l 127.0.0.1:4567 -r 127.0.0.1:5678 >> >> for example, >> >> I was able to monitor the traffic (ARP requests) from port 4567 to 5678. >> > > Would you mind providing a test case under tests/ or tests/functional ? > > Thanks, > > C. > > Certainly, that's a great idea! Although, I'll need to get better acquainted with QEMU's testing framework... Would you be willing to answer the occasional question regarding scope, approach, conventions, etc. over IRC? There's a Co-authored-by tag with your name on it if you so choose :-) Yodel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-14 16:18 ` Yodel Eldar @ 2025-12-14 17:47 ` Cédric Le Goater 2025-12-14 19:22 ` Yodel Eldar 0 siblings, 1 reply; 15+ messages in thread From: Cédric Le Goater @ 2025-12-14 17:47 UTC (permalink / raw) To: Yodel Eldar, qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson, Michael Tokarev, Thomas Huth + Thomas, On 12/14/25 17:18, Yodel Eldar wrote: > > > On 14/12/2025 02:56, Cédric Le Goater wrote: >> Hello Yodel, >> >> On 12/13/25 21:15, Yodel Eldar wrote: >>> >>> On 13/12/2025 00:59, Cédric Le Goater wrote: >>>> On 12/13/25 01:17, Yodel Eldar wrote: >>>>> >>>>> On 12/12/2025 17:33, Yodel Eldar wrote: >>>>>> Hi, Cédric! >>>>>> >>>>>> On 10/12/2025 12:13, Cédric Le Goater wrote: >>>>>>> A recent change in glibc 2.42.9000 [1] changes the return type of >>>>>>> strstr() and other string functions to be 'const char *' when the >>>>>>> input is a 'const char *'. This breaks the build in : >>>>>>> >>>>>>> ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: >>>>>>> ../tests/vhost-user-bridge.c:749:15: error: initialization discards ‘const’ qualifier from pointer target type [- Werror=discarded- qualifiers] >>>>>>> 749 | char *p = strchr(buf, ':'); >>>>>>> | ^~~~~~ >>>>>>> >>>>>>> Fix this by using the glib g_strsplit() routine instead of strdup(). >>>>>>> >>>>>>> [1] https://sourceware.org/git/? p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 >>>>>>> >>>>>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org> >>>>>>> Signed-off-by: Cédric Le Goater <clg@redhat.com> >>>>>>> --- >>>>>>> tests/vhost-user-bridge.c | 10 ++++------ >>>>>>> 1 file changed, 4 insertions(+), 6 deletions(-) >>>>>>> >>>>>>> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c >>>>>>> index a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 >>>>>>> --- a/tests/vhost-user-bridge.c >>>>>>> +++ b/tests/vhost-user-bridge.c >>>>>>> @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) >>>>>>> static int >>>>>>> vubr_parse_host_port(const char **host, const char **port, const char *buf) >>>>>>> { >>>>>>> - char *p = strchr(buf, ':'); >>>>>>> - >>>>>>> - if (!p) { >>>>>>> + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); >>>>>>> + if (!tokens[0] || !tokens[1]) { >>>>>>> return -1; >>>>>>> } >>>>>>> - *p = '\0'; >>>>>>> - *host = strdup(buf); >>>>>>> - *port = strdup(p + 1); >>>>>>> + *host = g_steal_pointer(&tokens[0]); >>>>>>> + *port = g_steal_pointer(&tokens[1]); >>>>>>> return 0; >>>>>>> } >>>>>> >>>>>> Thanks for addressing this before the glibc change is widely propagated >>>>>> among distros. >>>>>> >>>>>> Acked-by: Yodel Eldar <yodel.eldar@yodel.dev> >>>>>> Tested-by: Yodel Eldar <yodel.eldar@yodel.dev> >>>>>> >>>>>> For testing, I built and installed glibc (76 commits ahead of cd748a63a) >>>>>> in an x86_64 Linux container and built vhost-user-bridge on top of that. >>>>>> Ran it with: >>>>>> >>>>>> ./build/tests/vhost-user-bridge -H >>>>>> >>>>>> qemu-system-x86_64 \ >>>>>> -enable-kvm -m 4G \ >>>>>> -object memory-backend-ram,id=mem0,size=4G,share=on \ >>>>>> -numa node,memdev=mem0 -mem-prealloc \ >>>>>> -chardev socket,id=char0,path=/tmp/vubr.sock \ >>>>>> -netdev type=vhost-user,id=net0,chardev=char0,vhostforce=on \ >>>>>> -device virtio-net-pci,netdev=net0 \ >>>>>> -drive file=linux.qcow2 >>>>>> >>>>>> and visually inspected the logged traffic. >>>>>> >>>>>> Thanks, >>>>>> Yodel >>>>>> >>>>> >>>>> P.S. To build vhost-user-bridge, I had to modify util/log.c as in >>>>> the PULL submission "<20251209200537.84097-9-philmd@linaro.org>". >>>>> >>>>> For completion, the commands used: >>>>> >>>>> ../configure --enable-tools --enable-vhost-user --disable-system \ >>>>> --disable-user >>>>> >>>>> ninja tests/vhost-user-bridge >>>>> >>>>> Yodel >>>>> >>>> >>>> >>>> Thanks Yodel, >>>> >>>> My plan is to send a small PR as soon as QEMU 10.2 is out and ask >>>> Michael T. to include the changes in the stable branches. >>>> >>>> C. >>>> >>>> >>> >>> Glad to hear it! >>> >>> Sorry for staggering my testing methodology over multiple emails, but I >>> should add for clarification and completeness: to exercise your change >>> to vubr_parse_host_port(), I passed various input into the -l and -r >>> options of vhost-user-bridge; and, with: >>> >>> tcpdump -i lo -n -X udp port 5678 >>> >>> while running: >>> >>> ./build/tests/vhost-user-bridge -H -l 127.0.0.1:4567 -r 127.0.0.1:5678 >>> >>> for example, >>> >>> I was able to monitor the traffic (ARP requests) from port 4567 to 5678. >>> >> >> Would you mind providing a test case under tests/ or tests/functional ? >> >> Thanks, >> >> C. >> >> > > Certainly, that's a great idea! Although, I'll need to get better > acquainted with QEMU's testing framework... Would you be willing to > answer the occasional question regarding scope, approach, conventions, > etc. over IRC? Sure. The #qemu channel is hosted on OFTC. I think this test would qualify as a functional test. To run : $ make check-functional You could get some inspiration out of test_virtio_gpu.py I suppose. Check source [2]. See [3] to send patches. Thanks, C. [1] https://www.qemu.org/docs/master/devel/testing/main.html#functional-tests-using-python [2] https://gitlab.com/qemu-project/qemu/-/blob/master/tests/functional/x86_64/test_virtio_gpu.py?ref_type=heads [3] https://www.qemu.org/docs/master/devel/submitting-a-patch.html > There's a Co-authored-by tag with your name on it if > you so choose :-) > > Yodel > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] tests/vhost-user-bridge.c: Fix const qualifier build errors with recent glibc 2025-12-14 17:47 ` Cédric Le Goater @ 2025-12-14 19:22 ` Yodel Eldar 0 siblings, 0 replies; 15+ messages in thread From: Yodel Eldar @ 2025-12-14 19:22 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel Cc: Philippe Mathieu-Daudé, Peter Maydell, Paolo Bonzini, Richard Henderson, Michael Tokarev, Thomas Huth On 14/12/2025 11:47, Cédric Le Goater wrote: > + Thomas, > > On 12/14/25 17:18, Yodel Eldar wrote: >> >> >> On 14/12/2025 02:56, Cédric Le Goater wrote: >>> Hello Yodel, >>> >>> On 12/13/25 21:15, Yodel Eldar wrote: >>>> >>>> On 13/12/2025 00:59, Cédric Le Goater wrote: >>>>> On 12/13/25 01:17, Yodel Eldar wrote: >>>>>> >>>>>> On 12/12/2025 17:33, Yodel Eldar wrote: >>>>>>> Hi, Cédric! >>>>>>> >>>>>>> On 10/12/2025 12:13, Cédric Le Goater wrote: >>>>>>>> A recent change in glibc 2.42.9000 [1] changes the return type of >>>>>>>> strstr() and other string functions to be 'const char *' when the >>>>>>>> input is a 'const char *'. This breaks the build in : >>>>>>>> >>>>>>>> ../tests/vhost-user-bridge.c: In function ‘vubr_parse_host_port’: >>>>>>>> ../tests/vhost-user-bridge.c:749:15: error: initialization >>>>>>>> discards ‘const’ qualifier from pointer target type [- >>>>>>>> Werror=discarded- qualifiers] >>>>>>>> 749 | char *p = strchr(buf, ':'); >>>>>>>> | ^~~~~~ >>>>>>>> >>>>>>>> Fix this by using the glib g_strsplit() routine instead of >>>>>>>> strdup(). >>>>>>>> >>>>>>>> [1] https://sourceware.org/git/? >>>>>>>> p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690 >>>>>>>> >>>>>>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org> >>>>>>>> Signed-off-by: Cédric Le Goater <clg@redhat.com> >>>>>>>> --- >>>>>>>> tests/vhost-user-bridge.c | 10 ++++------ >>>>>>>> 1 file changed, 4 insertions(+), 6 deletions(-) >>>>>>>> >>>>>>>> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c >>>>>>>> index >>>>>>>> a5c711b1de8e9c164dd1614f4329b8e3c05d0402..ce4c3426d3938a0b54195f3e95bb1f1c3c4ae823 100644 >>>>>>>> --- a/tests/vhost-user-bridge.c >>>>>>>> +++ b/tests/vhost-user-bridge.c >>>>>>>> @@ -746,14 +746,12 @@ vubr_run(VubrDev *dev) >>>>>>>> static int >>>>>>>> vubr_parse_host_port(const char **host, const char **port, >>>>>>>> const char *buf) >>>>>>>> { >>>>>>>> - char *p = strchr(buf, ':'); >>>>>>>> - >>>>>>>> - if (!p) { >>>>>>>> + g_auto(GStrv) tokens = g_strsplit(buf, ":", 2); >>>>>>>> + if (!tokens[0] || !tokens[1]) { >>>>>>>> return -1; >>>>>>>> } >>>>>>>> - *p = '\0'; >>>>>>>> - *host = strdup(buf); >>>>>>>> - *port = strdup(p + 1); >>>>>>>> + *host = g_steal_pointer(&tokens[0]); >>>>>>>> + *port = g_steal_pointer(&tokens[1]); >>>>>>>> return 0; >>>>>>>> } >>>>>>> >>>>>>> Thanks for addressing this before the glibc change is widely >>>>>>> propagated >>>>>>> among distros. >>>>>>> >>>>>>> Acked-by: Yodel Eldar <yodel.eldar@yodel.dev> >>>>>>> Tested-by: Yodel Eldar <yodel.eldar@yodel.dev> >>>>>>> >>>>>>> For testing, I built and installed glibc (76 commits ahead of >>>>>>> cd748a63a) >>>>>>> in an x86_64 Linux container and built vhost-user-bridge on top >>>>>>> of that. >>>>>>> Ran it with: >>>>>>> >>>>>>> ./build/tests/vhost-user-bridge -H >>>>>>> >>>>>>> qemu-system-x86_64 \ >>>>>>> -enable-kvm -m 4G \ >>>>>>> -object memory-backend-ram,id=mem0,size=4G,share=on \ >>>>>>> -numa node,memdev=mem0 -mem-prealloc \ >>>>>>> -chardev socket,id=char0,path=/tmp/vubr.sock \ >>>>>>> -netdev type=vhost-user,id=net0,chardev=char0,vhostforce=on \ >>>>>>> -device virtio-net-pci,netdev=net0 \ >>>>>>> -drive file=linux.qcow2 >>>>>>> >>>>>>> and visually inspected the logged traffic. >>>>>>> >>>>>>> Thanks, >>>>>>> Yodel >>>>>>> >>>>>> >>>>>> P.S. To build vhost-user-bridge, I had to modify util/log.c as in >>>>>> the PULL submission "<20251209200537.84097-9-philmd@linaro.org>". >>>>>> >>>>>> For completion, the commands used: >>>>>> >>>>>> ../configure --enable-tools --enable-vhost-user --disable-system \ >>>>>> --disable-user >>>>>> >>>>>> ninja tests/vhost-user-bridge >>>>>> >>>>>> Yodel >>>>>> >>>>> >>>>> >>>>> Thanks Yodel, >>>>> >>>>> My plan is to send a small PR as soon as QEMU 10.2 is out and ask >>>>> Michael T. to include the changes in the stable branches. >>>>> >>>>> C. >>>>> >>>>> >>>> >>>> Glad to hear it! >>>> >>>> Sorry for staggering my testing methodology over multiple emails, but I >>>> should add for clarification and completeness: to exercise your change >>>> to vubr_parse_host_port(), I passed various input into the -l and -r >>>> options of vhost-user-bridge; and, with: >>>> >>>> tcpdump -i lo -n -X udp port 5678 >>>> >>>> while running: >>>> >>>> ./build/tests/vhost-user-bridge -H -l 127.0.0.1:4567 -r >>>> 127.0.0.1:5678 >>>> >>>> for example, >>>> >>>> I was able to monitor the traffic (ARP requests) from port 4567 to >>>> 5678. >>>> >>> >>> Would you mind providing a test case under tests/ or tests/functional ? >>> >>> Thanks, >>> >>> C. >>> >>> >> >> Certainly, that's a great idea! Although, I'll need to get better >> acquainted with QEMU's testing framework... Would you be willing to >> answer the occasional question regarding scope, approach, conventions, >> etc. over IRC? > > Sure. The #qemu channel is hosted on OFTC. > > I think this test would qualify as a functional test. To run : > > $ make check-functional > > You could get some inspiration out of test_virtio_gpu.py I suppose. > Check source [2]. > > See [3] to send patches. > > Thanks, > > C. > > [1] https://www.qemu.org/docs/master/devel/testing/main.html#functional- > tests-using-python > [2] https://gitlab.com/qemu-project/qemu/-/blob/master/tests/functional/ > x86_64/test_virtio_gpu.py?ref_type=heads > [3] https://www.qemu.org/docs/master/devel/submitting-a-patch.html > > Thanks for the links! Currently, the plan's to replace tcpdump with the -object filter-dump feature and look for the user-supplied hosts and ports in the output, though I suspect there's a better way to do that. This would essentially only exercise vubr_parse_host_port() as in my manual testing of your patch. Please let me know if you had another direction in mind. My nick's "yodel" on OFTC, and I'll reach out if I hit a snag. Thanks, Yodel >> There's a Co-authored-by tag with your name on it if >> you so choose :-) >> >> Yodel >> > > ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2025-12-14 19:23 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-12-10 18:13 [PATCH 0/2] Fix const qualifier build errors with recent glibc Cédric Le Goater 2025-12-10 18:13 ` [PATCH 1/2] i386: " Cédric Le Goater 2025-12-10 18:39 ` Peter Maydell 2025-12-11 15:16 ` Philippe Mathieu-Daudé 2025-12-10 18:13 ` [PATCH 2/2] tests/vhost-user-bridge.c: " Cédric Le Goater 2025-12-10 18:14 ` Cédric Le Goater 2025-12-11 7:55 ` Cédric Le Goater 2025-12-12 23:33 ` Yodel Eldar 2025-12-13 0:17 ` Yodel Eldar 2025-12-13 6:59 ` Cédric Le Goater 2025-12-13 20:15 ` Yodel Eldar 2025-12-14 8:56 ` Cédric Le Goater 2025-12-14 16:18 ` Yodel Eldar 2025-12-14 17:47 ` Cédric Le Goater 2025-12-14 19:22 ` Yodel Eldar
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).