While working on using clang to build the Rust compiler, I stumbled upon a curious error during one of the compiler sanity checks. I distilled it down to a minimal case that works fine with gcc but falls over with clang. The issue surrounds the inclusion of a missing library called libclang_rt.builtins-${ARCH}.a. I don't know if that library should be installed and is missing or if the library was erroneously included by the clang frontend, but I think that a simple invocation of ${TRIPLE}-clang should work as it does for ${TRIPLE}-gcc.
$ cat /tmp/test.c
int main() {
return 0;
}
$ aarch64-cros-linux-gnu-clang -v -O2 /tmp/test.c
Chromium OS 5.0_pre305632_p20170806-r2 clang version 5.0.0 (/var/cache/chromeos-cache/distfiles/host/egit-src/clang.git 30060bff5b4cb49e17c27672d1aa60e6bc7a95e8) (/var/cache/chromeos-cache/distfiles/host/egit-src/llvm.git b903fddc562ccc622cabc4f08f5df2af90ceb251) (based on LLVM 5.0.0svn)
Target: aarch64-cros-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-cros-linux-gnu/4.9.x
Found candidate GCC installation: /usr/bin/../lib64/gcc/aarch64-cros-linux-gnu/4.9.x
Selected GCC installation: /usr/bin/../lib64/gcc/aarch64-cros-linux-gnu/4.9.x
Candidate multilib: .;@m64
Selected multilib: .;@m64
"/usr/bin/clang-5.0" -cc1 -triple aarch64-cros-linux-gnu -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu generic -target-feature +neon -target-abi aapcs -v -dwarf-column-info -debugger-tuning=gdb -resource-dir /usr/lib64/clang/5.0.0 -D _FORTIFY_SOURCE=2 -isysroot /usr/aarch64-cros-linux-gnu -internal-isystem /usr/aarch64-cros-linux-gnu/usr/local/include -internal-isystem /usr/lib64/clang/5.0.0/include -internal-externc-isystem /usr/aarch64-cros-linux-gnu/include -internal-externc-isystem /usr/aarch64-cros-linux-gnu/usr/include -O2 -fdebug-compilation-dir /var/tmp/portage/dev-lang/rust-1.19.0/work/rustc-1.19.0-src/src -ferror-limit 19 -fmessage-length 155 -stack-protector 2 -fallow-half-arguments-and-returns -fno-signed-char -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o /tmp/test-623a68.o -x c /tmp/test.c -dwarf-debug-flags /usr/bin/clang-5.0 --sysroot=/usr/aarch64-cros-linux-gnu -Qunused-arguments -grecord-gcc-switches -fPIE -D _FORTIFY_SOURCE=2 -fstack-protector-strong -pie -fno-omit-frame-pointer -v -O2 /tmp/test.c -B /usr/libexec/gcc/aarch64-cros-linux-gnu --target=aarch64-cros-linux-gnu
clang -cc1 version 5.0.0 based upon LLVM 5.0.0svn default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/aarch64-cros-linux-gnu/usr/local/include"
ignoring nonexistent directory "/usr/aarch64-cros-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib64/clang/5.0.0/include
/usr/aarch64-cros-linux-gnu/usr/include
End of search list.
"/usr/libexec/gcc/aarch64-cros-linux-gnu/ld" --sysroot=/usr/aarch64-cros-linux-gnu -pie --build-id --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-linux-aarch64.so.1 -o a.out /usr/aarch64-cros-linux-gnu/usr/lib/../lib64/Scrt1.o /usr/aarch64-cros-linux-gnu/usr/lib/../lib64/crti.o /usr/bin/../lib64/gcc/aarch64-cros-linux-gnu/4.9.x/crtbeginS.o -L/usr/bin/../lib64/gcc/aarch64-cros-linux-gnu/4.9.x -L/usr/bin/../lib64/gcc/aarch64-cros-linux-gnu/4.9.x/../../../../aarch64-cros-linux-gnu/lib/../lib64 -L/usr/aarch64-cros-linux-gnu/lib/../lib64 -L/usr/aarch64-cros-linux-gnu/usr/lib/../lib64 -L/usr/bin/../lib64/gcc/aarch64-cros-linux-gnu/4.9.x/../../../../aarch64-cros-linux-gnu/lib -L/usr/aarch64-cros-linux-gnu/lib -L/usr/aarch64-cros-linux-gnu/usr/lib /tmp/test-623a68.o /usr/lib64/clang/5.0.0/lib/linux/libclang_rt.builtins-aarch64.a -lgcc_eh -lc /usr/lib64/clang/5.0.0/lib/linux/libclang_rt.builtins-aarch64.a -lgcc_eh /usr/bin/../lib64/gcc/aarch64-cros-linux-gnu/4.9.x/crtendS.o /usr/aarch64-cros-linux-gnu/usr/lib/../lib64/crtn.o
/usr/x86_64-pc-linux-gnu/aarch64-cros-linux-gnu/binutils-bin/2.25.51/ld.bfd.real: cannot find /usr/lib64/clang/5.0.0/lib/linux/libclang_rt.builtins-aarch64.a: No such file or directory
Comment 1 by llozano@chromium.org
, Aug 30 2017