Thread (3 messages) 3 messages, 2 authors, 8d ago

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help