mbox series

[v2,00/15] tools/nolibc: improve LLVM/clang support

Message ID 20240807-nolibc-llvm-v2-0-c20f2f5fc7c2@weissschuh.net (mailing list archive)
Headers show
Series tools/nolibc: improve LLVM/clang support | expand

Message

Thomas Weißschuh Aug. 7, 2024, 9:51 p.m. UTC
The current support for LLVM and clang in nolibc and its testsuite is
very limited.

* Various architectures plain do not compile
* The user *has* to specify "-Os" otherwise the program crashes
* Cross-compilation of the tests does not work
* Using clang is not wired up in run-tests.sh

This series extends this support.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
Changes in v2:
- Add support for all architectures
  - powerpc: "selftests/nolibc: don't use libgcc when building with clang"
  - mips: "tools/nolibc: mips: load current function to $t9"
  - s390: "selftests/nolibc: use correct clang target for s390/powerz"
- Expand commit messages
- Use __nolibc_ prefix for custom macros
- Link to v1: https://lore.kernel.org/r/20240728-nolibc-llvm-v1-0-bc384269bc35@weissschuh.net

---
Thomas Weißschuh (15):
      tools/nolibc: arm: use clang-compatible asm syntax
      tools/nolibc: mips: load current function to $t9
      tools/nolibc: powerpc: limit stack-protector workaround to GCC
      tools/nolibc: compiler: introduce __nolibc_has_attribute()
      tools/nolibc: move entrypoint specifics to compiler.h
      tools/nolibc: compiler: use attribute((naked)) if available
      selftests/nolibc: report failure if no testcase passed
      selftests/nolibc: avoid passing NULL to printf("%s")
      selftests/nolibc: determine $(srctree) first
      selftests/nolibc: add support for LLVM= parameter
      selftests/nolibc: add cc-option compatible with clang cross builds
      selftests/nolibc: run-tests.sh: avoid overwriting CFLAGS_EXTRA
      selftests/nolibc: don't use libgcc when building with clang
      selftests/nolibc: use correct clang target for s390/powerz
      selftests/nolibc: run-tests.sh: allow building through LLVM

 tools/include/nolibc/arch-aarch64.h          |  4 +--
 tools/include/nolibc/arch-arm.h              |  8 +++---
 tools/include/nolibc/arch-i386.h             |  4 +--
 tools/include/nolibc/arch-loongarch.h        |  4 +--
 tools/include/nolibc/arch-mips.h             |  8 ++++--
 tools/include/nolibc/arch-powerpc.h          |  6 ++--
 tools/include/nolibc/arch-riscv.h            |  4 +--
 tools/include/nolibc/arch-s390.h             |  4 +--
 tools/include/nolibc/arch-x86_64.h           |  4 +--
 tools/include/nolibc/compiler.h              | 24 +++++++++++-----
 tools/testing/selftests/nolibc/Makefile      | 41 +++++++++++++++++++---------
 tools/testing/selftests/nolibc/nolibc-test.c |  4 +--
 tools/testing/selftests/nolibc/run-tests.sh  | 16 ++++++++---
 13 files changed, 83 insertions(+), 48 deletions(-)
---
base-commit: ae1f550efc11eaf1496c431d9c6e784cb49124c5
change-id: 20240727-nolibc-llvm-3fad68590d4c

Best regards,

Comments

Shuah Khan Aug. 7, 2024, 10:09 p.m. UTC | #1
On 8/7/24 15:51, Thomas Weißschuh wrote:
> The current support for LLVM and clang in nolibc and its testsuite is
> very limited.
> 
> * Various architectures plain do not compile
> * The user *has* to specify "-Os" otherwise the program crashes
> * Cross-compilation of the tests does not work
> * Using clang is not wired up in run-tests.sh
> 
> This series extends this support.
> 
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
> Changes in v2:
> - Add support for all architectures
>    - powerpc: "selftests/nolibc: don't use libgcc when building with clang"
>    - mips: "tools/nolibc: mips: load current function to $t9"
>    - s390: "selftests/nolibc: use correct clang target for s390/powerz"
> - Expand commit messages
> - Use __nolibc_ prefix for custom macros
> - Link to v1: https://lore.kernel.org/r/20240728-nolibc-llvm-v1-0-bc384269bc35@weissschuh.net
> 
> ---
> Thomas Weißschuh (15):
>        tools/nolibc: arm: use clang-compatible asm syntax
>        tools/nolibc: mips: load current function to $t9
>        tools/nolibc: powerpc: limit stack-protector workaround to GCC
>        tools/nolibc: compiler: introduce __nolibc_has_attribute()
>        tools/nolibc: move entrypoint specifics to compiler.h
>        tools/nolibc: compiler: use attribute((naked)) if available
>        selftests/nolibc: report failure if no testcase passed
>        selftests/nolibc: avoid passing NULL to printf("%s")
>        selftests/nolibc: determine $(srctree) first
>        selftests/nolibc: add support for LLVM= parameter
>        selftests/nolibc: add cc-option compatible with clang cross builds
>        selftests/nolibc: run-tests.sh: avoid overwriting CFLAGS_EXTRA
>        selftests/nolibc: don't use libgcc when building with clang
>        selftests/nolibc: use correct clang target for s390/powerz
>        selftests/nolibc: run-tests.sh: allow building through LLVM
> 
>   tools/include/nolibc/arch-aarch64.h          |  4 +--
>   tools/include/nolibc/arch-arm.h              |  8 +++---
>   tools/include/nolibc/arch-i386.h             |  4 +--
>   tools/include/nolibc/arch-loongarch.h        |  4 +--
>   tools/include/nolibc/arch-mips.h             |  8 ++++--
>   tools/include/nolibc/arch-powerpc.h          |  6 ++--
>   tools/include/nolibc/arch-riscv.h            |  4 +--
>   tools/include/nolibc/arch-s390.h             |  4 +--
>   tools/include/nolibc/arch-x86_64.h           |  4 +--
>   tools/include/nolibc/compiler.h              | 24 +++++++++++-----
>   tools/testing/selftests/nolibc/Makefile      | 41 +++++++++++++++++++---------
>   tools/testing/selftests/nolibc/nolibc-test.c |  4 +--
>   tools/testing/selftests/nolibc/run-tests.sh  | 16 ++++++++---
>   13 files changed, 83 insertions(+), 48 deletions(-)
> ---
> base-commit: ae1f550efc11eaf1496c431d9c6e784cb49124c5
> change-id: 20240727-nolibc-llvm-3fad68590d4c
> 
> Best regards,

