]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tools/nolibc/string: export strlen()
authorRodrigo Campos <rodrigo@sdfg.com.ar>
Sun, 18 Feb 2024 19:51:03 +0000 (16:51 -0300)
committerThomas Weißschuh <linux@weissschuh.net>
Wed, 10 Apr 2024 21:19:01 +0000 (23:19 +0200)
As with commit 8d304a374023, "tools/nolibc/string: export memset() and
memmove()", gcc -Os without -ffreestanding may fail to compile with:

cc -fno-asynchronous-unwind-tables -fno-ident -s -Os -nostdlib -lgcc  -static -o test test.c
/usr/bin/ld: /tmp/cccIasKL.o: in function `main':
test.c:(.text.startup+0x1e): undefined reference to `strlen'
collect2: error: ld returned 1 exit status

As on the aforementioned commit, this patch adds a section to export
this function so compilation works on those cases too.

Signed-off-by: Rodrigo Campos <rodrigo@sdfg.com.ar>
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
tools/include/nolibc/string.h

index a01c69dd495f550c42a4186c5e6c717f8e893d78..ed15c22b1b2ae746fcd57b93201a4cd69a0b65e2 100644 (file)
@@ -123,7 +123,7 @@ char *strcpy(char *dst, const char *src)
  * thus itself, hence the asm() statement below that's meant to disable this
  * confusing practice.
  */
-static __attribute__((unused))
+__attribute__((weak,unused,section(".text.nolibc_strlen")))
 size_t strlen(const char *str)
 {
        size_t len;