Date: Wed, 12 Apr 2017 15:39:10 -0700 From: Mark Millard <markmi@dsl-only.net> To: pfg@FreeBSD.org, FreeBSD Ports <freebsd-ports@freebsd.org> Cc: John Marino <freebsdml@marino.st> Subject: Re: [Bug 214864] [exp-run] test build with lld as /usr/bin/ld [vs. gcc6-aux but avoiding further polluting the bug with side issues] Message-ID: <3D555564-9C4C-4570-BF71-F1794187275E@dsl-only.net> In-Reply-To: <bug-214864-34538-wdYhQQlNYR@https.bugs.freebsd.org/bugzilla/> References: <bug-214864-34538@https.bugs.freebsd.org/bugzilla/> <bug-214864-34538-wdYhQQlNYR@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
[I'm avoiding continuing this issue in the bugzilla report 214864 as it is not relevant to the 214864's intent. I'm CC'ing John Marino (the maintainer of lang/gcc6-aux ) in case the details presented prove of interest to him.] > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D214864 >=20 > ... >=20 > --- Comment #16 from Pedro F. Giffuni <pfg@FreeBSD.org> --- > (In reply to Mark Millard from comment #15) > GCC has the nasty habit of "fixing" the system headers according to = outdated > expectations. > There is a way to regenerate the headers but I forgot the details. = Please > update your GCC to a newly generated snapshot (or move to clang). >=20 =46rom comment #17 of 214864: > (In reply to Pedro F. Giffuni from comment #16) >=20 > I only made the comment about lang/gcc6-aux because > it is listed in=20 > comment 10 > as blocking other ports > but that happens to not be for lld related reasons. >=20 >=20 > Side note: >=20 > I got to lang/gcc6-aux indirectly via trying to build > ports-mgmt/synth. I have no direct use for gcc6-aux. > I'll simply wait for the lang/gcc6-aux maintainer > and a committer to update the bootstrap materials of > building lang/gcc6-aux to no longer require the > __nonnull (or related materials). >=20 > [I also checked and at the time pkg provided an older > synth that did not yet support arm64: source was > the only thing recent enough. But I can wait.] > --- Comment #18 from Pedro F. Giffuni <pfg@FreeBSD.org> --- > (In reply to Mark Millard from comment #17) >=20 > Yes, it's unrelated to lld: >=20 > The thing is GCC's build system grabs the system headers and "fixes" = them. I > removed the __nonnull attribute from the headers about a month ago but = the old > GCC oyu are using was built when they were still there. > The issue is usually resolved by rebuilding GCC, there shouldn't be = any need to > patch things. Perhaps the gcc-aux port needs a version bump. The below details the full evidence that the problem file and its = contents (including __nonnull use) are from = ada-bootstrap.aarch64.freebsd.120.tar.bz2 content that is one of the distfiles for lang/gcc6-aux . The problem is = not from other things in my environment. In: In file included from conftest.c:71:0: = /usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-= aux-freebsd12.0/6.3.1/include-fixed/stdlib.h: In function = 'posix_memalign': = /usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-= aux-freebsd12.0/6.3.1/include-fixed/stdlib.h:192:46: error: expected = declaration specifiers before '__nonnull' int posix_memalign(void **, size_t, size_t) __nonnull(1); /* (ADV) */ ^~~~~~~~~ it is a question where: . . = ./work/bootstrap/lib/gcc/aarch64-aux-freebsd12.0/6.3.1/include-fixed/stdli= b.h and its content came from. Here are hints, including what context I was using at the time: # uname -apKU FreeBSD pine64 12.0-CURRENT FreeBSD 12.0-CURRENT r315914M arm64 = aarch64 1200027 1200027 # svnlite info /usr/ports/ | grep "Re[plv]" Relative URL: ^/head Repository Root: svn://svn.freebsd.org/ports Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5 Revision: 438141 Last Changed Rev: 438141 # df -m Filesystem 1M-blocks Used Avail Capacity Mounted on /dev/ufs/PINE642Grootfs 195378 32761 146986 18% / devfs 0 0 0 100% /dev /dev/label/PINE642GAboot 63 0 63 0% /boot/efi (So searching / searches most everything, including everything relevant here.) # find / -name .svn -prune -o -name stdlib.h -exec grep "__nonnull\>" {} = \; -print | more int posix_memalign(void **, size_t, size_t) __nonnull(1); /* (ADV) = */ = /usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/lib/gcc/aarch64-= aux-freebsd12.0/6.3.1/include-fixed/stdlib.h So no place else does __nonnull occur in my root file system for any stdlib.h: just in the /usr/obj/ area for lang/gcc6-aux . =3D=3D=3D> Fetching all distfiles required by gcc6-aux-20170202_1 for = building =3D=3D=3D> Extracting for gcc6-aux-20170202_1 =3D> SHA256 Checksum OK for gcc-6-20170202.tar.bz2. =3D> SHA256 Checksum OK for ada-bootstrap.aarch64.freebsd.120.tar.bz2. So, looking. . . # ls -lt /usr/ports/distfiles/ada-bootstrap.aarch64.freebsd.120.tar.bz2 -rw-r--r-- 1 root wheel 53840614 Feb 4 14:49 = /usr/ports/distfiles/ada-bootstrap.aarch64.freebsd.120.tar.bz2 # tar -tvf = /usr/ports/distfiles/ada-bootstrap.aarch64.freebsd.120.tar.bz2 | grep = stdlib.h | more -rw-r--r-- 0 marino devel 2248 Feb 4 10:40 = bootstrap/include/c++/6.3.1/stdlib.h -rw-r--r-- 0 marino devel 1487 Feb 4 10:40 = bootstrap/include/c++/6.3.1/tr1/stdlib.h -rw-r--r-- 0 marino devel 11017 Feb 4 09:49 = bootstrap/lib/gcc/aarch64-aux-freebsd12.0/6.3.1/include-fixed/stdlib.h The file with the __nonnull use is from the distfiles for lang/gcc6-aux itself (specifically from ada-bootstrap.aarch64.freebsd.120.tar.bz2 ), not from other things already existing in my environment. # ls -lT bootstrap/lib/gcc/aarch64-aux-freebsd12.0/6.3.1/include-fixed/ total 92 -rw-r--r-- 1 root wheel 750 Feb 4 10:30:20 2017 README -rw-r--r-- 1 root wheel 5382 Feb 4 10:30:20 2017 limits.h drwxr-xr-x 2 root wheel 512 Feb 4 09:49:09 2017 netinet -rw-r--r-- 1 root wheel 2731 Feb 4 09:49:07 2017 stddef.h -rw-r--r-- 1 root wheel 17007 Feb 4 09:49:07 2017 stdio.h -rw-r--r-- 1 root wheel 11017 Feb 4 09:49:07 2017 stdlib.h drwxr-xr-x 2 root wheel 512 Feb 4 09:49:06 2017 sys -rw-r--r-- 1 root wheel 330 Feb 4 09:49:10 2017 syslimits.h -rw-r--r-- 1 root wheel 19423 Feb 4 09:49:08 2017 unistd.h -rw-r--r-- 1 root wheel 9274 Feb 4 09:49:07 2017 wchar.h These files were built long ago and are simply copied into my environment during the build of lang/gcc6-aux. lang/gcc6-aux does not update them during its bootstrap build after extracting these files. (I used portmaster -DK in the build so the files were left behind to look at.) It takes an update to lang/gcc6-aux itself to fix the use of __nonnull in its: bootstrap/lib/gcc/aarch64-aux-freebsd12.0/6.3.1/include-fixed/stdlib.h if head is to be supported for versions after head's changes for such things. And, as I said in comment #17, I'll wait for the maintainer of lang.gcc6-aux (and a committer) to update the lang/gcc6-aux ada-bootstrap.aarch64.freebsd.120.tar.bz2 to deal with __nonnull in stdlib.h. My experimenting with ports-mgmt/synth is not time-critical, including on aarch64. =3D=3D=3D Mark Millard markmi at dsl-only.net
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3D555564-9C4C-4570-BF71-F1794187275E>