LLVM AArch64 Baremetal linker script

Hi All.
I am trying to build a full LLVM+CLANG toolchain for compiling AArch64 baremetal applications.
I have used some guidance from Here and built CLANG+NEWLIB+COMPILER_RT+LIBUNWIND+LIBCXXABI+LIBCXX.

When trying to compile a simple c++ program I am getting many errors for undefined symbols such as:
__bss_start
__end
__unw_getcontext
__libunwind_Registers_arm64_jumpto
__eh_frame_start
__eh_frame_end

From a little research I found that all those symbols are defined by the linker script. But I don’t see any linker scripts provided in LLVM source directory.

How can I handle this? Should I write my own linker script? If yes how do I know what is the correct way to handle those sections?

The linkerscripts tend to be specific to the C-library, and target used so I wouldn’t expect to see one in the LLVM directory. Usually an embedded toolchain will provide a sample linker script.

Some of these I do recognise, such as __bss_start, __end. You can usually find a linker script from a GNU bare-metal toolchain, and in some cases you can dump the internal linker script from GNU ld.bfd with the --verbose option.

I can see that __eh_frame_start and __eh_frame_end could be defined by a linker script. I’m not convinced about __unw_getcontext and __libunwind_Registers_arm64_jumpto those are functions that are defined by libunwind. Perhaps libunwind isn’t being linked in or it hasn’t built properly.