On Wed, Jan 06, 2021 at 06:01:23PM -0500, David Edelsohn wrote:
> You continue to not respond to the actual patch and to raise issues
> that don't exist in the actual patch.

We are talking past each other.

Consider an OS that has in stdint.h
typedef long long int64_t;
supports 32-bit and 64-bit multilibs and has the usual type sizes,
i.e. 32-bit int, 32/64-bit long and 64-bit long long.
On such a target, libstdc++ configury will define
_GLIBCXX_HAVE_INT64_T_LONG_LONG for both 32-bit and 64-bit multilib,
and without your patch will typedef long long streamoff;
for both the multilibs, so e.g.
void bar (streamoff) {} will mangle as _Z3barx on both.
Now, with your patch, _GLIBCXX_HAVE_INT64_T_LONG_LONG is defined,
but on the 64-bit multilib __SIZEOF_LONG__ is 8 and so you
instead typedef long streamoff; for the 64-bit multilib (and keep
typedef long long streamoff; for the 32-bit one).
The function that previously mangled _Z3barx now mangles _Z3barl,
so the ABI broke.

Anyway, I'll defer to Jonathan who is the libstdc++ maintainer.

        Jakub

Reply via email to