Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Feb 2023 15:09:24 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        David Chisnall <theraven@FreeBSD.org>
Cc:        FreeBSD Hackers <freebsd-hackers@freebsd.org>, shawn.webb@hardenedbsd.org, Dimitry Andric <dim@FreeBSD.org>
Subject:   Re: CFT: snmalloc as libc malloc (the source_location issue)
Message-ID:  <DA5C06D1-4649-40D2-858E-B96AE2A80B94@yahoo.com>
In-Reply-To: <F363CC44-831B-41E8-BB82-564144C48AA4@FreeBSD.org>
References:  <22F8AD1A-C1F9-48FA-BCED-E165E2DA5260@yahoo.com> <1982263E-57E0-4709-AAB3-DBB4F75C7546@yahoo.com> <96652C51-EAB7-46C7-9039-557A5DCDAB75@yahoo.com> <F363CC44-831B-41E8-BB82-564144C48AA4@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
[Previously noted in another exchange, I note the snmalloc
source issue in reply to this message as well, to hopefully
avoid confusions when someone reads this particular
exchange.]

On Feb 11, 2023, at 09:13, David Chisnall <theraven@FreeBSD.org> wrote:

> On 10 Feb 2023, at 21:34, Mark Millard <marklmi@yahoo.com> wrote:
>>=20
>> # find / -name source_location -print | more
>> =
/usr/obj/DESTDIRs/main-amd64-chroot/usr/local/lib/gcc12/include/c++/experi=
mental/source_location
>> =
/usr/obj/DESTDIRs/main-amd64-chroot/usr/local/lib/gcc12/include/c++/source=
_location
>> /usr/local/lib/gcc12/include/c++/experimental/source_location
>> /usr/local/lib/gcc12/include/c++/source_location
>>=20
>> So, none for FreeBSD and its llvm15.
>>=20
>> This makes sense, https://libcxx.llvm.org/Status/Cxx20.html shows:
>>=20
>> P1208R6 LWG Adopt source_location for C++20 Cologne Complete 16.0
>>=20
>> So, likely FreeBSD will not have this until it progresses to
>> LLVM16 . It just changed to LLVM15 in main [so: FreeBSD 14].
>=20
> The include of source_location is guarded under an #if __has_include,

I do not see such when I look at:

=
https://github.com/microsoft/snmalloc/blob/main/src/snmalloc/ds_core/defin=
es.h

What I see is version checking that is based on llvm15 and above
having source_location :

#if (defined(__GNUC__) && !defined(__clang__) && __GNUC__ >=3D 11) || \
(defined(__clang__) && __clang_major__ >=3D 15)
# include <source_location>
. . .

__clang_major__ >=3D 16 would be appropriate, based on:

https://libcxx.llvm.org/Status/Cxx20.html

Other tests, less dependent on version checking, might
work instead.

> it should be used only if it exists.  If it doesn=E2=80=99t, there=E2=80=
=99s a stub implementation.  If you have GCC includes in your include =
path, is it possible that it=E2=80=99s finding a source_location that is =
then guarded behind a check for a compiler builtin that clang doesn=E2=80=99=
t have?

=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DA5C06D1-4649-40D2-858E-B96AE2A80B94>