[clang] [RISCV] Implement multi-lib reuse rule for RISC-V bare-metal toolchain (PR #73765)

Jay Foad via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 18 02:23:27 PST 2023


jayfoad wrote:

The new test is crashing in my Release+Asserts build:
```
FAIL: Clang :: Driver/riscv-toolchain-gcc-multilib-reuse.c (1081 of 1081)
******************** TEST 'Clang :: Driver/riscv-toolchain-gcc-multilib-reuse.c' FAILED ********************
Exit Code: 2

Command Output (stderr):
--
RUN: at line 1: /home/jayfoad2/llvm-release/bin/clang /home/jayfoad2/git/llvm-project/clang/test/Driver/riscv-toolchain-gcc-multilib-reuse.c    -target riscv64-unknown-elf    --gcc-toolchain=/home/jayfoad2/git/llvm-project/clang/test/Driver/Inputs/multilib_riscv_elf_sdk    --print-multi-directory    -march=rv32imc -mabi=ilp32    | /home/jayfoad2/llvm-release/bin/FileCheck -check-prefix=GCC-MULTI-LIB-REUSE-RV32IMC-ILP32 /home/jayfoad2/git/llvm-project/clang/test/Driver/riscv-toolchain-gcc-multilib-reuse.c
+ /home/jayfoad2/llvm-release/bin/FileCheck -check-prefix=GCC-MULTI-LIB-REUSE-RV32IMC-ILP32 /home/jayfoad2/git/llvm-project/clang/test/Driver/riscv-toolchain-gcc-multilib-reuse.c
+ /home/jayfoad2/llvm-release/bin/clang /home/jayfoad2/git/llvm-project/clang/test/Driver/riscv-toolchain-gcc-multilib-reuse.c -target riscv64-unknown-elf --gcc-toolchain=/home/jayfoad2/git/llvm-project/clang/test/Driver/Inputs/multilib_riscv_elf_sdk --print-multi-directory -march=rv32imc -mabi=ilp32
clang: /home/jayfoad2/git/llvm-project/clang/lib/Driver/ToolChains/CommonArgs.cpp:2189: void clang::driver::tools::addMultilibFlag(bool, const llvm::StringRef, Multilib::flags_list &): Assertion `Flag.front() == '-'' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /home/jayfoad2/llvm-release/bin/clang /home/jayfoad2/git/llvm-project/clang/test/Driver/riscv-toolchain-gcc-multilib-reuse.c -target riscv64-unknown-elf --gcc-toolchain=/home/jayfoad2/git/llvm-project/clang/test/Driver/Inputs/multilib_riscv_elf_sdk --print-multi-directory -march=rv32imc -mabi=ilp32
1.	Compilation construction
 #0 0x00000000070bfaf7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/jayfoad2/llvm-release/bin/clang+0x70bfaf7)
 #1 0x00000000070bd6ae llvm::sys::RunSignalHandlers() (/home/jayfoad2/llvm-release/bin/clang+0x70bd6ae)
 #2 0x00000000070c01ca SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fc909c42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007fc909c969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007fc909c969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007fc909c969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007fc909c42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007fc909c287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007fc909c2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007fc909c39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x0000000007b32257 clang::driver::tools::addMultilibFlag(bool, llvm::StringRef, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&) (/home/jayfoad2/llvm-release/bin/clang+0x7b32257)
#12 0x0000000007abb016 clang::driver::MultilibBuilder::flag(llvm::StringRef, bool) (/home/jayfoad2/llvm-release/bin/clang+0x7abb016)
#13 0x0000000007b9ddbf findRISCVMultilibs(clang::driver::Driver const&, llvm::Triple const&, llvm::StringRef, llvm::opt::ArgList const&, clang::driver::DetectedMultilibs&) Gnu.cpp:0:0
#14 0x0000000007b95459 clang::driver::toolchains::Generic_GCC::GCCInstallationDetector::ScanGCCForMultilibs(llvm::Triple const&, llvm::opt::ArgList const&, llvm::StringRef, bool) Gnu.cpp:0:0
#15 0x0000000007b9b164 clang::driver::toolchains::Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(llvm::Triple const&, llvm::opt::ArgList const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, llvm::StringRef, bool, bool, bool) Gnu.cpp:0:0
#16 0x0000000007b9324c clang::driver::toolchains::Generic_GCC::GCCInstallationDetector::init(llvm::Triple const&, llvm::opt::ArgList const&) Gnu.cpp:0:0
#17 0x0000000007bf34ba clang::driver::toolchains::RISCVToolChain::RISCVToolChain(clang::driver::Driver const&, llvm::Triple const&, llvm::opt::ArgList const&) RISCVToolchain.cpp:0:0
#18 0x0000000007a31458 clang::driver::Driver::getToolChain(llvm::opt::ArgList const&, llvm::Triple const&) const (/home/jayfoad2/llvm-release/bin/clang+0x7a31458)
#19 0x0000000007a38bbe clang::driver::Driver::BuildCompilation(llvm::ArrayRef<char const*>) (/home/jayfoad2/llvm-release/bin/clang+0x7a38bbe)
#20 0x0000000004a8a25a clang_main(int, char**, llvm::ToolContext const&) (/home/jayfoad2/llvm-release/bin/clang+0x4a8a25a)
#21 0x0000000004a9bb61 main (/home/jayfoad2/llvm-release/bin/clang+0x4a9bb61)
#22 0x00007fc909c29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#23 0x00007fc909c29e40 call_init ./csu/../csu/libc-start.c:128:20
#24 0x00007fc909c29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#25 0x0000000004a875a5 _start (/home/jayfoad2/llvm-release/bin/clang+0x4a875a5)
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/jayfoad2/llvm-release/bin/FileCheck -check-prefix=GCC-MULTI-LIB-REUSE-RV32IMC-ILP32 /home/jayfoad2/git/llvm-project/clang/test/Driver/riscv-toolchain-gcc-multilib-reuse.c

--

********************
********************
Failed Tests (1):
  Clang :: Driver/riscv-toolchain-gcc-multilib-reuse.c
```

https://github.com/llvm/llvm-project/pull/73765


More information about the cfe-commits mailing list