Hello.
I was trying to use the Android LLVM Toolchain to run some LLVM passes.
## How I built it
- Downloaded the latest NDK release (r26c) and checked `clang` version
```bash
$ ./android-ndk-r26c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --version
Android (11349228, +pgo, +bolt, +lto, -mlgo, based on r487747e) clang version 17.0.2 (
https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)
Target: x86_64-unknown-linux-gnu
Thread model: posix
```
**Note**: added the following options to `build.py` -> `--no-build windows --skip-tests --no-lto`
After the build, it looks ok.
```bash
$ ./out/stage2-install/bin/clang --version
Android (dev, -pgo, -bolt, -lto, -mlgo, based on r487747e) clang version 17.0.2 (
https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)
Target: x86_64-unknown-linux-gnu
Thread model: posix
```
## Steps taken
I was trying to run a custom pass, but I thought maybe my pass was the problem, so I used [LLVM Tutor Hello World Pass](
https://github.com/banach-space/llvm-tutor/blob/main/HelloWorld) as a test case.
Basically, this is the structure of the folder.
```
.
├── Hello
│ ├── CMakeLists.txt
│ └── HelloWorld.cpp
├── test.c
```
Then,
```bash
$ mkdir build
$ cd build
$ cmake -DLT_LLVM_INSTALL_DIR=/home/jose/llvm-toolchain/out/stage2-install ../Hello/
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Found zstd: /usr/lib/x86_64-linux-gnu/libzstd.so
-- Found LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so (found version "2.9.10")
-- Configuring done (0.6s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jose/ndk-passes/build
$ make
[ 50%] Building CXX object CMakeFiles/HelloWorld.dir/HelloWorld.cpp.o
[100%] Linking CXX shared library libHelloWorld.so
[100%] Built target HelloWorld
$ /home/jose/llvm-toolchain/out/stage2-install/bin/clang -S -emit-llvm -Xclang -disable-O0-optnone test.c -o test.ll
```
### Opt crash
```
$ /home/jose/llvm-toolchain/out/stage2-install/bin/opt -load-pass-plugin build/libHelloWorld.so -passes=hello-world test.ll -o mod.bc
PLEASE submit a bug report to
https://github.com/android-ndk/ndk/issues and include the crash backtrace.
Stack dump:
0.
Program arguments: /home/jose/llvm-toolchain/out/stage2-install/bin/opt -load-pass-plugin build/libHelloWorld.so -passes=hello-world test.ll -o mod.bc
#0 0x0000563efffe3978 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/jose/llvm-toolchain/out/stage2-install/bin/opt+0x3031978)
#1 0x0000563efffe19de llvm::sys::RunSignalHandlers() (/home/jose/llvm-toolchain/out/stage2-install/bin/opt+0x302f9de)
#2 0x0000563efffe40fd SignalHandler(int) Signals.cpp:0:0
#3 0x00007fba8e281420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007fba8dd9d6c0 std::enable_if<__and_<std::__not_<std::__is_tuple_like<std::_Any_data>>, std::is_move_constructible<std::_Any_data>, std::is_move_assignable<std::_Any_data>>::value, void>::type std::swap<std::_Any_data>(std::_Any_data&, std::_Any_data&) (build/libHelloWorld.so+0xd6c0)
#5 0x00007fba8dd9d671 std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>::swap(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>&) (build/libHelloWorld.so+0xd671)
#6 0x00007fba8dd9d61f std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>::function(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>&&) (build/libHelloWorld.so+0xd61f)
#7 0x00007fba8dd9d4fd void std::_Construct<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>>(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>&&) (build/libHelloWorld.so+0xd4fd)
#8 0x00007fba8dd9d418 std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>* std::__uninitialized_copy<false>::__uninit_copy<std::move_iterator<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>(std::move_iterator<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>, std::move_iterator<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*) (build/libHelloWorld.so+0xd418)
#9 0x00007fba8dd9d379 std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>* std::uninitialized_copy<std::move_iterator<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>(std::move_iterator<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>, std::move_iterator<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*) (build/libHelloWorld.so+0xd379)
#10 0x00007fba8dd9d32f std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>* std::uninitialized_move<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*) (build/libHelloWorld.so+0xd32f)
#11 0x00007fba8dd9d2a5 void llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::uninitialized_move<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*>(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*) (build/libHelloWorld.so+0xd2a5)
#12 0x00007fba8dd9d1ca llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::moveElementsForGrow(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*) (build/libHelloWorld.so+0xd1ca)
#13 0x00007fba8dd9d016 llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::grow(unsigned long) (build/libHelloWorld.so+0xd016)
#14 0x00007fba8dd9cf1d std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const* llvm::SmallVectorTemplateCommon<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>>(llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const&, unsigned long) (build/libHelloWorld.so+0xcf1d)
#15 0x00007fba8dd9cd85 llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::reserveForParamAndGetAddress(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const&, unsigned long) (build/libHelloWorld.so+0xcd85)
#16 0x00007fba8dd9cd26 llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::push_back(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const&) (build/libHelloWorld.so+0xcd26)
#17 0x00007fba8dd9ccd4 llvm::PassBuilder::registerPipelineParsingCallback(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const&) (build/libHelloWorld.so+0xccd4)
#18 0x00007fba8dd9c362 getHelloWorldPluginInfo()::$_0::operator()(llvm::PassBuilder&) const HelloWorld.cpp:0:0
#19 0x00007fba8dd9c329 getHelloWorldPluginInfo()::$_0::__invoke(llvm::PassBuilder&) HelloWorld.cpp:0:0
#20 0x0000563efea2bfc8 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (/home/jose/llvm-toolchain/out/stage2-install/bin/opt+0x1a79fc8)
#21 0x0000563efea39dc7 main (/home/jose/llvm-toolchain/out/stage2-install/bin/opt+0x1a87dc7)
#22 0x00007fba8ddca083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#23 0x0000563efea28169 _start (/home/jose/llvm-toolchain/out/stage2-install/bin/opt+0x1a76169)
Segmentation fault (core dumped)
```
### Clang crash
```
$ /home/jose/llvm-toolchain/out/stage2-install/bin/clang -fpass-plugin=/home/jose/ndk-passes/build/libHelloWorld.so -Xclang -disable-O0-optnone test.c -S -emit-llvm -o mod_clang.ll
PLEASE submit a bug report to
https://github.com/android-ndk/ndk/issues and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.
Program arguments: /home/jose/llvm-toolchain/out/stage2-install/bin/clang -fpass-plugin=/home/jose/ndk-passes/build/libHelloWorld.so -Xclang -disable-O0-optnone test.c -S -emit-llvm -o mod_clang.ll
1.
<eof> parser at end of file
#0 0x000055b2909bca98 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x3c5ea98)
#1 0x000055b2909baafe llvm::sys::RunSignalHandlers() (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x3c5cafe)
#2 0x000055b2909bbf81 llvm::sys::CleanupOnSignal(unsigned long) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x3c5df81)
#3 0x000055b29093cb09 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#4 0x00007f1f2f441420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#5 0x00007f1f2f0006f0 free (/lib/x86_64-linux-gnu/libc.so.6+0x9a6f0)
#6 0x00007f1f2ef2223a llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::takeAllocationForGrow(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>*, unsigned long) (/home/jose/ndk-passes/build/libHelloWorld.so+0xd23a)
#7 0x00007f1f2ef22027 llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::grow(unsigned long) (/home/jose/ndk-passes/build/libHelloWorld.so+0xd027)
#8 0x00007f1f2ef21f1d std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const* llvm::SmallVectorTemplateCommon<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>>(llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>*, std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const&, unsigned long) (/home/jose/ndk-passes/build/libHelloWorld.so+0xcf1d)
#9 0x00007f1f2ef21d85 llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::reserveForParamAndGetAddress(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const&, unsigned long) (/home/jose/ndk-passes/build/libHelloWorld.so+0xcd85)
#10 0x00007f1f2ef21d26 llvm::SmallVectorTemplateBase<std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)>, false>::push_back(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const&) (/home/jose/ndk-passes/build/libHelloWorld.so+0xcd26)
#11 0x00007f1f2ef21cd4 llvm::PassBuilder::registerPipelineParsingCallback(std::function<bool (llvm::StringRef, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>&, llvm::ArrayRef<llvm::PassBuilder::PipelineElement>)> const&) (/home/jose/ndk-passes/build/libHelloWorld.so+0xccd4)
#12 0x00007f1f2ef21362 getHelloWorldPluginInfo()::$_0::operator()(llvm::PassBuilder&) const HelloWorld.cpp:0:0
#13 0x00007f1f2ef21329 getHelloWorldPluginInfo()::$_0::__invoke(llvm::PassBuilder&) HelloWorld.cpp:0:0
#14 0x000055b291045431 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>&, std::__1::unique_ptr<llvm::ToolOutputFile, std::__1::default_delete<llvm::ToolOutputFile>>&) BackendUtil.cpp:0:0
#15 0x000055b291040807 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x42e2807)
#16 0x000055b29141c95c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
#17 0x000055b2923ac7cd clang::ParseAST(clang::Sema&, bool, bool) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x564e7cd)
#18 0x000055b2913827a6 clang::FrontendAction::Execute() (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x46247a6)
#19 0x000055b291303304 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x45a5304)
#20 0x000055b291415db3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x46b7db3)
#21 0x000055b28f56c58b cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x280e58b)
#22 0x000055b28f56914d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#23 0x000055b291174402 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(long) Job.cpp:0:0
#24 0x000055b29093c8ec llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x3bde8ec)
#25 0x000055b291173e1b clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x4415e1b)
#26 0x000055b291139d30 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x43dbd30)
#27 0x000055b291139f9e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x43dbf9e)
#28 0x000055b291156580 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x43f8580)
#29 0x000055b28f568304 clang_main(int, char**) (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x280a304)
#30 0x00007f1f2ef8a083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#31 0x000055b28f565429 _start (/home/jose/llvm-toolchain/out/stage2-install/bin/clang+0x2807429)
clang-17: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Android (dev, -pgo, -bolt, -lto, -mlgo, based on r487747e) clang version 17.0.2 (
https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/jose/llvm-toolchain/out/stage2-install/bin
clang-17: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-17: note: diagnostic msg: /tmp/test-afb5ec.c
clang-17: note: diagnostic msg: /tmp/test-afb5ec.sh
clang-17: note: diagnostic msg:
********************
```
Could someone please provide guidance on how to troubleshoot and resolve these issues?
Thank you in advance for your assistance.