On 5/16/21 2:46 PM, Thomas Huth wrote: > On 15/05/2021 20.35, Philippe Mathieu-Daudé wrote: >> When selecting an ARM target on Debian unstable, we get: >> >> Compiling C++ object libcommon.fa.p/disas_libvixl_vixl_utils.cc.o >> FAILED: libcommon.fa.p/disas_libvixl_vixl_utils.cc.o >> c++ -Ilibcommon.fa.p -I. -I.. [...] -o >> libcommon.fa.p/disas_libvixl_vixl_utils.cc.o -c >> ../disas/libvixl/vixl/utils.cc >> In file included from /home/philmd/qemu/disas/libvixl/vixl/utils.h:30, >> from ../disas/libvixl/vixl/utils.cc:27: >> /usr/include/string.h:36:43: error: missing binary operator before >> token "(" >> 36 | #if defined __cplusplus && (__GNUC_PREREQ (4, 4) \ >> | ^ >> /usr/include/string.h:53:62: error: missing binary operator before >> token "(" >> 53 | #if defined __USE_MISC || defined __USE_XOPEN || >> __GLIBC_USE (ISOC2X) >> | ^ >> /usr/include/string.h:165:21: error: missing binary operator before >> token "(" >> 165 | || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC2X)) >> | ^ >> /usr/include/string.h:174:43: error: missing binary operator before >> token "(" >> 174 | #if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) || >> __GLIBC_USE (ISOC2X) >> | ^ >> /usr/include/string.h:492:19: error: missing binary operator before >> token "(" >> 492 | #if __GNUC_PREREQ (3,4) >> | ^ >> >> Similarly to commit 875df03b221 ('osdep: protect qemu/osdep.h with >> extern "C"'), guard the <string.h> system header with 'extern "C"'. >> >> Relevant information from the host: >> >> $ lsb_release -d >> Description: Debian GNU/Linux 11 (bullseye) >> $ gcc --version >> gcc (Debian 10.2.1-6) 10.2.1 20210110 >> $ dpkg -S /usr/include/string.h >> libc6-dev: /usr/include/string.h >> $ apt-cache show libc6-dev >> Package: libc6-dev >> Version: 2.31-11 >> >> Buglink: https://bugs.launchpad.net/qemu/+bug/1914870 >> Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> >> --- >> RFC because I've no idea about C++, but this fixes the build for me. >> >> Quick reproducer: >> >> $ ../configure --disable-tools --target-list=aarch64-linux-user >> >> Cc: Paolo Bonzini <pbonz...@redhat.com> >> Cc: Daniel P. Berrangé <berra...@redhat.com> >> Cc: Peter Maydell <peter.mayd...@linaro.org> >> Cc: Richard Henderson <richard.hender...@linaro.org> >> Cc: Eric Blake <ebl...@redhat.com> >> Cc: Thomas Huth <th...@redhat.com> >> --- >> disas/libvixl/vixl/utils.h | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/disas/libvixl/vixl/utils.h b/disas/libvixl/vixl/utils.h >> index 5ab134e240a..fc28d7456c1 100644 >> --- a/disas/libvixl/vixl/utils.h >> +++ b/disas/libvixl/vixl/utils.h >> @@ -27,8 +27,10 @@ >> #ifndef VIXL_UTILS_H >> #define VIXL_UTILS_H >> -#include <string.h> >> #include <cmath> >> +extern "C" { >> +#include <string.h> >> +} > > Could you please try to backport the upstream patch instead: > > https://git.linaro.org/arm/vixl.git/commit/?id=78973f258039f6e96
Yes it works, thanks!