public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [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).