Looks good to me. For selftests patches:

Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>

thanks,
-- Shuah
Willy Tarreau Aug. 10, 2024, 2:57 p.m. UTC | #2
On Wed, Aug 07, 2024 at 04:09:41PM -0600, Shuah Khan wrote:
> On 8/7/24 15:51, Thomas Weißschuh wrote:
> > The current support for LLVM and clang in nolibc and its testsuite is
> > very limited.
> > 
> > * Various architectures plain do not compile
> > * The user *has* to specify "-Os" otherwise the program crashes
> > * Cross-compilation of the tests does not work
> > * Using clang is not wired up in run-tests.sh
> > 
> > This series extends this support.
> > 
> > Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> > ---
> > Changes in v2:
> > - Add support for all architectures
> >    - powerpc: "selftests/nolibc: don't use libgcc when building with clang"
> >    - mips: "tools/nolibc: mips: load current function to $t9"
> >    - s390: "selftests/nolibc: use correct clang target for s390/powerz"
> > - Expand commit messages
> > - Use __nolibc_ prefix for custom macros
> > - Link to v1: https://lore.kernel.org/r/20240728-nolibc-llvm-v1-0-bc384269bc35@weissschuh.net
> > 
> > ---
> > Thomas Weißschuh (15):
> >        tools/nolibc: arm: use clang-compatible asm syntax
> >        tools/nolibc: mips: load current function to $t9
> >        tools/nolibc: powerpc: limit stack-protector workaround to GCC
> >        tools/nolibc: compiler: introduce __nolibc_has_attribute()
> >        tools/nolibc: move entrypoint specifics to compiler.h
> >        tools/nolibc: compiler: use attribute((naked)) if available
> >        selftests/nolibc: report failure if no testcase passed
> >        selftests/nolibc: avoid passing NULL to printf("%s")
> >        selftests/nolibc: determine $(srctree) first
> >        selftests/nolibc: add support for LLVM= parameter
> >        selftests/nolibc: add cc-option compatible with clang cross builds
> >        selftests/nolibc: run-tests.sh: avoid overwriting CFLAGS_EXTRA
> >        selftests/nolibc: don't use libgcc when building with clang
> >        selftests/nolibc: use correct clang target for s390/powerz
> >        selftests/nolibc: run-tests.sh: allow building through LLVM
> > 
> >   tools/include/nolibc/arch-aarch64.h          |  4 +--
> >   tools/include/nolibc/arch-arm.h              |  8 +++---
> >   tools/include/nolibc/arch-i386.h             |  4 +--
> >   tools/include/nolibc/arch-loongarch.h        |  4 +--
> >   tools/include/nolibc/arch-mips.h             |  8 ++++--
> >   tools/include/nolibc/arch-powerpc.h          |  6 ++--
> >   tools/include/nolibc/arch-riscv.h            |  4 +--
> >   tools/include/nolibc/arch-s390.h             |  4 +--
> >   tools/include/nolibc/arch-x86_64.h           |  4 +--
> >   tools/include/nolibc/compiler.h              | 24 +++++++++++-----
> >   tools/testing/selftests/nolibc/Makefile      | 41 +++++++++++++++++++---------
> >   tools/testing/selftests/nolibc/nolibc-test.c |  4 +--
> >   tools/testing/selftests/nolibc/run-tests.sh  | 16 ++++++++---
> >   13 files changed, 83 insertions(+), 48 deletions(-)
> > ---
> > base-commit: ae1f550efc11eaf1496c431d9c6e784cb49124c5
> > change-id: 20240727-nolibc-llvm-3fad68590d4c
> > 
> > Best regards,
> 
> Looks good to me. For selftests patches:
> 
> Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>

And all the series looks good to me as well (modulo that tiny "powerz"
vs "systemz" mentioned in the 14th patch's commit message). The commit
messages are now way more detailed and more pleasant to go through,
thanks for that!

Acked-by: Willy Tarreau <w@1wt.eu>

Willy