New issue
Advanced search Search tips

Issue 760390 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Aug 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Cross compiling with clang for arm: missing libclang_rt.builtins-{aarch64.a, armv7a}.a

Project Member Reported by za...@chromium.org, Aug 30 2017

Issue description

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

 
Cc: manojgupta@chromium.org
manoj, do you know anything about this?


Labels: OS-Chrome
Owner: manojgupta@chromium.org
I do not see this fail in my chroot.

zachr@ It appears that somehow you do not have  cross-aarch64-cros-linux-gnu/compiler-rt package installed.
Normally this should be installed anytime any arm64 board is built. Is your chromite checkout in chroot recent? 

An any case, can you run the following and check if cross-aarch64-cros-linux-gnu/compiler-rt is installed by this step?
sudo `which cros_setup_toolchains` --reconfig -t aarch64-cros-linux-gnu

Comment 3 by za...@chromium.org, Aug 30 2017

Status: WontFix
A full repo sync followed by a scripts/update_chroot seems to have fixed it. I also tried running those commands on a coworkers chroot and got identical errors to my chroot, so I was convinced it was not an issue related to a out of date chroot. Thanks for looking into this.

Sign in to add a comment