Re: Building with external toolchain was broken 6 months ago with r255187

From: Lev Serebryakov <lev_at_FreeBSD.org>
Date: Wed, 19 Mar 2014 10:35:39 +0400
Hello, John-Mark.
You wrote 19 марта 2014 г., 2:01:40:

JMG> Lev Serebryakov wrote this message on Wed, Mar 19, 2014 at 01:37 +0400:
>>  I did't build my NanoBSD images for almost year, and in this time our
>> not-finished and fragile support for using "external" toolchain is rotten,
>> due to r255187 (and, may meb, some other commits too).
>> 
>> I have very fresh -CURRENT (r263296)
>> 
>> I have these settings for my buildworld & buildkernel targets:
>> 
>> XCC=/usr/bin/cc
>> XCXX=/usr/bin/c++
>> XCPP=/usr/bin/cpp
>> XAS=/usr/bin/as
>> XAR=/usr/bin/ar
>> XLD=/usr/bin/ld
>> XNM=/usr/bin/nm
>> XOBJDUMP=/usr/bin/objdump
>> XRANLIB=/usr/bin/ranlib
>> XSTRINGS=/usr/bin/strings
>> COMPILER_TYPE=clang
>> WITHOUT_CROSS_COMPILER=yes
>> WITHOUT_BINUTILS=yes
>> WITHOUT_CLANG=yes
>> 
>>  It worked 7 months ago. Now it works for "buildworld" but not for
>> "buildkernel:
>> 
>> --- aeskeys_amd64.o ---
>> /usr/bin/cc --sysroot=/data/obj.nano/gateway.v2/data/src/tmp -B/data/obj.nano/gateway.v2/data/src/tmp/usr/bin -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc   -DHAVE_KERNEL_OPTION_HEADERS -include /data/obj.nano/gateway.v2/data/src/sys/D2500CC/opt_global.h -I. -I_at_ -I_at_/contrib/altq -fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/data/obj.nano/gateway.v2/data/src/sys/D2500CC  -mno-aes -mno-avx -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float  -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -Qunused-arguments  -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions  -Wmissing-include-dirs -fdiagnostics-show-option  -Wno-error-tautological-compare -Wno-error-empty-body  -Wno-error-parentheses-equality -Wno-unused-function    -c /data/src/sys/modules/aesni/../../crypto/aesni/aeskeys_amd64.S
>> --- aesni_wrap.o ---
>> In file included from /data/src/sys/modules/aesni/../../crypto/aesni/aesni_wrap.c:40:
>> /data/src/sys/modules/aesni/../../crypto/aesni/aesencdec.h:30:10: fatal error: 'wmmintrin.h' file not found
>> #include <wmmintrin.h>
>>          ^
>> 1 error generated.
>> *** [aesni_wrap.o] Error code 1
>> 
>>  It could not find header file with intrinsics from "system" ("external")
>> clang. I could disable building of this module with WITHOUT_MODULES=aesni,
>> and it works, but what if I need this module?
>> 
>>  Could it be fixed, pleeeeeeease?

JMG> Sounds like your tool chain doesn't have the necessary support for
JMG> AES-NI...  Are you using gcc as cc?  If so, do you have the necessary
JMG> tool chain work that I did in r255185 in your local tree?
  I use clang from world based on r263296 (amd64) to build world and kernel
 from same r263296 (amd64) (as indicated earlier).

JMG> Can you compile this test program?
 Yes, of course. But kernel and modules are built with "-sysroot" option,
you know? And my "-sysroot" doesn't contains clang tree (and
"/usr/include/clang/3.4"), because it points to fresh world (in
OBJDIRPREFIX) and clang was not built for this world, I'm using "system"
one. It works for world, GENERIC kernel and all modules but aesni.

JMG> ------ tsse.c start ----
JMG> #include <wmmintrin.h>

JMG> __m128i foo;
JMG> ------  tsse.c end ------

JMG> With the command:
JMG> ${XCC} -c -maes tsse.c

JMG> If you can't, then the problem is your toolchain, and you need to fix
 I can.

JMG> it...  Try also w/:
JMG> clang -c -maes tsse.c
JMG> and it's also helpful to know more info, like: ${XCC} --version

> /usr/bin/cc --version
FreeBSD clang version 3.4 (tags/RELEASE_34/final 197956) 20140216
Target: x86_64-unknown-freebsd11.0
Thread model: posix

-- 
// Black Lion AKA Lev Serebryakov <lev_at_FreeBSD.org>
Received on Wed Mar 19 2014 - 05:35:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:47 UTC