Re: [PATCH] rtla: Also link in ctype.c
From: Tomas Glozar <tglozar@redhat.com>
Date: 2026-07-07 10:22:52
Also in:
lkml
ne 5. 7. 2026 v 12:55 odesílatel Bastian Blank [off-list ref] napsal:
rtla started to only link parts of the tools library. It now misses the ctype information used by all the related string operations. Just add another single file to make it build again. Signed-off-by: Bastian Blank <redacted> --- tools/tracing/rtla/Makefile | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
Thank you. It appears that GCC LTO drops the symbol use of "_ctype", so I didn't see it earlier. With removed -flto=auto from Makefile.rtla, I can reproduce it: LINK /linux-7.2-rc2/tools/tracing/rtla/rtla /usr/bin/x86_64-linux-gnu-ld.bfd: /linux-7.2-rc2/tools/tracing/rtla/lib/string.o: warning: relocation against `_ctype' in read-only section `.text' /usr/bin/x86_64-linux-gnu-ld.bfd: /linux-7.2-rc2/tools/tracing/rtla/lib/string.o: in function `skip_spaces': /linux-7.2-rc2/tools/lib/string.c:126:(.text+0x14c): undefined reference to `_ctype' /usr/bin/x86_64-linux-gnu-ld.bfd: /linux-7.2-rc2/tools/tracing/rtla/lib/string.o: in function `strim': /linux-7.2-rc2/tools/lib/string.c:149:(.text+0x187): undefined reference to `_ctype' /usr/bin/x86_64-linux-gnu-ld.bfd: warning: creating DT_TEXTREL in a PIE collect2: error: ld returned 1 exit status make: *** [Makefile:121: /linux-7.2-rc2/tools/tracing/rtla/rtla] Error 1
quoted hunk ↗ jump to hunk
diff --git a/tools/tracing/rtla/Makefile b/tools/tracing/rtla/Makefile index 60a102538988..387bc6cc18f0 100644 --- a/tools/tracing/rtla/Makefile +++ b/tools/tracing/rtla/Makefile@@ -45,6 +45,9 @@ else LIB_OUTPUT = $(CURDIR)/lib endif +LIB_CTYPE = $(LIB_OUTPUT)/ctype.o +LIB_CTYPE_SRC = $(srctree)/tools/lib/ctype.c + LIB_STRING = $(LIB_OUTPUT)/string.o LIB_STRING_SRC = $(srctree)/tools/lib/string.c@@ -117,12 +120,12 @@ tests/bpf/bpf_action_map.o: tests/bpf/bpf_action_map.c $(Q)echo "BPF skeleton support is disabled, skipping tests/bpf/bpf_action_map.o" endif -$(RTLA): $(RTLA_IN) $(LIBSUBCMD) $(LIB_STRING) $(LIB_STR_ERROR_R) - $(QUIET_LINK)$(CC) $(LDFLAGS) -o $(RTLA) $(RTLA_IN) $(LIBSUBCMD) $(LIB_STRING) $(LIB_STR_ERROR_R) $(EXTLIBS) +$(RTLA): $(RTLA_IN) $(LIBSUBCMD) $(LIB_CTYPE) $(LIB_STRING) $(LIB_STR_ERROR_R) + $(QUIET_LINK)$(CC) $(LDFLAGS) -o $(RTLA) $(RTLA_IN) $(LIBSUBCMD) $(LIB_CTYPE) $(LIB_STRING) $(LIB_STR_ERROR_R) $(EXTLIBS) -static: $(RTLA_IN) $(LIBSUBCMD) $(LIB_STRING) $(LIB_STR_ERROR_R) +static: $(RTLA_IN) $(LIBSUBCMD) $(LIB_CTYPE) $(LIB_STRING) $(LIB_STR_ERROR_R) $(eval LDFLAGS += -static) - $(QUIET_LINK)$(CC) -static $(LDFLAGS) -o $(RTLA)-static $(RTLA_IN) $(LIBSUBCMD) $(LIB_STRING) $(LIB_STR_ERROR_R) $(EXTLIBS) + $(QUIET_LINK)$(CC) -static $(LDFLAGS) -o $(RTLA)-static $(RTLA_IN) $(LIBSUBCMD) $(LIB_CTYPE) $(LIB_STRING) $(LIB_STR_ERROR_R) $(EXTLIBS) rtla.%: fixdep FORCE make -f $(srctree)/tools/build/Makefile.build dir=. $@@@ -150,6 +153,9 @@ $(LIB_STR_ERROR_R): $(LIB_STR_ERROR_R_SRC) | $(LIB_OUTPUT) $(LIB_STRING): $(LIB_STRING_SRC) | $(LIB_OUTPUT) $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< +$(LIB_CTYPE): $(LIB_CTYPE_SRC) | $(LIB_OUTPUT) + $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< + libsubcmd-clean: $(call QUIET_CLEAN, libsubcmd) $(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT) --2.53.0
The list of libraries is getting a bit long. Maybe it's time to
collapse it into one variable in a future release.
Anyway, I'll take this and attach:
Fixes: 48209d763c22 ("rtla: Add libsubcmd dependency")
Tomas