lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240810-nolibc-lto-v1-0-a86e514c7fc1@weissschuh.net>
Date: Sat, 10 Aug 2024 12:54:43 +0200
From: Thomas Weißschuh <linux@...ssschuh.net>
To: Willy Tarreau <w@....eu>
Cc: Ammar Faizi <ammarfaizi2@...weeb.org>, linux-kernel@...r.kernel.org, 
 Thomas Weißschuh <linux@...ssschuh.net>
Subject: [PATCH 0/3] tools/nolibc: LTO compatibility

A few tiny bugfixes and refactoring to provide compatibility with GCCs
and clangs -flto.

$ CFLAGS_EXTRA=-flto ./run-tests.sh -m user   -l
i386:          195 test(s): 193 passed,   2 skipped,   0 failed => status: warning
x86_64:        195 test(s): 193 passed,   2 skipped,   0 failed => status: warning
arm64:         195 test(s): 193 passed,   2 skipped,   0 failed => status: warning
arm:           195 test(s): 193 passed,   2 skipped,   0 failed => status: warning
mips32le:      195 test(s): 192 passed,   3 skipped,   0 failed => status: warning
mips32be:      195 test(s): 192 passed,   3 skipped,   0 failed => status: warning
ppc:           195 test(s): 192 passed,   3 skipped,   0 failed => status: warning
ppc64:         195 test(s): 192 passed,   3 skipped,   0 failed => status: warning
ppc64le:       195 test(s): 192 passed,   3 skipped,   0 failed => status: warning
riscv:         195 test(s): 192 passed,   3 skipped,   0 failed => status: warning
s390:          195 test(s): 192 passed,   3 skipped,   0 failed => status: warning
loongarch:     195 test(s): 192 passed,   3 skipped,   0 failed => status: warning

$ CFLAGS_EXTRA=-flto ./run-tests.sh -m user     
i386:          195 test(s): 191 passed,   2 skipped,   2 failed => status: failure
x86_64:        195 test(s): 191 passed,   2 skipped,   2 failed => status: failure
arm64:         195 test(s): 191 passed,   2 skipped,   2 failed => status: failure
arm:           195 test(s): 191 passed,   2 skipped,   2 failed => status: failure
mips32le:      195 test(s): 190 passed,   3 skipped,   2 failed => status: failure
mips32be:      195 test(s): 190 passed,   3 skipped,   2 failed => status: failure
ppc:           195 test(s): 191 passed,   2 skipped,   2 failed => status: failure
ppc64:         195 test(s): 191 passed,   2 skipped,   2 failed => status: failure
ppc64le:       195 test(s): 191 passed,   2 skipped,   2 failed => status: failure
riscv:         195 test(s): 191 passed,   2 skipped,   2 failed => status: failure
s390:          195 test(s): 190 passed,   3 skipped,   2 failed => status: failure
loongarch:     195 test(s): 190 passed,   3 skipped,   2 failed => status: failure

Note that on GCC two tests always fail, as with -fLTO the constructor
order is inverted, for which nolibc-test contains two testcases.
See [0].

This series depends on the nolibc LLVM support.

[0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103080
[1] https://lore.kernel.org/lkml/20240807-nolibc-llvm-v2-0-c20f2f5fc7c2@weissschuh.net/

Signed-off-by: Thomas Weißschuh <linux@...ssschuh.net>
---
Thomas Weißschuh (3):
      tools/nolibc: crt: mark _start_c() as used
      tools/nolibc: stackprotector: mark implicitly used symbols as used
      tools/nolibc: x86_64: wrap asm functions in functions

 tools/include/nolibc/arch-x86_64.h    | 80 +++++++++++++++++++----------------
 tools/include/nolibc/crt.h            |  2 +-
 tools/include/nolibc/stackprotector.h |  4 +-
 3 files changed, 47 insertions(+), 39 deletions(-)
---
base-commit: 6164f3d0f577a2ab82b8235129fd20b2142e03b1
change-id: 20240728-nolibc-lto-331813b72a0b

Best regards,
-- 
Thomas Weißschuh <linux@...ssschuh.net>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