Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Mar 2016 15:34:33 -0700
From:      Bryan Drewery <bdrewery@FreeBSD.org>
To:        Mark Millard <markmi@dsl-only.net>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>, FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, Gerald Pfeifer <gerald@FreeBSD.org>
Subject:   Re: svn commit: r297435 - head: still problems for stage 3 when gcc 4.2.1 is avoided (powerpc64 self-hosted build)
Message-ID:  <56FDA5F9.1090601@FreeBSD.org>
In-Reply-To: <9E3033D5-F416-4B78-97C2-0A0AABF5A49E@dsl-only.net>
References:  <5A0ACA76-6F1D-4975-9E59-2A64BB8EFC77@dsl-only.net> <56FD9757.6040709@FreeBSD.org> <9E3033D5-F416-4B78-97C2-0A0AABF5A49E@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 3/31/16 3:02 PM, Mark Millard wrote:
>> > We likely just need to prioritize /usr/include over /usr/local/inclu=
de
>> > for these phases, which gcc49 may have backwards since it has its pr=
efix
>> > set to /usr/local from the ports build.

Yup this is the problem with using the ports compiler as the "host"
compiler:

> # echo '' |/usr/local/bin/gcc49 -v -x c++ - -o /dev/null
> Using built-in specs.
> COLLECT_GCC=3D/usr/local/bin/gcc49
> COLLECT_LTO_WRAPPER=3D/usr/local/libexec/gcc49/gcc/x86_64-portbld-freeb=
sd11.0/4.9.4/lto-wrapper
> Target: x86_64-portbld-freebsd11.0
> Configured with: ./../gcc-4.9-20160210/configure --with-build-config=3D=
bootstrap-debug --disable-nls --enable-gnu-indirect-function --libdir=3D/=
usr/local/lib/gcc49 --libexecdir=3D/usr/local/libexec/gcc49 --program-suf=
fix=3D49 --with-as=3D/usr/local/bin/as --with-gmp=3D/usr/local --with-gxx=
-include-dir=3D/usr/local/lib/gcc49/include/c++/ --with-ld=3D/usr/local/b=
in/ld --with-pkgversion=3D'FreeBSD Ports Collection' --with-system-zlib -=
-with-ecj-jar=3D/usr/local/share/java/ecj-4.5.jar --enable-languages=3Dc,=
c++,objc,fortran,java --prefix=3D/usr/local --localstatedir=3D/var --mand=
ir=3D/usr/local/man --infodir=3D/usr/local/info/gcc49 --build=3Dx86_64-po=
rtbld-freebsd11.0
> Thread model: posix
> gcc version 4.9.4 20160210 (prerelease) (FreeBSD Ports Collection)
> COLLECT_GCC_OPTIONS=3D'-v' '-o' '/dev/null' '-mtune=3Dgeneric' '-march=3D=
x86-64'
>  /usr/local/libexec/gcc49/gcc/x86_64-portbld-freebsd11.0/4.9.4/cc1plus =
-quiet -v - -quiet -dumpbase - -mtune=3Dgeneric -march=3Dx86-64 -auxbase =
- -version -o /tmp//ccA75yFy.s
> GNU C++ (FreeBSD Ports Collection) version 4.9.4 20160210 (prerelease) =
(x86_64-portbld-freebsd11.0)
>         compiled by GNU C version 4.9.4 20160210 (prerelease), GMP vers=
ion 5.1.3, MPFR version 3.1.3, MPC version 1.0.3
> GGC heuristics: --param ggc-min-expand=3D100 --param ggc-min-heapsize=3D=
131072
> ignoring nonexistent directory "/usr/local/lib/gcc49/gcc/x86_64-portbld=
-freebsd11.0/4.9.4/../../../../../x86_64-portbld-freebsd11.0/include"
> #include "..." search starts here:
> #include <...> search starts here:
>  /usr/local/lib/gcc49/include/c++/
>  /usr/local/lib/gcc49/include/c++//x86_64-portbld-freebsd11.0
>  /usr/local/lib/gcc49/include/c++//backward
>  /usr/local/lib/gcc49/gcc/x86_64-portbld-freebsd11.0/4.9.4/include
>  /usr/local/include
>  /usr/local/lib/gcc49/gcc/x86_64-portbld-freebsd11.0/4.9.4/include-fixe=
d
>  /usr/include
> End of search list.

