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

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 13 Sep 2020 20:56:27 +0200
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.

If I install the devel/xtoolchain-llvm90 port and use that, I get a slightly different command line. Here's both of them, in diff --side-by-side format:

/usr/local/bin/clang11                                  |  /usr/local/bin/clang90
                                                        >   -target x86_64-unknown-freebsd13.0
                                                        >   --sysroot=/usr/obj/usr/src/amd64.amd64/tmp
                                                        >   -B/var/empty
 -O2                                                        -O2
 -pipe                                                      -pipe
 -fno-common                                                -fno-common
 -DNO__SCCSID                                               -DNO__SCCSID
 -DNO__RCSID                                                -DNO__RCSID
 -I/usr/src/lib/libc/include                                -I/usr/src/lib/libc/include
 -I/usr/src/include                                         -I/usr/src/include
 -I/usr/src/lib/libc/amd64                                  -I/usr/src/lib/libc/amd64
 -DNLS                                                      -DNLS
 -D__DBINTERFACE_PRIVATE                                    -D__DBINTERFACE_PRIVATE
 -I/usr/src/contrib/gdtoa                                   -I/usr/src/contrib/gdtoa
 -I/usr/src/contrib/libc-vis                                -I/usr/src/contrib/libc-vis
 -DINET6                                                    -DINET6
 -I/usr/obj/usr/src/amd64.amd64/lib/libc                    -I/usr/obj/usr/src/amd64.amd64/lib/libc
 -I/usr/src/lib/libc/resolv                                 -I/usr/src/lib/libc/resolv
 -D_ACL_PRIVATE                                             -D_ACL_PRIVATE
 -DPOSIX_MISTAKE                                            -DPOSIX_MISTAKE
 -I/usr/src/lib/libmd                                       -I/usr/src/lib/libmd
 -I/usr/src/contrib/jemalloc/include                        -I/usr/src/contrib/jemalloc/include
 -I/usr/src/contrib/tzcode/stdtime                          -I/usr/src/contrib/tzcode/stdtime
 -I/usr/src/lib/libc/stdtime                                -I/usr/src/lib/libc/stdtime
 -I/usr/src/lib/libc/locale                                 -I/usr/src/lib/libc/locale
 -DBROKEN_DES                                               -DBROKEN_DES
 -DPORTMAP                                                  -DPORTMAP
 -DDES_BUILTIN                                              -DDES_BUILTIN
 -I/usr/src/lib/libc/rpc                                    -I/usr/src/lib/libc/rpc
 -DWANT_HYPERV                                              -DWANT_HYPERV
 -DYP                                                       -DYP
 -DNS_CACHING                                               -DNS_CACHING
 -DSYMBOL_VERSIONING                                        -DSYMBOL_VERSIONING
 -g                                                         -g
 -MD                                                        -MD
 -MF.depend.shm_open.o                                      -MF.depend.shm_open.o
 -MTshm_open.o                                              -MTshm_open.o
 -std=gnu99                                                 -std=gnu99
 -Wno-format-zero-length                                    -Wno-format-zero-length
 -nobuiltininc                                              -nobuiltininc
 -idirafter /usr/local/llvm11/lib/clang/11.0.0/include  |   -idirafter /usr/local/llvm90/lib/clang/9.0.1/include
 -fstack-protector-strong                                   -fstack-protector-strong
 -Wsystem-headers                                           -Wsystem-headers
 -Werror                                                    -Werror
 -Wall                                                      -Wall
 -Wno-format-y2k                                            -Wno-format-y2k
 -Wno-uninitialized                                         -Wno-uninitialized
 -Wno-pointer-sign                                          -Wno-pointer-sign
 -Wno-empty-body                                            -Wno-empty-body
 -Wno-string-plus-int                                       -Wno-string-plus-int
 -Wno-unused-const-variable                                 -Wno-unused-const-variable
 -Wno-tautological-compare                                  -Wno-tautological-compare
 -Wno-unused-value                                          -Wno-unused-value
 -Wno-parentheses-equality                                  -Wno-parentheses-equality
 -Wno-unused-function                                       -Wno-unused-function
 -Wno-enum-conversion                                       -Wno-enum-conversion
 -Wno-unused-local-typedef                                  -Wno-unused-local-typedef
 -Wno-address-of-packed-member                              -Wno-address-of-packed-member
 -Wno-switch                                                -Wno-switch
 -Wno-switch-enum                                           -Wno-switch-enum
 -Wno-knr-promoted-parameter                                -Wno-knr-promoted-parameter
 -Qunused-arguments                                         -Qunused-arguments
 -I/usr/src/lib/libutil                                     -I/usr/src/lib/libutil
 -I/usr/src/lib/msun/amd64                                  -I/usr/src/lib/msun/amd64
 -I/usr/src/lib/msun/x86                                    -I/usr/src/lib/msun/x86
 -I/usr/src/lib/msun/src                                    -I/usr/src/lib/msun/src
 -c /usr/src/lib/libc/sys/shm_open.c                        -c /usr/src/lib/libc/sys/shm_open.c
 -o shm_open.o                                              -o shm_open.o

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.

-Dimitry


Received on Sun Sep 13 2020 - 16:56:37 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:25 UTC