diff options
author | Jakub Jelinek <jakub@redhat.com> | 2023-05-03 22:32:50 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2023-05-03 22:32:50 +0200 |
commit | b51e2fd65e47e61c09b5fab70d9bb9bfffd0d61e (patch) | |
tree | d5e7ee09d3b1c273722c20c36f765b1502d82f5c /libstdc++-v3/config/abi | |
parent | a13ea34c6ed45c0c56c256ade77bf5a660365072 (diff) | |
download | gcc-b51e2fd65e47e61c09b5fab70d9bb9bfffd0d61e.zip gcc-b51e2fd65e47e61c09b5fab70d9bb9bfffd0d61e.tar.gz gcc-b51e2fd65e47e61c09b5fab70d9bb9bfffd0d61e.tar.bz2 |
libstdc++: Fix up abi.exp FAILs on powerpc64le-linux
This is an ABI problem on powerpc64le-linux, introduced in 13.1.
When libstdc++ is configured against old glibc, the
_ZSt10from_charsPKcS0_RDF128_St12chars_format@@GLIBCXX_3.4.31
_ZSt8to_charsPcS_DF128_@@GLIBCXX_3.4.31
_ZSt8to_charsPcS_DF128_St12chars_format@@GLIBCXX_3.4.31
_ZSt8to_charsPcS_DF128_St12chars_formati@@GLIBCXX_3.4.31
symbols are exported from the library, while when it is configured against
new enough glibc, those symbols aren't exported and we export instead
_ZSt10from_charsPKcS0_Ru9__ieee128St12chars_format@@GLIBCXX_IEEE128_3.4.29
_ZSt8to_charsPcS_u9__ieee128@@GLIBCXX_IEEE128_3.4.29
_ZSt8to_charsPcS_u9__ieee128St12chars_format@@GLIBCXX_IEEE128_3.4.29
_ZSt8to_charsPcS_u9__ieee128St12chars_formati@@GLIBCXX_IEEE128_3.4.29
together with various other @@GLIBCXX_IEEE128_3.4.{29,30,31} and
@@CXXABI_IEEE128_1.3.13 symbols. The idea was that those *IEEE128* symbol
versions (similarly to *LDBL* symbol versions) are optional (but if it
appears, all symbols from it up to the version of the library appears),
but the base appears always.
My _Float128 from_chars/to_chars changes unfortunately broke this.
I believe nothing really uses those symbols if libstdc++ has been
configured against old glibc, so if 13.1 wasn't already released, it might
be best to make sure they aren't exported on powerpc64le-linux.
But as they were exported, I think the best resolution for this ABI
difference is to add those 4 symbols as aliases to the
GLIBCXX_IEEE128_3.4.29 *u9__ieee128* symbols, which the following patch
does.
2023-05-03 Jakub Jelinek <jakub@redhat.com>
* src/c++17/floating_from_chars.cc
(_ZSt10from_charsPKcS0_RDF128_St12chars_format): New alias to
_ZSt10from_charsPKcS0_Ru9__ieee128St12chars_format.
* src/c++17/floating_to_chars.cc (_ZSt8to_charsPcS_DF128_): New alias to
_ZSt8to_charsPcS_u9__ieee128.
(_ZSt8to_charsPcS_DF128_St12chars_format): New alias to
_ZSt8to_charsPcS_u9__ieee128St12chars_format.
(_ZSt8to_charsPcS_DF128_St12chars_formati): New alias to
_ZSt8to_charsPcS_u9__ieee128St12chars_formati.
* config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt: Updated.
Diffstat (limited to 'libstdc++-v3/config/abi')
-rw-r--r-- | libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt index 0503759..5250925 100644 --- a/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt @@ -4491,6 +4491,7 @@ FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4 FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 +FUNC:_ZSt10from_charsPKcS0_RDF128_St12chars_format@@GLIBCXX_3.4.31 FUNC:_ZSt10from_charsPKcS0_RdSt12chars_format@@GLIBCXX_3.4.29 FUNC:_ZSt10from_charsPKcS0_ReSt12chars_format@@GLIBCXX_3.4.29 FUNC:_ZSt10from_charsPKcS0_RfSt12chars_format@@GLIBCXX_3.4.29 @@ -4641,6 +4642,9 @@ FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cx FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_@@GLIBCXX_3.4.21 FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4 FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4 +FUNC:_ZSt8to_charsPcS_DF128_@@GLIBCXX_3.4.31 +FUNC:_ZSt8to_charsPcS_DF128_St12chars_format@@GLIBCXX_3.4.31 +FUNC:_ZSt8to_charsPcS_DF128_St12chars_formati@@GLIBCXX_3.4.31 FUNC:_ZSt8to_charsPcS_d@@GLIBCXX_3.4.29 FUNC:_ZSt8to_charsPcS_dSt12chars_format@@GLIBCXX_3.4.29 FUNC:_ZSt8to_charsPcS_dSt12chars_formati@@GLIBCXX_3.4.29 |