compiling with ports llvm11 breaks on mman.h: struct shm_larg epage_conf

Dimitry Andric dim at FreeBSD.org
Mon Sep 14 16:47:02 UTC 2020


On 13 Sep 2020, at 20:56, Dimitry Andric <dim at FreeBSD.org> wrote:
> 
> On 12 Sep 2020, at 23:00, Ronald Klop <ronald-lists at klop.ws> wrote:
>> 
>> On Sat, 12 Sep 2020 18:28:03 +0200, Dimitry Andric <dim at freebsd.org> wrote:
>>> On 12 Sep 2020, at 17:43, Ronald Klop <ronald-lists at klop.ws> wrote:
>>>> 
>>>> Because I'm tired of hours of compilation of llvm/clang I'm testing compiling FreeBSD with llvm11 from a pkg.
> ...
> It is during the building world stage and happens with and without NO_CLEAN.
>> Full command:
>> /usr/local/bin/clang11  -O2 -pipe -fno-common   -DNO__SCCSID -DNO__RCSID -I/usr/src/lib/libc
>> /include -I/usr/src/include -I/usr/src/lib/libc/amd64 -DNLS  -D__DBINTERFACE_PRIVATE -I/usr/
>> src/contrib/gdtoa -I/usr/src/contrib/libc-vis -DINET6 -I/usr/obj/usr/src/amd64.amd64/lib/lib
>> c -I/usr/src/lib/libc/resolv -D_ACL_PRIVATE -DPOSIX_MISTAKE -I/usr/src/lib/libmd -I/usr/src/
>> contrib/jemalloc/include -DMALLOC_PRODUCTION -I/usr/src/contrib/tzcode/stdtime -I/usr/src/li
>> b/libc/stdtime -I/usr/src/lib/libc/locale -DBROKEN_DES -DPORTMAP -DDES_BUILTIN -I/usr/src/li
>> b/libc/rpc -DWANT_HYPERV -DYP -DNS_CACHING -DSYMBOL_VERSIONING -g -MD  -MF.depend.shm_open.o
>> -MTshm_open.o -std=gnu99 -Wno-format-zero-length -nobuiltininc -idirafter /usr/local/llvm11
>> /lib/clang/11.0.0/include -fstack-protector-strong -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -Wno-unused-
>> const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-un
>> used-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-address-of-packed-member -
>> Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter  -Qunused-arguments    -I/usr/src/lib/libutil -I/usr/src/lib/msun/amd64 -I/usr/src/lib/msun/x86 -I/usr/src/lib/msun/src -c /usr/
>> src/lib/libc/sys/shm_open.c -o shm_open.o
> 
> After a pretty long build of the llvm11 port, I can at least reproduce your error. It looks like the problem is that clang11 does not get any --sysroot parameter passed.
...
> So except for the expected difference in the -idirafter option that points to the clang internal headers, the main problem is that for some reason, clang11 does not get the -target and --sysroot options passed.

In the end it turns out that the problems is caused by setting CC (and CXX, etc) in make.conf. This has the unfortunate side-effect that any XCFLAGS are overridden during the world stages, such that the all-important --sysroot flags is not added.

In short, never set CC, CXX, CPP or LD in your make.conf or build environment, but use XCC, XCXX, XCPP and XLD instead. Better yet, install one of the llvm packages from the devel category, and set CROSS_TOOLCHAIN.

Keep an eye on https://wiki.freebsd.org/ExternalToolchain, which still has a little bit of outdated information, but is hopefully going to be updated soon.

-Dimitry

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 223 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.freebsd.org/pipermail/freebsd-current/attachments/20200914/44c9baeb/attachment.sig>


More information about the freebsd-current mailing list