Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Apr 2017 19:55:24 +0200
From:      Dimitry Andric <dim@FreeBSD.org>
To:        Gerald Pfeifer <gerald@pfeifer.com>
Cc:        Jung-uk Kim <jkim@FreeBSD.org>, freebsd-stable@freebsd.org, papowell@astart.com
Subject:   Re: GCC + FreeBSD 11.0 Stable - stat.h does not have vm_ooffset_t definition
Message-ID:  <163343D9-0396-4468-B666-DD9D8AEE176B@FreeBSD.org>
In-Reply-To: <alpine.LSU.2.21.1704291846170.2928@anthias.pfeifer.com>
References:  <8316fd8e-056d-32a1-1e59-414269476190@astart.com> <95c6f08e-0cf7-f0f3-8b19-29e03b3f4f96@FreeBSD.org> <39149f1c-d939-5c60-a0c3-ab76fa0f750b@astart.com> <f264ebcc-4cd4-4541-f19d-227cde74b3ba@FreeBSD.org> <fb7749f8-193a-2cdc-db8f-9ca046a0b94e@astart.com> <22bfc9eb-f037-cb1e-931f-a995e98093e2@FreeBSD.org> <alpine.LSU.2.21.1704291846170.2928@anthias.pfeifer.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--Apple-Mail=_317ADE9A-964D-4CA2-9BB9-FD90F573CFB4
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

On 29 Apr 2017, at 19:00, Gerald Pfeifer <gerald@pfeifer.com> wrote:
>=20
> On Thu, 27 Apr 2017, Jung-uk Kim wrote:
>>>>>>> I found the problem,  but I do not know how to resolve this.  =
When you
>>>>>>> install the GCC compiler from the PKG repository it appears to =
create a
>>>>>>> modified set of include files from the system (default?) include =
files
>>>>>>> (/usr/include).  However, when the modified =
/usr/include/sys/types.h
>>>>>>> file is created, the typedef for vm_ooffset_t is modified,  and =
there is
>>>>>>> no reference to __vm_ooffset_t that the compiler can resolve.
>>>>>>>=20
>>>>>>> < typedef       __int64_t       vm_ooffset_t;
>>>>>>> ---
>>>>>>>> typedef       __vm_ooffset_t  vm_ooffset_t;
>>>>>> ...
>>>>>> You have to rebuild lang/gcc from the ports tree to fix this =
problem.
>>>>>>=20
>>>>>> =
https://lists.freebsd.org/pipermail/freebsd-current/2017-February/064937.h=
tml
>>>>> Does this mean that the GCC port/package needs to be updated?  If =
so,
>>>>> should I file a PR report on this issue?
>>>>> I (temporarily) fixed this problem by hand editting the modified =
types.h
>>>>> file and things seem to work.
>>>> I already wrote a patch (attached). :-)
>> If the maintainer (gerald) approves.  CC'd.
>=20
> Thanks for bringing this to my attention.
>=20
> Can you please help me understand why this is necessary?

This is because gcc's fixincludes process makes copies of certain system
headers (in this case, /usr/include/sys/types.h) with slight
modifications.  Then, it places the directory containing the modified
headers at the front of the include search path.  So far so good.

Now, whenever sys/types.h is updated, as happened with the vm_ooffset_t
change, the header in gcc's own preferred directory might not match the
definitions which are expected, leading to compilation errors.


> If the
> port/package is builts from scratch, does this trigger the problem?

Yes, basically you need to rebuild all gcc ports from scratch, whenever
you update any system header that matches gcc's list of files it wants
to modify.

But getting those errors in the first place can be very confusing to an
end-user.  And having to rebuild all those ports might be a burden.

As some people pointed out, simply moving away or deleting the directory
with fixed includes appears to work around the problems.  So maybe the
question is if gcc really needs to modify those headers at all?

I have looked at gcc's build system a bit, but it does not seem very
easy to disable the fixincludes step.  I guess that is simply not
supported.

So in that case, if Jung-uk's solution works, it is probably the best
way forward, and it can even be upstreamed.  Jung-uk, how does your
patch handle an updated header under /usr/include which contains e.g.
new definitions, which are not in the fixed includes directory?

-Dimitry


--Apple-Mail=_317ADE9A-964D-4CA2-9BB9-FD90F573CFB4
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.30

iEYEARECAAYFAlkE05MACgkQsF6jCi4glqNmuQCgq5cMhVZDsg/ILOL5rbZ/A1zw
284AoMiCtZPE8w1NZBRqf26Po4eM+e8+
=+cbN
-----END PGP SIGNATURE-----

--Apple-Mail=_317ADE9A-964D-4CA2-9BB9-FD90F573CFB4--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?163343D9-0396-4468-B666-DD9D8AEE176B>