Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Mar 2021 21:00:49 +0100
From:      =?UTF-8?B?VMSzbA==?= Coosemans <tijl@FreeBSD.org>
To:        Dimitry Andric <dim@FreeBSD.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>, gerald@FreeBSD.org, kib@FreeBSD.org
Subject:   Re: git: 9097e3cbcac4 - main - Partially revert libcxxrt changes to avoid _Unwind_Exception change
Message-ID:  <20210314210039.2da1b9ba@FreeBSD.org>
In-Reply-To: <BC83628A-A8EF-4964-BD0E-9F9738BFFF8C@FreeBSD.org>
References:  <202103131354.12DDsnKR065154@gitrepo.freebsd.org> <20210313183812.77b74819@FreeBSD.org> <BC83628A-A8EF-4964-BD0E-9F9738BFFF8C@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 14 Mar 2021 01:15:11 +0100 Dimitry Andric <dim@FreeBSD.org>
wrote:
> On 13 Mar 2021, at 18:38, T=C4=B3l Coosemans <tijl@FreeBSD.org> wrote:
>> On Sat, 13 Mar 2021 13:54:49 GMT Dimitry Andric <dim@FreeBSD.org> wrote:=
 =20
>>> The branch main has been updated by dim:
>>>=20
>>> URL: https://cgit.FreeBSD.org/src/commit/?id=3D9097e3cbcac455eb0dedd097=
d8d5548c72568d0a
>>>=20
>>> commit 9097e3cbcac455eb0dedd097d8d5548c72568d0a
>>> Author:     Dimitry Andric <dim@FreeBSD.org>
>>> AuthorDate: 2021-03-13 13:54:24 +0000
>>> Commit:     Dimitry Andric <dim@FreeBSD.org>
>>> CommitDate: 2021-03-13 13:54:24 +0000
>>>=20
>>>    Partially revert libcxxrt changes to avoid _Unwind_Exception change =
=20
> ...
>>> --- a/contrib/libcxxrt/unwind-itanium.h
>>> +++ b/contrib/libcxxrt/unwind-itanium.h
>>> @@ -79,12 +79,9 @@ struct _Unwind_Exception
>>>   {
>>>     uint64_t exception_class;
>>>     _Unwind_Exception_Cleanup_Fn exception_cleanup;
>>> -    uintptr_t private_1;
>>> -    uintptr_t private_2;
>>> -#if __SIZEOF_POINTER__ =3D=3D 4
>>> -    uint32_t reserved[3];
>>> -#endif
>>> -  } __attribute__((__aligned__));
>>> +    unsigned long private_1;
>>> +    unsigned long private_2;
>>> +  } ; =20
>>=20
>> Shouldn't these definitions be the same as the ones in GCC? =20
>=20
> If you want to keep the ABI compatible with what it was, no. Otherwise,
> you could consider it. But for what gain?

Hmm, the ABI must have been broken by the switch to libcxxrt years ago.
In that case there's ABI breakage no matter which version you choose.
Maybe kib can help decide which is the lesser evil.

In any case I do think the definitions in GCC should match the ones in
base.  Sometimes libraries compiled with GCC are combined with libraries
compiled with Clang in one process.  So, code compiled with GCC unwind.h
should work with base system libgcc_s and code compiled with libcxxrt
unwind.h should work with GCC libgcc_s.  Maybe the GCC ports can be
patched to match the base system but I'm not sure upstream would accept
such a patch, especially since upstream libcxxrt has already become
compatible.



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