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