public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "john at drouhard dot dev" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug libstdc++/111050] [11/12/13/14 Regression] ABI break in _Hash_node_value_base since GCC 11
Date: Tue, 12 Sep 2023 15:54:37 +0000	[thread overview]
Message-ID: <bug-111050-4-yyXSQZflA3@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-111050-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111050

John Drouhard <john at drouhard dot dev> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |john at drouhard dot dev

--- Comment #10 from John Drouhard <john at drouhard dot dev> ---
(In reply to frs.dumont from comment #9)
> To be honest before that report I thought that preserving abi was just a 
> matter of preserving memory layout of types. I had no idea that member 
> methods mattered !

(I was the original reporter of this to TC)

I think the specific issue here is that the member function `_M_valptr()`
returns the address of the storage data member, and that _function_ is used in
a construct call elsewhere to point to the address where a new object should be
placed. It returns the address based on the offset from the beginning of the
object which changed when the base class (which had its own data members) was
removed.

So, if the function isn't inlined, the symbol that's actually loaded by the
dynamic linker during runtime will return a potentially bogus address for that
data member if the definition of that function came from a library compiled
with the other version.

  parent reply	other threads:[~2023-09-12 15:54 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-17 14:40 [Bug libstdc++/111050] New: " rs2740 at gmail dot com
2023-08-17 15:03 ` [Bug libstdc++/111050] " redi at gcc dot gnu.org
2023-08-18  6:42 ` rguenth at gcc dot gnu.org
2023-09-01 20:33 ` fdumont at gcc dot gnu.org
2023-09-01 23:17 ` rs2740 at gmail dot com
2023-09-02  7:20 ` fdumont at gcc dot gnu.org
2023-09-06 17:17 ` fdumont at gcc dot gnu.org
2023-09-06 18:15 ` rs2740 at gmail dot com
2023-09-06 18:19 ` rs2740 at gmail dot com
2023-09-08 17:04 ` rs2740 at gmail dot com
2023-09-11 11:52 ` redi at gcc dot gnu.org
2023-09-11 16:59 ` frs.dumont at gmail dot com
2023-09-12 15:54 ` john at drouhard dot dev [this message]
2023-09-12 16:07 ` redi at gcc dot gnu.org
2023-09-28 17:24 ` cvs-commit at gcc dot gnu.org
2023-10-02 20:44 ` cvs-commit at gcc dot gnu.org
2023-10-02 20:47 ` cvs-commit at gcc dot gnu.org
2023-10-02 20:48 ` cvs-commit at gcc dot gnu.org
2023-10-03  9:31 ` redi at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-111050-4-yyXSQZflA3@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).