Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Jun 2017 00:55:00 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        Dimitry Andric <dim@FreeBSD.org>
Cc:        freebsd-arm <freebsd-arm@freebsd.org>, FreeBSD Toolchain <freebsd-toolchain@freebsd.org>
Subject:   Re: arm64 on head -r320059 (e.g.) fails buildkernel with only kernel-toolchain first (not buildworld) [Bugzilla 220125]
Message-ID:  <1AF272E5-5715-45F2-955B-B2D85B7F08B0@dsl-only.net>
In-Reply-To: <CB7359D7-4BFE-45A8-838A-AA69B9450398@FreeBSD.org>
References:  <9B6857F6-FD8E-43B7-B142-050E51EE68AB@dsl-only.net> <CB7359D7-4BFE-45A8-838A-AA69B9450398@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2017-Jun-18, at 11:57 PM, Dimitry Andric <dim at FreeBSD.org> wrote:

> On 19 Jun 2017, at 08:46, Mark Millard <markmi at dsl-only.net> wrote:
>>=20
>> This is a variant of the wording in bugzilla 220125:
>>=20
>> Unless buildworld (not just kernel-toolchain) is used before
>> buildkernel the result for arm64 is:
>>=20
>> --- armv8_crypto_wrap.o ---
>> In file included from =
/usr/src/sys/crypto/armv8/armv8_crypto_wrap.c:46:
>> =
/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp/usr/bin/../lib/clang=
/4.0.0/include/arm_neon.h:31:10:
>> fatal error: 'stdint.h' file not found
> ...
>> A) kernel-toolchain needs to establish a stdint.h
>>  that would be found
>> vs.
>> B) arm_neon.h needs to avoid needing stdint.h
>>  (presumes armv8_crypto_wrap.c is correct to
>>   include arm_neon.h )

(B) variant: Possibly finding a distinct stdint.h
when there is no $(WORLDTMP} tied one to be found?
(Avoiding needing the specific stdint.h that is
used when buildworld is used first.) Look in some
new place as a last resort (extended search path
list)?

>> at least if the kernel-toolchain then buildkernel
>> sequence is to be supported for arm64.
>=20
> Solution A is problematic because it then would require to install
> headers into ${WORLDTMP}.  This is what buildworld does.

Is there anyplace outside of $(WORLDTMP} where an alternate
stdint.h could be made to be found if the ${WORLDTMP} places
do not have one to find? (The include notation is currently
<stdint.h> .)

Might some place related to (using my example full path
just for illustration, showing post-subsitutions):

=
/usr/obj/cortexA53dbg_clang/arm64.aarch64/usr/src/tmp/usr/bin/../lib/clang=
/4.0.0/include/

be allowed have its own "failover" stdint.h to find as a
last resort?

(I do not claim this is well thought out.)

> Solution B is problematic because arm_neon.h uses stdint.h types
> extensively.

The instance of the file name need not be from the usual
place when there is no $(WORLDTMP} tied stdint.h to find?
So a different stdint.h instead of no stdint.h ?

> Maybe the solution with the least amount of work is to provide a
> kernel-specific wrapper header with the stdint.h types.

With also avoiding the #include <stdint.h> that would
otherwise fail?

> Otherwise, just use buildworld before buildkernel.

For now buildworld first is what I'd do for arm64.

=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?1AF272E5-5715-45F2-955B-B2D85B7F08B0>