Message ID | 20230804-kselftest-rseq-build-v1-1-015830b66aa9@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | selftests/rseq: Fix build with undefined __weak | expand |
On 8/4/23 21:22, Mark Brown wrote: > Commit 3bcbc20942db ("selftests/rseq: Play nice with binaries statically > linked against glibc 2.35+") which is now in Linus' tree introduced uses > of __weak but did nothing to ensure that a definition is provided for it > resulting in build failures for the rseq tests: > > rseq.c:41:1: error: unknown type name '__weak' > __weak ptrdiff_t __rseq_offset; > ^ > rseq.c:41:17: error: expected ';' after top level declarator > __weak ptrdiff_t __rseq_offset; > ^ > ; > rseq.c:42:1: error: unknown type name '__weak' > __weak unsigned int __rseq_size; > ^ > rseq.c:43:1: error: unknown type name '__weak' > __weak unsigned int __rseq_flags; > > Fix this by using the definition from tools/include compiler.h. > Queued, thanks. Sorry for the breakage. Paolo > Fixes: 3bcbc20942db ("selftests/rseq: Play nice with binaries statically linked against glibc 2.35+") > Signed-off-by: Mark Brown <broonie@kernel.org> > --- > It'd be good if the KVM testing could include builds of the rseq > selftests, the KVM tests pull in code from rseq but not the build system > which has resulted in multiple failures like this. > --- > tools/testing/selftests/rseq/Makefile | 4 +++- > tools/testing/selftests/rseq/rseq.c | 2 ++ > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/rseq/Makefile b/tools/testing/selftests/rseq/Makefile > index b357ba24af06..7a957c7d459a 100644 > --- a/tools/testing/selftests/rseq/Makefile > +++ b/tools/testing/selftests/rseq/Makefile > @@ -4,8 +4,10 @@ ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) > CLANG_FLAGS += -no-integrated-as > endif > > +top_srcdir = ../../../.. > + > CFLAGS += -O2 -Wall -g -I./ $(KHDR_INCLUDES) -L$(OUTPUT) -Wl,-rpath=./ \ > - $(CLANG_FLAGS) > + $(CLANG_FLAGS) -I$(top_srcdir)/tools/include > LDLIBS += -lpthread -ldl > > # Own dependencies because we only want to build against 1st prerequisite, but > diff --git a/tools/testing/selftests/rseq/rseq.c b/tools/testing/selftests/rseq/rseq.c > index a723da253244..96e812bdf8a4 100644 > --- a/tools/testing/selftests/rseq/rseq.c > +++ b/tools/testing/selftests/rseq/rseq.c > @@ -31,6 +31,8 @@ > #include <sys/auxv.h> > #include <linux/auxvec.h> > > +#include <linux/compiler.h> > + > #include "../kselftest.h" > #include "rseq.h" > > > --- > base-commit: 5d0c230f1de8c7515b6567d9afba1f196fb4e2f4 > change-id: 20230804-kselftest-rseq-build-9d537942b1de > > Best regards,
diff --git a/tools/testing/selftests/rseq/Makefile b/tools/testing/selftests/rseq/Makefile index b357ba24af06..7a957c7d459a 100644 --- a/tools/testing/selftests/rseq/Makefile +++ b/tools/testing/selftests/rseq/Makefile @@ -4,8 +4,10 @@ ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) CLANG_FLAGS += -no-integrated-as endif +top_srcdir = ../../../.. + CFLAGS += -O2 -Wall -g -I./ $(KHDR_INCLUDES) -L$(OUTPUT) -Wl,-rpath=./ \ - $(CLANG_FLAGS) + $(CLANG_FLAGS) -I$(top_srcdir)/tools/include LDLIBS += -lpthread -ldl # Own dependencies because we only want to build against 1st prerequisite, but diff --git a/tools/testing/selftests/rseq/rseq.c b/tools/testing/selftests/rseq/rseq.c index a723da253244..96e812bdf8a4 100644 --- a/tools/testing/selftests/rseq/rseq.c +++ b/tools/testing/selftests/rseq/rseq.c @@ -31,6 +31,8 @@ #include <sys/auxv.h> #include <linux/auxvec.h> +#include <linux/compiler.h> + #include "../kselftest.h" #include "rseq.h"
Commit 3bcbc20942db ("selftests/rseq: Play nice with binaries statically linked against glibc 2.35+") which is now in Linus' tree introduced uses of __weak but did nothing to ensure that a definition is provided for it resulting in build failures for the rseq tests: rseq.c:41:1: error: unknown type name '__weak' __weak ptrdiff_t __rseq_offset; ^ rseq.c:41:17: error: expected ';' after top level declarator __weak ptrdiff_t __rseq_offset; ^ ; rseq.c:42:1: error: unknown type name '__weak' __weak unsigned int __rseq_size; ^ rseq.c:43:1: error: unknown type name '__weak' __weak unsigned int __rseq_flags; Fix this by using the definition from tools/include compiler.h. Fixes: 3bcbc20942db ("selftests/rseq: Play nice with binaries statically linked against glibc 2.35+") Signed-off-by: Mark Brown <broonie@kernel.org> --- It'd be good if the KVM testing could include builds of the rseq selftests, the KVM tests pull in code from rseq but not the build system which has resulted in multiple failures like this. --- tools/testing/selftests/rseq/Makefile | 4 +++- tools/testing/selftests/rseq/rseq.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) --- base-commit: 5d0c230f1de8c7515b6567d9afba1f196fb4e2f4 change-id: 20230804-kselftest-rseq-build-9d537942b1de Best regards,