Bug#693208: clang unable to link trivial test program on armhf

peter green plugwash at p10link.net
Wed Nov 14 09:24:50 UTC 2012

Package: clang
Version: 3.0-6
Severity: grave
Tags: patch
x-debbugs-cc: debian-release at lists.debian.org

RT in cc because of proposed TPU upload.

Unfortunately it seems that the changes in 3.0-6 fixed clang on armel
but not on armhf.

root at debian:/# clang -v test.c
Debian clang version 3.0-6 (tags/RELEASE_30/final) (based on LLVM 3.0)
Target: arm-unknown-linux-gnueabihf
Thread model: posix
clang: warning: unknown platform, assuming -mfloat-abi=soft
"/usr/bin/clang" -cc1 -triple armv4t-unknown-linux-gnueabihf -S
-disable-free -disable-llvm-verifier -main-file-name test.c
-mrelocation-model static -mdisable-fp-elim -mconstructor-aliases
-target-abi apcs-gnu -target-cpu arm7tdmi -msoft-float -mfloat-abi soft
-target-feature +soft-float -target-feature +soft-float-abi
-target-feature -neon -target-linker-version 2.22
-momit-leaf-frame-pointer -v -resource-dir /usr/bin/../lib/clang/3.0
-fmodule-cache-path /var/tmp/clang-module-cache -internal-isystem
/usr/local/include -internal-isystem /usr/bin/../lib/clang/3.0/include
-internal-externc-isystem /usr/include/arm-linux-gnueabihf
-internal-externc-isystem /usr/include -ferror-limit 19 -fmessage-length
80 -fno-signed-char -fgnu-runtime -fobjc-runtime-has-arc
-fobjc-runtime-has-weak -fobjc-fragile-abi -fdiagnostics-show-option
-fcolor-diagnostics -o /tmp/test-TUFgUO.s -x c test.c
clang -cc1 version 3.0 based upon llvm 3.0 hosted on
ignoring nonexistent directory "/usr/bin/../lib/clang/3.0/include"
ignoring nonexistent directory "/usr/bin/../lib/clang/3.0/include"
ignoring duplicate directory "/usr/local/include"
ignoring duplicate directory "/usr/include/arm-linux-gnueabihf"
ignoring duplicate directory "/usr/include/arm-linux-gnueabihf"
ignoring duplicate directory "/usr/include/arm-linux-gnueabihf"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
End of search list.
"/usr/bin/as" -o /tmp/test-8d1iPt.o /tmp/test-TUFgUO.s
"/usr/bin/ld" -X --hash-style=both --build-id --eh-frame-hdr -m
armelf_linux_eabi -dynamic-linker /lib/ld-linux.so.3 -o a.out crt1.o
crti.o /usr/lib/gcc/arm-linux-gnueabihf/4.6/crtbegin.o
-L/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../.. -L/lib -L/usr/lib
/tmp/test-8d1iPt.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc
--as-needed -lgcc_s --no-as-needed
/usr/lib/gcc/arm-linux-gnueabihf/4.6/crtend.o crtn.o
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
clang: error: linker command failed with exit code 1 (use -v to see
root at debian:/#

I decided to first look at the warning about float abi, this seems to
have been a simple case of a missing condition in the logic that decides
what float ABI to use. While fixing that I also noticed that the code
uses "softfp" by default on armel when for debian armel it should be
using "soft" by default (since debian supports hardware without a fpu)
so I changed that too.

Reading that code also gave me a hint on how to fix the code that made
the path descisions which I proceeded to do.

Then I had to fix the dynamic linker path for armhf.

This is sufficient to make clang work with the gold linker on armhf.
Unfortunately the bfd linker fails with an assertion failure. I intend
to file a seperate bug report about this but still I think working with
one or the two linker choices debian offers is better than working with

While working on the fixes I also found the clean target was not
cleaning up properly and so fixed it.

I have attatched a diff which I would like to upload to TPU are the
maintainer and release team happy with this? I have tested that the
patch does not break linking on armel with either bfd or gold.

P.S. it seems the version in unstable has regressed from the version
in testing and does not link a trivial test app successfully on either
armel or armhf I have not investigated details of that (IMO fixing
wheezy is more important than fixing a package that is in sid and
unlikely to make it for wheezy).

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: clang.debdiff
URL: <http://lists.alioth.debian.org/pipermail/pkg-llvm-team/attachments/20121114/1b353b9c/attachment.ksh>

More information about the Pkg-llvm-team mailing list