ne 5. 7. 2026 v 12:55 odesÃlatel Bastian Blank <[email protected]> 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 <[email protected]>
> ---
> 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
> 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