Note the /usr/local/include and /usr/include order near the end.

Passing -isystem /usr/include seems to fix it:

> # echo '' |/usr/local/bin/gcc49 -v -x c++ - -o /dev/null -isystem /usr/=
include
> Using built-in specs.
> COLLECT_GCC=3D/usr/local/bin/gcc49
> COLLECT_LTO_WRAPPER=3D/usr/local/libexec/gcc49/gcc/x86_64-portbld-freeb=
sd11.0/4.9.4/lto-wrapper
> Target: x86_64-portbld-freebsd11.0
> Configured with: ./../gcc-4.9-20160210/configure --with-build-config=3D=
bootstrap-debug --disable-nls --enable-gnu-indirect-function --libdir=3D/=
usr/local/lib/gcc49 --libexecdir=3D/usr/local/libexec/gcc49 --program-suf=
fix=3D49 --with-as=3D/usr/local/bin/as --with-gmp=3D/usr/local --with-gxx=
-include-dir=3D/usr/local/lib/gcc49/include/c++/ --with-ld=3D/usr/local/b=
in/ld --with-pkgversion=3D'FreeBSD Ports Collection' --with-system-zlib -=
-with-ecj-jar=3D/usr/local/share/java/ecj-4.5.jar --enable-languages=3Dc,=
c++,objc,fortran,java --prefix=3D/usr/local --localstatedir=3D/var --mand=
ir=3D/usr/local/man --infodir=3D/usr/local/info/gcc49 --build=3Dx86_64-po=
rtbld-freebsd11.0
> Thread model: posix
> gcc version 4.9.4 20160210 (prerelease) (FreeBSD Ports Collection)
> COLLECT_GCC_OPTIONS=3D'-v' '-o' '/dev/null' '-isystem' '/usr/include' '=
-mtune=3Dgeneric' '-march=3Dx86-64'
>  /usr/local/libexec/gcc49/gcc/x86_64-portbld-freebsd11.0/4.9.4/cc1plus =
-quiet -v -isystem /usr/include - -quiet -dumpbase - -mtune=3Dgeneric -ma=
rch=3Dx86-64 -auxbase - -version -o /tmp//ccNh006Z.s
> GNU C++ (FreeBSD Ports Collection) version 4.9.4 20160210 (prerelease) =
(x86_64-portbld-freebsd11.0)
>         compiled by GNU C version 4.9.4 20160210 (prerelease), GMP vers=
ion 5.1.3, MPFR version 3.1.3, MPC version 1.0.3
> GGC heuristics: --param ggc-min-expand=3D100 --param ggc-min-heapsize=3D=
131072
> ignoring nonexistent directory "/usr/local/lib/gcc49/gcc/x86_64-portbld=
-freebsd11.0/4.9.4/../../../../../x86_64-portbld-freebsd11.0/include"
> ignoring duplicate directory "/usr/include"
> #include "..." search starts here:
> #include <...> search starts here:
>  /usr/include
>  /usr/local/lib/gcc49/include/c++/
>  /usr/local/lib/gcc49/include/c++//x86_64-portbld-freebsd11.0
>  /usr/local/lib/gcc49/include/c++//backward
>  /usr/local/lib/gcc49/gcc/x86_64-portbld-freebsd11.0/4.9.4/include
>  /usr/local/include
>  /usr/local/lib/gcc49/gcc/x86_64-portbld-freebsd11.0/4.9.4/include-fixe=
d

I didn't realize the ports compiler was defaulting /usr/local/include
into the search path now.  It does not have /usr/local/lib in the
default library path as far as I can tell.  It's also broken for its
-rpath (noted in its pkg-message).  So having a default
/usr/local/include path seems odd.

Adding -isystem /usr/include to fix this is probably possible but
there's a risk someone will remove it as redundant.  In this case I wish
/usr/include was first but I'm not sure what impact that would have on
consumers expecting /usr/local/include (and /usr/local/lib) overrides to
work, though they would need to pass a -L /usr/local/lib anyhow and
would likely be passing -I /usr/local/lib too.



--=20
Regards,
Bryan Drewery



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56FDA5F9.1090601>