* [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
@ 2023-09-10 13:56 François Dumont
2023-09-10 15:36 ` Sam James
2023-09-11 11:51 ` Jonathan Wakely
0 siblings, 2 replies; 11+ messages in thread
From: François Dumont @ 2023-09-10 13:56 UTC (permalink / raw)
To: libstdc++; +Cc: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 1349 bytes --]
Following confirmation of the fix by TC here is the patch where I'm
simply adding a 'constexpr' on _M_next().
Please let me know this ChangeLog entry is correct. I would prefer this
patch to be assigned to 'TC' with me as co-author but I don't know how
to do such a thing. Unless I need to change my user git identity to do so ?
libstdc++: Add constexpr qualification to _Hash_node::_M_next()
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
changed _Hash_node_value_base to no longer derive from
_Hash_node_base, which means
that its member functions expect _M_storage to be at a different
offset. So explosions
result if an out-of-line definition is emitted for any of the
member functions (say,
in a non-optimized build) and the resulting object file is then
linked with code built
using older version of GCC/libstdc++.
libstdc++-v3/ChangeLog:
* include/bits/hashtable_policy.h
(_Hash_node_value_base<>::_M_valptr(),
_Hash_node_value_base<>::_M_v())
Add [[__gnu__::__always_inline__]].
(_Hash_node<>::_M_next()): Add constexpr.
Co-authored-by: TC <rs2740@gmail.com>
Ok to commit and backport to GCC 11, 12, 13 branches ?
François
[-- Attachment #2: pr111050.patch --]
[-- Type: text/x-patch, Size: 1096 bytes --]
diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h
index 347d468ea86..101c5eb639c 100644
--- a/libstdc++-v3/include/bits/hashtable_policy.h
+++ b/libstdc++-v3/include/bits/hashtable_policy.h
@@ -327,18 +327,22 @@ namespace __detail
__gnu_cxx::__aligned_buffer<_Value> _M_storage;
+ [[__gnu__::__always_inline__]]
_Value*
_M_valptr() noexcept
{ return _M_storage._M_ptr(); }
+ [[__gnu__::__always_inline__]]
const _Value*
_M_valptr() const noexcept
{ return _M_storage._M_ptr(); }
+ [[__gnu__::__always_inline__]]
_Value&
_M_v() noexcept
{ return *_M_valptr(); }
+ [[__gnu__::__always_inline__]]
const _Value&
_M_v() const noexcept
{ return *_M_valptr(); }
@@ -372,7 +376,7 @@ namespace __detail
: _Hash_node_base
, _Hash_node_value<_Value, _Cache_hash_code>
{
- _Hash_node*
+ constexpr _Hash_node*
_M_next() const noexcept
{ return static_cast<_Hash_node*>(this->_M_nxt); }
};
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-10 13:56 [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050] François Dumont
@ 2023-09-10 15:36 ` Sam James
2023-09-11 11:51 ` Jonathan Wakely
1 sibling, 0 replies; 11+ messages in thread
From: Sam James @ 2023-09-10 15:36 UTC (permalink / raw)
To: François Dumont; +Cc: libstdc++, gcc-patches
François Dumont via Gcc-patches <gcc-patches@gcc.gnu.org> writes:
> Following confirmation of the fix by TC here is the patch where I'm
> simply adding a 'constexpr' on _M_next().
>
> Please let me know this ChangeLog entry is correct. I would prefer
> this patch to be assigned to 'TC' with me as co-author but I don't
> know how to do such a thing. Unless I need to change my user git
> identity to do so ?
git commit --author="TC <email.here>" --amend
>
> libstdc++: Add constexpr qualification to _Hash_node::_M_next()
>
> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
> changed _Hash_node_value_base to no longer derive from
> _Hash_node_base, which means
> that its member functions expect _M_storage to be at a different
> offset. So explosions
> result if an out-of-line definition is emitted for any of the
> member functions (say,
> in a non-optimized build) and the resulting object file is then
> linked with code built
> using older version of GCC/libstdc++.
>
> libstdc++-v3/ChangeLog:
>
> * include/bits/hashtable_policy.h
> (_Hash_node_value_base<>::_M_valptr(),
> _Hash_node_value_base<>::_M_v())
> Add [[__gnu__::__always_inline__]].
> (_Hash_node<>::_M_next()): Add constexpr.
>
> Co-authored-by: TC <rs2740@gmail.com>
>
> Ok to commit and backport to GCC 11, 12, 13 branches ?
>
> François
>
> [2. text/x-patch; pr111050.patch]...
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-10 13:56 [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050] François Dumont
2023-09-10 15:36 ` Sam James
@ 2023-09-11 11:51 ` Jonathan Wakely
2023-09-11 17:19 ` François Dumont
1 sibling, 1 reply; 11+ messages in thread
From: Jonathan Wakely @ 2023-09-11 11:51 UTC (permalink / raw)
To: François Dumont; +Cc: libstdc++, gcc-patches, rs2740
On Sun, 10 Sept 2023 at 14:57, François Dumont via Libstdc++
<libstdc++@gcc.gnu.org> wrote:
>
> Following confirmation of the fix by TC here is the patch where I'm
> simply adding a 'constexpr' on _M_next().
>
> Please let me know this ChangeLog entry is correct. I would prefer this
> patch to be assigned to 'TC' with me as co-author but I don't know how
> to do such a thing. Unless I need to change my user git identity to do so ?
Sam already explained that, but please check with Tim how he wants to
be credited, if at all. He doesn't have a copyright assignment, and
hasn't added a DCO sign-off to the patch, but it's small enough to not
need it as this is the first contribution credited to him.
>
> libstdc++: Add constexpr qualification to _Hash_node::_M_next()
What has this constexpr addition got to do with the ABI change and the
always_inline attributes?
It certainly doesn't seem like it should be the summary line of the
git commit message.
>
> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
> changed _Hash_node_value_base to no longer derive from
> _Hash_node_base, which means
> that its member functions expect _M_storage to be at a different
> offset. So explosions
> result if an out-of-line definition is emitted for any of the
> member functions (say,
> in a non-optimized build) and the resulting object file is then
> linked with code built
> using older version of GCC/libstdc++.
>
> libstdc++-v3/ChangeLog:
>
> * include/bits/hashtable_policy.h
> (_Hash_node_value_base<>::_M_valptr(),
> _Hash_node_value_base<>::_M_v())
> Add [[__gnu__::__always_inline__]].
> (_Hash_node<>::_M_next()): Add constexpr.
>
> Co-authored-by: TC <rs2740@gmail.com>
>
> Ok to commit and backport to GCC 11, 12, 13 branches ?
>
> François
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-11 11:51 ` Jonathan Wakely
@ 2023-09-11 17:19 ` François Dumont
2023-09-12 16:09 ` Jonathan Wakely
0 siblings, 1 reply; 11+ messages in thread
From: François Dumont @ 2023-09-11 17:19 UTC (permalink / raw)
To: Jonathan Wakely, rs2740; +Cc: libstdc++, gcc-patches
On 11/09/2023 13:51, Jonathan Wakely wrote:
> On Sun, 10 Sept 2023 at 14:57, François Dumont via Libstdc++
> <libstdc++@gcc.gnu.org> wrote:
>> Following confirmation of the fix by TC here is the patch where I'm
>> simply adding a 'constexpr' on _M_next().
>>
>> Please let me know this ChangeLog entry is correct. I would prefer this
>> patch to be assigned to 'TC' with me as co-author but I don't know how
>> to do such a thing. Unless I need to change my user git identity to do so ?
> Sam already explained that, but please check with Tim how he wants to
> be credited, if at all. He doesn't have a copyright assignment, and
> hasn't added a DCO sign-off to the patch, but it's small enough to not
> need it as this is the first contribution credited to him.
>
>
>> libstdc++: Add constexpr qualification to _Hash_node::_M_next()
> What has this constexpr addition got to do with the ABI change and the
> always_inline attributes?
>
> It certainly doesn't seem like it should be the summary line of the
> git commit message.
Oops, sorry, that's what I had started to do before Tim submitted anything.
Here is latest version:
Author: TC <rs2740@gmail.com>
Date: Wed Sep 6 19:31:55 2023 +0200
libstdc++: Force inline on _Hash_node_value_base methods to fix abi
(PR111050)
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
changed _Hash_node_value_base to no longer derive from
_Hash_node_base, which means
that its member functions expect _M_storage to be at a different
offset. So explosions
result if an out-of-line definition is emitted for any of the
member functions (say,
in a non-optimized build) and the resulting object file is then
linked with code built
using older version of GCC/libstdc++.
libstdc++-v3/ChangeLog:
PR libstdc++/111050
* include/bits/hashtable_policy.h
(_Hash_node_value_base<>::_M_valptr(),
_Hash_node_value_base<>::_M_v())
Add [[__gnu__::__always_inline__]].
(_Hash_node<>::_M_next()): Add constexpr.
Co-authored-by: François Dumont <fdumont@gcc.gnu.org>
Ok for you TC (Tim ?) ?
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-11 17:19 ` François Dumont
@ 2023-09-12 16:09 ` Jonathan Wakely
2023-09-14 4:46 ` François Dumont
0 siblings, 1 reply; 11+ messages in thread
From: Jonathan Wakely @ 2023-09-12 16:09 UTC (permalink / raw)
To: François Dumont; +Cc: rs2740, libstdc++, gcc-patches
On Mon, 11 Sept 2023 at 18:19, François Dumont <frs.dumont@gmail.com> wrote:
>
>
> On 11/09/2023 13:51, Jonathan Wakely wrote:
> > On Sun, 10 Sept 2023 at 14:57, François Dumont via Libstdc++
> > <libstdc++@gcc.gnu.org> wrote:
> >> Following confirmation of the fix by TC here is the patch where I'm
> >> simply adding a 'constexpr' on _M_next().
> >>
> >> Please let me know this ChangeLog entry is correct. I would prefer this
> >> patch to be assigned to 'TC' with me as co-author but I don't know how
> >> to do such a thing. Unless I need to change my user git identity to do so ?
> > Sam already explained that, but please check with Tim how he wants to
> > be credited, if at all. He doesn't have a copyright assignment, and
> > hasn't added a DCO sign-off to the patch, but it's small enough to not
> > need it as this is the first contribution credited to him.
> >
> >
> >> libstdc++: Add constexpr qualification to _Hash_node::_M_next()
> > What has this constexpr addition got to do with the ABI change and the
> > always_inline attributes?
> >
> > It certainly doesn't seem like it should be the summary line of the
> > git commit message.
>
> Oops, sorry, that's what I had started to do before Tim submitted anything.
>
> Here is latest version:
No patch attached, and the ChangeLog below still mentions the constexpr.
I've pinged Tim via another channel to ask him about the author attribution.
>
> Author: TC <rs2740@gmail.com>
> Date: Wed Sep 6 19:31:55 2023 +0200
>
> libstdc++: Force inline on _Hash_node_value_base methods to fix abi
> (PR111050)
>
> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
> changed _Hash_node_value_base to no longer derive from
> _Hash_node_base, which means
> that its member functions expect _M_storage to be at a different
> offset. So explosions
> result if an out-of-line definition is emitted for any of the
> member functions (say,
> in a non-optimized build) and the resulting object file is then
> linked with code built
> using older version of GCC/libstdc++.
>
> libstdc++-v3/ChangeLog:
>
> PR libstdc++/111050
> * include/bits/hashtable_policy.h
> (_Hash_node_value_base<>::_M_valptr(),
> _Hash_node_value_base<>::_M_v())
> Add [[__gnu__::__always_inline__]].
> (_Hash_node<>::_M_next()): Add constexpr.
>
> Co-authored-by: François Dumont <fdumont@gcc.gnu.org>
>
> Ok for you TC (Tim ?) ?
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-12 16:09 ` Jonathan Wakely
@ 2023-09-14 4:46 ` François Dumont
2023-09-27 4:44 ` François Dumont
0 siblings, 1 reply; 11+ messages in thread
From: François Dumont @ 2023-09-14 4:46 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: rs2740, libstdc++, gcc-patches
[-- Attachment #1: Type: text/plain, Size: 3587 bytes --]
Author: TC <rs2740@gmail.com>
Date: Wed Sep 6 19:31:55 2023 +0200
libstdc++: Force _Hash_node_value_base methods inline to fix abi
(PR111050)
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
changed _Hash_node_value_base to no longer derive from
_Hash_node_base, which means
that its member functions expect _M_storage to be at a different
offset. So explosions
result if an out-of-line definition is emitted for any of the
member functions (say,
in a non-optimized build) and the resulting object file is then
linked with code built
using older version of GCC/libstdc++.
libstdc++-v3/ChangeLog:
PR libstdc++/111050
* include/bits/hashtable_policy.h
(_Hash_node_value_base<>::_M_valptr(),
_Hash_node_value_base<>::_M_v())
Add [[__gnu__::__always_inline__]].
Ok to commit ?
On 12/09/2023 18:09, Jonathan Wakely wrote:
> On Mon, 11 Sept 2023 at 18:19, François Dumont <frs.dumont@gmail.com> wrote:
>>
>> On 11/09/2023 13:51, Jonathan Wakely wrote:
>>> On Sun, 10 Sept 2023 at 14:57, François Dumont via Libstdc++
>>> <libstdc++@gcc.gnu.org> wrote:
>>>> Following confirmation of the fix by TC here is the patch where I'm
>>>> simply adding a 'constexpr' on _M_next().
>>>>
>>>> Please let me know this ChangeLog entry is correct. I would prefer this
>>>> patch to be assigned to 'TC' with me as co-author but I don't know how
>>>> to do such a thing. Unless I need to change my user git identity to do so ?
>>> Sam already explained that, but please check with Tim how he wants to
>>> be credited, if at all. He doesn't have a copyright assignment, and
>>> hasn't added a DCO sign-off to the patch, but it's small enough to not
>>> need it as this is the first contribution credited to him.
>>>
>>>
>>>> libstdc++: Add constexpr qualification to _Hash_node::_M_next()
>>> What has this constexpr addition got to do with the ABI change and the
>>> always_inline attributes?
>>>
>>> It certainly doesn't seem like it should be the summary line of the
>>> git commit message.
>> Oops, sorry, that's what I had started to do before Tim submitted anything.
>>
>> Here is latest version:
> No patch attached, and the ChangeLog below still mentions the constexpr.
>
> I've pinged Tim via another channel to ask him about the author attribution.
>
>
>> Author: TC <rs2740@gmail.com>
>> Date: Wed Sep 6 19:31:55 2023 +0200
>>
>> libstdc++: Force inline on _Hash_node_value_base methods to fix abi
>> (PR111050)
>>
>> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
>> changed _Hash_node_value_base to no longer derive from
>> _Hash_node_base, which means
>> that its member functions expect _M_storage to be at a different
>> offset. So explosions
>> result if an out-of-line definition is emitted for any of the
>> member functions (say,
>> in a non-optimized build) and the resulting object file is then
>> linked with code built
>> using older version of GCC/libstdc++.
>>
>> libstdc++-v3/ChangeLog:
>>
>> PR libstdc++/111050
>> * include/bits/hashtable_policy.h
>> (_Hash_node_value_base<>::_M_valptr(),
>> _Hash_node_value_base<>::_M_v())
>> Add [[__gnu__::__always_inline__]].
>> (_Hash_node<>::_M_next()): Add constexpr.
>>
>> Co-authored-by: François Dumont <fdumont@gcc.gnu.org>
>>
>> Ok for you TC (Tim ?) ?
>>
>>
[-- Attachment #2: pr111050.patch --]
[-- Type: text/x-patch, Size: 831 bytes --]
diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h
index 347d468ea86..86b32fb15f2 100644
--- a/libstdc++-v3/include/bits/hashtable_policy.h
+++ b/libstdc++-v3/include/bits/hashtable_policy.h
@@ -327,18 +327,22 @@ namespace __detail
__gnu_cxx::__aligned_buffer<_Value> _M_storage;
+ [[__gnu__::__always_inline__]]
_Value*
_M_valptr() noexcept
{ return _M_storage._M_ptr(); }
+ [[__gnu__::__always_inline__]]
const _Value*
_M_valptr() const noexcept
{ return _M_storage._M_ptr(); }
+ [[__gnu__::__always_inline__]]
_Value&
_M_v() noexcept
{ return *_M_valptr(); }
+ [[__gnu__::__always_inline__]]
const _Value&
_M_v() const noexcept
{ return *_M_valptr(); }
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-14 4:46 ` François Dumont
@ 2023-09-27 4:44 ` François Dumont
2023-09-28 16:18 ` Jonathan Wakely
0 siblings, 1 reply; 11+ messages in thread
From: François Dumont @ 2023-09-27 4:44 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: rs2740, libstdc++, gcc-patches
Still no chance to get feedback from TC ? Maybe I can commit the below
then ?
AFAICS on gcc mailing list several gcc releases were done recently, too
late.
On 14/09/2023 06:46, François Dumont wrote:
> Author: TC <rs2740@gmail.com>
> Date: Wed Sep 6 19:31:55 2023 +0200
>
> libstdc++: Force _Hash_node_value_base methods inline to fix abi
> (PR111050)
>
> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
>
> changed _Hash_node_value_base to no longer derive from
> _Hash_node_base, which means
> that its member functions expect _M_storage to be at a different
> offset. So explosions
> result if an out-of-line definition is emitted for any of the
> member functions (say,
> in a non-optimized build) and the resulting object file is then
> linked with code built
> using older version of GCC/libstdc++.
>
> libstdc++-v3/ChangeLog:
>
> PR libstdc++/111050
> * include/bits/hashtable_policy.h
> (_Hash_node_value_base<>::_M_valptr(),
> _Hash_node_value_base<>::_M_v())
> Add [[__gnu__::__always_inline__]].
>
> Ok to commit ?
>
> On 12/09/2023 18:09, Jonathan Wakely wrote:
>> On Mon, 11 Sept 2023 at 18:19, François Dumont <frs.dumont@gmail.com>
>> wrote:
>>>
>>> On 11/09/2023 13:51, Jonathan Wakely wrote:
>>>> On Sun, 10 Sept 2023 at 14:57, François Dumont via Libstdc++
>>>> <libstdc++@gcc.gnu.org> wrote:
>>>>> Following confirmation of the fix by TC here is the patch where I'm
>>>>> simply adding a 'constexpr' on _M_next().
>>>>>
>>>>> Please let me know this ChangeLog entry is correct. I would prefer
>>>>> this
>>>>> patch to be assigned to 'TC' with me as co-author but I don't know
>>>>> how
>>>>> to do such a thing. Unless I need to change my user git identity
>>>>> to do so ?
>>>> Sam already explained that, but please check with Tim how he wants to
>>>> be credited, if at all. He doesn't have a copyright assignment, and
>>>> hasn't added a DCO sign-off to the patch, but it's small enough to not
>>>> need it as this is the first contribution credited to him.
>>>>
>>>>
>>>>> libstdc++: Add constexpr qualification to
>>>>> _Hash_node::_M_next()
>>>> What has this constexpr addition got to do with the ABI change and the
>>>> always_inline attributes?
>>>>
>>>> It certainly doesn't seem like it should be the summary line of the
>>>> git commit message.
>>> Oops, sorry, that's what I had started to do before Tim submitted
>>> anything.
>>>
>>> Here is latest version:
>> No patch attached, and the ChangeLog below still mentions the constexpr.
>>
>> I've pinged Tim via another channel to ask him about the author
>> attribution.
>>
>>
>>> Author: TC <rs2740@gmail.com>
>>> Date: Wed Sep 6 19:31:55 2023 +0200
>>>
>>> libstdc++: Force inline on _Hash_node_value_base methods to
>>> fix abi
>>> (PR111050)
>>>
>>> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
>>>
>>> changed _Hash_node_value_base to no longer derive from
>>> _Hash_node_base, which means
>>> that its member functions expect _M_storage to be at a different
>>> offset. So explosions
>>> result if an out-of-line definition is emitted for any of the
>>> member functions (say,
>>> in a non-optimized build) and the resulting object file is then
>>> linked with code built
>>> using older version of GCC/libstdc++.
>>>
>>> libstdc++-v3/ChangeLog:
>>>
>>> PR libstdc++/111050
>>> * include/bits/hashtable_policy.h
>>> (_Hash_node_value_base<>::_M_valptr(),
>>> _Hash_node_value_base<>::_M_v())
>>> Add [[__gnu__::__always_inline__]].
>>> (_Hash_node<>::_M_next()): Add constexpr.
>>>
>>> Co-authored-by: François Dumont <fdumont@gcc.gnu.org>
>>>
>>> Ok for you TC (Tim ?) ?
>>>
>>>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-27 4:44 ` François Dumont
@ 2023-09-28 16:18 ` Jonathan Wakely
2023-09-28 17:25 ` François Dumont
0 siblings, 1 reply; 11+ messages in thread
From: Jonathan Wakely @ 2023-09-28 16:18 UTC (permalink / raw)
To: François Dumont; +Cc: rs2740, libstdc++, gcc-patches
On Wed, 27 Sept 2023 at 05:44, François Dumont <frs.dumont@gmail.com> wrote:
>
> Still no chance to get feedback from TC ? Maybe I can commit the below
> then ?
I've heard back from Tim now. Please use "Tim Song
<t.canens.cpp@gmail.com>" as the author.
You can change the commit again using git commit --amend --author "Tim
Song <t.canens.cpp@gmail.com>"
OK for trunk with that change - thanks for waiting.
>
> AFAICS on gcc mailing list several gcc releases were done recently, too
> late.
There have been no releases this month, so the delay hasn't caused any problems.
>
>
> On 14/09/2023 06:46, François Dumont wrote:
> > Author: TC <rs2740@gmail.com>
> > Date: Wed Sep 6 19:31:55 2023 +0200
> >
> > libstdc++: Force _Hash_node_value_base methods inline to fix abi
> > (PR111050)
> >
> > https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
> >
> > changed _Hash_node_value_base to no longer derive from
> > _Hash_node_base, which means
> > that its member functions expect _M_storage to be at a different
> > offset. So explosions
> > result if an out-of-line definition is emitted for any of the
> > member functions (say,
> > in a non-optimized build) and the resulting object file is then
> > linked with code built
> > using older version of GCC/libstdc++.
> >
> > libstdc++-v3/ChangeLog:
> >
> > PR libstdc++/111050
> > * include/bits/hashtable_policy.h
> > (_Hash_node_value_base<>::_M_valptr(),
> > _Hash_node_value_base<>::_M_v())
> > Add [[__gnu__::__always_inline__]].
> >
> > Ok to commit ?
> >
> > On 12/09/2023 18:09, Jonathan Wakely wrote:
> >> On Mon, 11 Sept 2023 at 18:19, François Dumont <frs.dumont@gmail.com>
> >> wrote:
> >>>
> >>> On 11/09/2023 13:51, Jonathan Wakely wrote:
> >>>> On Sun, 10 Sept 2023 at 14:57, François Dumont via Libstdc++
> >>>> <libstdc++@gcc.gnu.org> wrote:
> >>>>> Following confirmation of the fix by TC here is the patch where I'm
> >>>>> simply adding a 'constexpr' on _M_next().
> >>>>>
> >>>>> Please let me know this ChangeLog entry is correct. I would prefer
> >>>>> this
> >>>>> patch to be assigned to 'TC' with me as co-author but I don't know
> >>>>> how
> >>>>> to do such a thing. Unless I need to change my user git identity
> >>>>> to do so ?
> >>>> Sam already explained that, but please check with Tim how he wants to
> >>>> be credited, if at all. He doesn't have a copyright assignment, and
> >>>> hasn't added a DCO sign-off to the patch, but it's small enough to not
> >>>> need it as this is the first contribution credited to him.
> >>>>
> >>>>
> >>>>> libstdc++: Add constexpr qualification to
> >>>>> _Hash_node::_M_next()
> >>>> What has this constexpr addition got to do with the ABI change and the
> >>>> always_inline attributes?
> >>>>
> >>>> It certainly doesn't seem like it should be the summary line of the
> >>>> git commit message.
> >>> Oops, sorry, that's what I had started to do before Tim submitted
> >>> anything.
> >>>
> >>> Here is latest version:
> >> No patch attached, and the ChangeLog below still mentions the constexpr.
> >>
> >> I've pinged Tim via another channel to ask him about the author
> >> attribution.
> >>
> >>
> >>> Author: TC <rs2740@gmail.com>
> >>> Date: Wed Sep 6 19:31:55 2023 +0200
> >>>
> >>> libstdc++: Force inline on _Hash_node_value_base methods to
> >>> fix abi
> >>> (PR111050)
> >>>
> >>> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=1b6f0476837205932613ddb2b3429a55c26c409d
> >>>
> >>> changed _Hash_node_value_base to no longer derive from
> >>> _Hash_node_base, which means
> >>> that its member functions expect _M_storage to be at a different
> >>> offset. So explosions
> >>> result if an out-of-line definition is emitted for any of the
> >>> member functions (say,
> >>> in a non-optimized build) and the resulting object file is then
> >>> linked with code built
> >>> using older version of GCC/libstdc++.
> >>>
> >>> libstdc++-v3/ChangeLog:
> >>>
> >>> PR libstdc++/111050
> >>> * include/bits/hashtable_policy.h
> >>> (_Hash_node_value_base<>::_M_valptr(),
> >>> _Hash_node_value_base<>::_M_v())
> >>> Add [[__gnu__::__always_inline__]].
> >>> (_Hash_node<>::_M_next()): Add constexpr.
> >>>
> >>> Co-authored-by: François Dumont <fdumont@gcc.gnu.org>
> >>>
> >>> Ok for you TC (Tim ?) ?
> >>>
> >>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-28 16:18 ` Jonathan Wakely
@ 2023-09-28 17:25 ` François Dumont
2023-09-29 9:53 ` Jonathan Wakely
0 siblings, 1 reply; 11+ messages in thread
From: François Dumont @ 2023-09-28 17:25 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: rs2740, libstdc++, gcc-patches
On 28/09/2023 18:18, Jonathan Wakely wrote:
> On Wed, 27 Sept 2023 at 05:44, François Dumont <frs.dumont@gmail.com> wrote:
>> Still no chance to get feedback from TC ? Maybe I can commit the below
>> then ?
> I've heard back from Tim now. Please use "Tim Song
> <t.canens.cpp@gmail.com>" as the author.
>
> You can change the commit again using git commit --amend --author "Tim
> Song <t.canens.cpp@gmail.com>"
Sure :-)
>
> OK for trunk with that change - thanks for waiting.
Committed to trunk, let me know for backports.
>> AFAICS on gcc mailing list several gcc releases were done recently, too
>> late.
> There have been no releases this month, so the delay hasn't caused any problems.
I was confused by emails like this one:
https://gcc.gnu.org/pipermail/gcc/2023-September/242429.html
I just subscribed to gcc mailing list, I had no idea there were regular
snapshots like this.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-28 17:25 ` François Dumont
@ 2023-09-29 9:53 ` Jonathan Wakely
2023-10-02 20:51 ` François Dumont
0 siblings, 1 reply; 11+ messages in thread
From: Jonathan Wakely @ 2023-09-29 9:53 UTC (permalink / raw)
To: François Dumont; +Cc: rs2740, libstdc++, gcc-patches
On Thu, 28 Sept 2023 at 18:25, François Dumont <frs.dumont@gmail.com> wrote:
>
>
> On 28/09/2023 18:18, Jonathan Wakely wrote:
> > On Wed, 27 Sept 2023 at 05:44, François Dumont <frs.dumont@gmail.com> wrote:
> >> Still no chance to get feedback from TC ? Maybe I can commit the below
> >> then ?
> > I've heard back from Tim now. Please use "Tim Song
> > <t.canens.cpp@gmail.com>" as the author.
> >
> > You can change the commit again using git commit --amend --author "Tim
> > Song <t.canens.cpp@gmail.com>"
>
> Sure :-)
>
> >
> > OK for trunk with that change - thanks for waiting.
>
> Committed to trunk, let me know for backports.
Please wait a few days in case of problems on the trunk (although I
don't expect any) and then OK for 11/12/13 too - thanks!
>
> >> AFAICS on gcc mailing list several gcc releases were done recently, too
> >> late.
> > There have been no releases this month, so the delay hasn't caused any problems.
>
> I was confused by emails like this one:
>
> https://gcc.gnu.org/pipermail/gcc/2023-September/242429.html
>
> I just subscribed to gcc mailing list, I had no idea there were regular
> snapshots like this.
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050]
2023-09-29 9:53 ` Jonathan Wakely
@ 2023-10-02 20:51 ` François Dumont
0 siblings, 0 replies; 11+ messages in thread
From: François Dumont @ 2023-10-02 20:51 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: rs2740, libstdc++, gcc-patches
Now backport to gcc-11/12/13 branches.
On 29/09/2023 11:53, Jonathan Wakely wrote:
> On Thu, 28 Sept 2023 at 18:25, François Dumont <frs.dumont@gmail.com> wrote:
>>
>> On 28/09/2023 18:18, Jonathan Wakely wrote:
>>> On Wed, 27 Sept 2023 at 05:44, François Dumont <frs.dumont@gmail.com> wrote:
>>>> Still no chance to get feedback from TC ? Maybe I can commit the below
>>>> then ?
>>> I've heard back from Tim now. Please use "Tim Song
>>> <t.canens.cpp@gmail.com>" as the author.
>>>
>>> You can change the commit again using git commit --amend --author "Tim
>>> Song <t.canens.cpp@gmail.com>"
>> Sure :-)
>>
>>> OK for trunk with that change - thanks for waiting.
>> Committed to trunk, let me know for backports.
> Please wait a few days in case of problems on the trunk (although I
> don't expect any) and then OK for 11/12/13 too - thanks!
>
>
>>>> AFAICS on gcc mailing list several gcc releases were done recently, too
>>>> late.
>>> There have been no releases this month, so the delay hasn't caused any problems.
>> I was confused by emails like this one:
>>
>> https://gcc.gnu.org/pipermail/gcc/2023-September/242429.html
>>
>> I just subscribed to gcc mailing list, I had no idea there were regular
>> snapshots like this.
>>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-10-02 20:51 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-10 13:56 [PATCH] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11 [PR 111050] François Dumont
2023-09-10 15:36 ` Sam James
2023-09-11 11:51 ` Jonathan Wakely
2023-09-11 17:19 ` François Dumont
2023-09-12 16:09 ` Jonathan Wakely
2023-09-14 4:46 ` François Dumont
2023-09-27 4:44 ` François Dumont
2023-09-28 16:18 ` Jonathan Wakely
2023-09-28 17:25 ` François Dumont
2023-09-29 9:53 ` Jonathan Wakely
2023-10-02 20:51 ` François Dumont
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).