Skip to content

attempt to get this repo working again #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

walkingeyerobot
Copy link

This isn't ready for merging yet. I'm still having trouble getting everything working. I'm hoping you can give me a nudge in the right direction here.

The repo at https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm was deprecated a few months ago in favor of https://github.com/arm/arm-toolchain/tree/arm-software/arm-software/embedded. The latter also defines read_repo_version and VERSIONS_JSON which was causing some conflicts, so for now to get things moving I just renamed the ones in this repo.

My best guess is the undefined symbols in crt0.o are supposed to be defined in common/gba_crt0.s or in some other assembly file.

Here's the build error I'm getting:

[2/5] Performing configure step for 'gba_sources'
FAILED: gba_sources/src/gba_sources-stamp/gba_sources-configure /home/mitch/repos/gba-llvm-devkit/build/gba_sources/src/gba_sources-stamp/gba_sources-configure
cd /home/mitch/repos/gba-llvm-devkit/build/gba_sources/src/gba_sources-build && /usr/local/bin/cmake -DLLVM_BINARY_DIR=/home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm -DCMAKE_AR=/home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/llvm-ar -DCMAKE_ASM_COMPILER_TARGET=armv4t-none-eabi "-DCMAKE_ASM_FLAGS=-march=armv4t -fno-exceptions -fno-rtti --sysroot /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=/home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/clang++ -DCMAKE_CXX_COMPILER_TARGET=armv4t-none-eabi "-DCMAKE_CXX_FLAGS=-march=armv4t -fno-exceptions -fno-rtti --sysroot /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t" -DCMAKE_C_COMPILER=/home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/clang -DCMAKE_C_COMPILER_TARGET=armv4t-none-eabi "-DCMAKE_C_FLAGS=-march=armv4t -fno-exceptions -fno-rtti --sysroot /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t" -DCMAKE_INSTALL_PREFIX=/home/mitch/repos/gba-llvm-devkit/build/gba_sources -DCMAKE_NM=/home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/llvm-nm -DCMAKE_RANLIB=/home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/llvm-ranlib -DCMAKE_SYSTEM_NAME=Generic -GNinja -S /home/mitch/repos/gba-llvm-devkit/common -B /home/mitch/repos/gba-llvm-devkit/build/gba_sources/src/gba_sources-build && /usr/local/bin/cmake -E touch /home/mitch/repos/gba-llvm-devkit/build/gba_sources/src/gba_sources-stamp/gba_sources-configure
-- The C compiler identification is Clang 21.0.0
-- The CXX compiler identification is Clang 21.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/clang
-- Check for working C compiler: /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/clang - broken
CMake Error at /usr/local/share/cmake-4.1/Modules/CMakeTestCCompiler.cmake:67 (message):
  The C compiler

    "/home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/clang"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: '/home/mitch/repos/gba-llvm-devkit/build/gba_sources/src/gba_sources-build/CMakeFiles/CMakeScratch/TryCompile-GseoW9'

    Run Build Command(s): /home/mitch/bin/ninja -v cmTC_4c080
    [1/2] /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/clang --target=armv4t-none-eabi   -march=armv4t -fno-exceptions -fno-rtti --sysroot /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t -MD -MT CMakeFiles/cmTC_4c080.dir/testCCompiler.c.obj -MF CMakeFiles/cmTC_4c080.dir/testCCompiler.c.obj.d -o CMakeFiles/cmTC_4c080.dir/testCCompiler.c.obj -c /home/mitch/repos/gba-llvm-devkit/build/gba_sources/src/gba_sources-build/CMakeFiles/CMakeScratch/TryCompile-GseoW9/testCCompiler.c
    [2/2] : && /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/clang --target=armv4t-none-eabi -march=armv4t -fno-exceptions -fno-rtti --sysroot /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t  CMakeFiles/cmTC_4c080.dir/testCCompiler.c.obj -o cmTC_4c080   && :
    FAILED: cmTC_4c080
    : && /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/bin/clang --target=armv4t-none-eabi -march=armv4t -fno-exceptions -fno-rtti --sysroot /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t  CMakeFiles/cmTC_4c080.dir/testCCompiler.c.obj -o cmTC_4c080   && :
    ld.lld: error: undefined symbol: __data_start
    >>> referenced by crt0.c
    >>>               /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t/lib/crt0.o:(_cstart)

    ld.lld: error: undefined symbol: __data_source
    >>> referenced by crt0.c
    >>>               /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t/lib/crt0.o:(_cstart)

    ld.lld: error: undefined symbol: __data_size
    >>> referenced by crt0.c
    >>>               /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t/lib/crt0.o:(_cstart)

    ld.lld: error: undefined symbol: __bss_size
    >>> referenced by crt0.c
    >>>               /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t/lib/crt0.o:(_cstart)

    ld.lld: error: undefined symbol: __tls_base
    >>> referenced by crt0.c
    >>>               /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t/lib/crt0.o:(_cstart)

    ld.lld: error: undefined symbol: __stack
    >>> referenced by crt0.c
    >>>               /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t/lib/crt0.o:(_start)
    >>> referenced by crt0.c
    >>>               /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t/lib/crt0.o:(_set_stacks)

    ld.lld: error: undefined symbol: __arm32_tls_tcb_offset
    >>> referenced by set_tls.c
    >>>               libc_picolib_machine_arm_set_tls.c.o:(_set_tls) in archive /home/mitch/repos/gba-llvm-devkit/build/build/_deps/bmt-src/arm-software/embedded/llvm/lib/clang-runtimes/arm-none-eabi/armv4t/lib/libc.a
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.

@stuij
Copy link
Owner

stuij commented Jul 8, 2025

Hi! Thanks for looking into this :)

That CMake check uses the crt0.o file from picolibc, however that file is meant to be used with one of the picolibc linker scripts which will actually define those symbols. So we should either wrangle CMake to use the picolibc crt0.o file with the picolibc linker script, or our compiled gba_crt0.o file with our gba linker script. The two pairs are mutually exclusive.

@walkingeyerobot
Copy link
Author

Thanks very much for the response! That should be enough for me to go on. I'll hopefully have some time this weekend to take a crack at it.

@stuij
Copy link
Owner

stuij commented Jul 11, 2025

btw what I think is probably going on is that clang automatically picks up the crt0 file, but we don't supply the linker file on the cmdline.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants