[cfe-dev] The LLVM host/target TRIPLE padding drama on Debian

Fangrui Song via cfe-dev cfe-dev at lists.llvm.org
Tue Apr 6 16:02:16 PDT 2021


[Remove lve-dev which I think does not exist.  Add cfe-dev.]

On 2021-04-06, Nick Desaulniers wrote:
>On Tue, Apr 6, 2021 at 1:57 AM Sylvestre Ledru <sylvestre at debian.org> wrote:
>>
>> Hello
>>
>> Could you please report a bug https://bugs.llvm.org/ with a shorter version of this email ?
>> (with less jokes ;)
>
>Heh, I got a laugh. Let me highlight below precisely what should be in
>the bugreport.
>
>>
>> Thanks
>> Sylvestre
>>
>> Le 06/04/2021 à 10:50, Sedat Dilek a écrit :
>> > [ CC some ClangBuiltLinux and Debian GNU/LLVM toolchain folks ]
>> >
>> > Hi,
>> >
>> > this is not a late April-1st-joke.
>> > "This is a REAL DRAMA written by (my) LIFE."
>> > ( See the end of this Email. )
>> >
>> > [ INTRO ]
>> >
>> > /me uses LLVM/Clang and tools - Debian folks call this "LLVM
>> > toolchain" - for building latest upstream Linux-kernels.
>> >
>
>include from here ---->
>
>> > On Debian x86-64 I see this dpkg-architecture warning in my
>> > Linux-kernel build-logs:
>> >
>> > specified GNU system type x86_64-linux-gnu does not match CC system
>> > type x86_64-unknown-linux-gnu, try setting a correct CC environment
>> > variable
>
><----- to here
>
>Also, how do you check the logs? This is during a kernel build?  If so
>then it sounds like something wrong with that build script.
>
>> >
>> > [ CHECK ]
>> >
>> > Check "GNU system type" on my Debian system:
>> >
>> > $ dpkg-architecture --query DEB_HOST_GNU_TYPE
>> > x86_64-linux-gnu
>> >
>> > What says clang (here: Selfmade LLVM version 12.0.0-rc4 - Debian's
>> > clang show the same "Target:"):
>> >
>> > $ /opt/llvm-toolchain/bin/clang --version
>> > dileks clang version 12.0.0 (https://github.com/llvm/llvm-project.git
>> > 04ba60cfe598e41084fb848daae47e0ed910fa7d)
>> > Target: x86_64-unknown-linux-gnu
>> > Thread model: posix
>> > InstalledDir: /opt/llvm-toolchain/bin
>> >
>> > [ ABOUT KNIFES AND TRIPLE(S) ]
>> >
>> > You remember the famous quote from Crocodile Dundee cinema movie?
>> > "*This* is a KNIFE!"
>> >
>> >      This is a TRIPLE: x86_64-linux-gnu
>> > This is NOT a TRIPLE: x86_64-unknown-linux-gnu
>
>Heh, yes, "triples" (3) actually have 4 segments.
>https://clang.llvm.org/docs/CrossCompilation.html#target-triple
>
>I would think they're equivalent if the "vendor" is left out, so to me
>it's a bug in whatever is printing that message.
>
>> >
>> > Personally, I do not see a benefit in having an "unknown" but I am not
>> > familiar with other operating systems and (its) architectures.
>> > Maybe, there is a real need for this extra "padding" (3 -> 4).
>> >
>> > [ "SOURCE (OF) TRUST" ]
>> >
>> > I do not follow LLVM development that much.
>> > But I know to check the source-code.
>> >
>> > NOTE: Here: Latest <llvm-project.git#release/12.x>
>> >
>> > [ clang/test/Driver/program-path-priority.c ]
>> >
>> > /// We cannot trust clang --version, or cmake's LLVM_DEFAULT_TARGET_TRIPLE
>> > /// to give us the one and only default triple.
>> > /// Can't trust cmake because on Darwin, triples have a verison
>> > appended to them.
>> > /// (and clang uses the versioned string to search)
>> > /// Can't trust --version because it will pad 3 item triples to 4 e.g.
>> > /// powerpc64le-linux-gnu -> powerpc64le-unknown-linux-gnu
>> > /// (and clang uses the former to search)
>> > /// So we write to both names which is a bit odd but still proves that the
>> > /// lookup is working.

I created https://reviews.llvm.org/D99996 to drop $DEFAULR_TRIPLE-gcc
from appearing in an unrelated target triple cross compilation.

>> > LIFE is about TRUST :-).
>> > No TRUST - No nothing!
>> >
>> > [ INSPIRED-BY ]
>> >
>> > Initially, I was inspired by this change in "tc-build" - the Swiss
>> > army knife (YES, this is a KNIFE) from/for ClangBuiltLinux folks.
>> >
>> > commit 227a77175f81fc9b2e76b2d11b91b686ce41b35b
>> > "build-llvm.py: Define LLVM_HOST_TRIPLE for certain distributions"
>> >
>> > Link: https://github.com/ClangBuiltLinux/tc-build/commit/227a77175f81fc9b2e76b2d11b91b686ce41b35b
>> >
>> > As a man-child I played with...
>> >
>> > DEB_HOST_GNU_TYPE="x86_64-linux-gnu"
>> > LLVM_HOST_TRIPLE_OPTS="-D LLVM_HOST_TRIPLE=$DEB_HOST_GNU_TYPE"
>> >
>> > ...in my custom LLVM toolchain build-script.
>> >
>> > Unfortunately, this results in a ***mixture of target TRIPLEs***.
>> >
>> > This is from my comment when playing with LLVM v13-git (see below link).
>> >
>> > Link: https://github.com/ClangBuiltLinux/tc-build/pull/141#issuecomment-791179738
>> >
>> > LLC and llvm-dwarfdump say "x86_64-linux-gnu":
>> >
>> > $ /opt/llvm-toolchain/bin/llc --version
>> > LLVM (http://llvm.org/):
>> >    LLVM version 13.0.0git
>> >    Optimized build.
>> >    Default target: x86_64-linux-gnu
>> >    Host CPU: sandybridge
>> >
>> >    Registered Targets:
>> >      bpf    - BPF (host endian)
>> >      bpfeb  - BPF (big endian)
>> >      bpfel  - BPF (little endian)
>> >      x86    - 32-bit X86: Pentium-Pro and above
>> >      x86-64 - 64-bit X86: EM64T and AMD64
>> >
>> > $ /opt/llvm-toolchain/bin/llvm-dwarfdump --version
>> > LLVM (http://llvm.org/):
>> >    LLVM version 13.0.0git
>> >    Optimized build.
>> >    Default target: x86_64-linux-gnu
>> >    Host CPU: sandybridge

sys::getDefaultTargetTriple()

>> > Whereas clang says "x86_64-unknown-linux-gnu":
>> >
>> > $ /opt/llvm-toolchain/bin/clang --version
>> > dileks clang version 13.0.0 (https://github.com/llvm/llvm-project.git
>> > 9c0274cdeae904089806be6faee72b9126d2cf5b)
>> > Target: x86_64-unknown-linux-gnu
>> > Thread model: posix
>> > InstalledDir: /opt/llvm-toolchain/bin

The vendor part "unknown" may be added by 
computeTargetTriple in clang/lib/Driver/Driver.cpp

If you specify --target, "Target: " will be overridden.

% clang --version --target=aarch64-linux-gnu
clang version 13.0.0
Target: aarch64-linux-gnu
Thread model: posix
InstalledDir: /tmp/RelA/bin

I think this is a matter of finding the right place and removing the extra
normalization...

>> > As said I am an end-user of LLVM not an LLVM developer and I do not
>> > follow LLVM upstream development.
>> > If there was progress on this topic, please let me know.
>> >
>> > Final quote from Mark Twain (translated from German):
>> > "In my LIFE I had several DRAMA(S) - some of them REALLY happened."
>> >
>> > For me this is NOT a drama.
>> > But I do not know about the consequences of having a mixture of target
>> > TRIPLEs in my Debian system.
>> > Thus, I dropped above LLVM_HOST_TRIPLE_OPTS from my build-script.
>> >
>> > Please, let me know if you need further information.
>> >
>> > Thanks.
>> >
>> > Regards,
>> > - Sedat "A real drama queen" -
>> >
>>
>
>
>-- 
>Thanks,
>~Nick Desaulniers


More information about the cfe-dev mailing list