valgrind-3.15.0-12.fc32 fails to build with GCC 10 in Fedora 32: gcc -Winline -Wall -Wshadow -Wno-long-long -g -o libvexmultiarch_test libvexmultiarch_test-libvex_test.o ../../VEX/libvexmultiarch-arm64-linux.a ../../VEX/libvex-arm64-linux.a [...] /usr/bin/ld: ../../VEX/libvex-arm64-linux.a(libvex_arm64_linux_a-guest_s390_helpers.o): in function `$d': /builddir/build/BUILD/valgrind-3.15.0/VEX/priv/guest_s390_defs.h:291: multiple definition of `s390x_vec_op_t'; ../../VEX/libvexmultiarch-arm64-linux.a(libvexmultiarch_arm64_linux_a-multiarch_main_main.o):/builddir/build/BUILD/valgrind-3.15.0/VEX/priv/guest_s390_defs.h:291: first defined here [...] collect2: error: ld returned 1 exit status [...] make[5]: *** [Makefile:1480: libvexmultiarch_test] Error 1
Thanks. That was a real bug. Fixed upstream: commit ee18ab11ddf41a7a484fea01e8738c32bae630d9 Author: Mark Wielaard <mark> Date: Thu Jan 23 21:30:59 2020 +0100 Fix GCC10 issue in guest_s390_defs.h typedef enum type s390x_vec_op_t. GCC10 defaults to -fno-common which produces this error: guest_s390_defs.h:291: multiple definition of `s390x_vec_op_t This is because GCC10 detects there are multiple definitions of the variable s390x_vec_op_t. We don't want to define a variable though. We had wanted to define a type (one that currently isn't used). Fix this by making it a typedef enum. https://bugzilla.redhat.com/show_bug.cgi?id=1794482 And backported to valgrind-3.15.0-13.