Skip to content

Clang/ATfE 21.1.1 does not compile #2701

@rgrr

Description

@rgrr

There were a lot of minor bugs, fixes are in #2700

Note: this all happens with an RP2350 target.

Motivation

I installed newest ATfE toolchain (clang 21.1.1) from https://github.com/arm/arm-toolchain/releases. In contrast to clang 19.1.5 (https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases) no combination of PICO_CLIB does compile. Either cmake already failed or compilation did.

Compiling with develop-8fcd

Results of compiling my project (https://github.com/rgrr/yapicoprobe):

#     clang                19.1.5   21.1.1
#         develop-8fcd
#              llvm_libc    FAIL     FAIL      (19.1.5: wrong header, 21.1.1: unknown _BEGIN_STD_C)
#              picolibc      OK      FAIL      (21.1.1: cmake fails, same as -DPICO_CLIB=)
#              newlib        OK      FAIL      (19.1.5: program claims picolibc, 21.1.1: cmake fails)

So no luck with clang 21.1.1!

With clang 19.1.5 it also seemed that the build system does actually not obey the PICO_CLIB parameter because my program claimed that it was built with picolibc although newlib had been specified.
With clang 19.1.5 output of PICO_CLIB="" was the same as for "picolibc", so default runtime seems to be picolibc. Compilation with "newlib" did produce a slightly smaller image (169100/169236).

Result of my experiments

  • build system does not obey PICO_CLIB specification
  • clang 21.1.1 does not build at all

Compilation after fixing

gcc

#     gcc                 14.2.1
#         develop-8fcd
#             llvm_libc    FAIL      (mixture of newlib/llvm_libc)
#             picolibc     FAIL      (FDEV_SETUP_STREAM is unknown, mixture if newlib/picolibc)
#             newlibc       OK       (same as -DPICO_CLIB=)
#         new
#             llvm_libc    FAIL      (mixture of newlib/llvm_libc)
#             picolibc     FAIL      (FDEV_SETUP_STREAM is unknown, mixture if newlib/picolibc)
#             newlib        OK       (same as -DPICO_CLIB=)

gcc build is untouched.

clang

#     clang                19.1.5   21.1.1
#         develop-8fcd
#              llvm_libc    FAIL     FAIL      (19.1.5: wrong header, 21.1.1: unknown _BEGIN_STD_C)
#              picolibc      OK      FAIL      (21.1.1: cmake fails, same as -DPICO_CLIB=)
#              newlib        OK      FAIL      (19.1.5: program claims picolibc, 21.1.1: cmake fails)
#         new
#              llvm_libc -  FAIL      OK       (19.1.5: llvm_libc has some incompatibilities)
#              picolibc  -   OK       OK
#              newlib    -   OK       OK       (same as -DPICO_CLIB=)

clang 19.1.5 compiles and runs with newlib and picolibc (and selects them correctly), default is newlib. With llvm_libc it does not compile due to limitations of the runtime. E.g. atan2() is missing and also some headers.

clang 21.1.1 compiles with all runtimes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions