This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, libstdc++]: Export _ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4.14


On Tue, Mar 22, 2011 at 11:25:28AM +0100, Uros Bizjak wrote:
> std::numeric_limits<__float128>::max_digits10 long double export
> should probably match other max_digits10 functions. At least alpha abi
> check complains on incompatible added symbol without this patch.
> 
> 2011-03-22  Uros Bizjak  <ubizjak@gmail.com>
> 
> 	* config/os/gnu-linux/ldbl-extra.ver: Export
> 	_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4.14
> 	* testsuite/util/testsuite_abi.cc (check_version): Support
> 	GLIBCXX_LDBL_3.4.14.

The above is ABI incompatible change unfortunately.

It was a mistake to add std::numeric_limits<long double>::max_digits10
for -mlong-double-128 targets (that previously defaulted to -mlong-double-64)
to GLIBCXX_LDBL_3.4 rather than GLIBCXX_LDBL_3.4.14, but as gcc 4.5 has
been already released with that bug, it is too late to remove
the symbol from GLIBCXX_LDBL_3.4, as there might be programs/libraries
using _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4.
Furthermore, GLIBCXX_LDBL_3.4.14 symver shouldn't be added now that
gcc 4.5 has been released already.

IMHO you should just regenerate baseline_symbols.txt for alpha-linux.

For 4.7, if Benjamin wants, we could play games with .symver
and export it both as
_ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4
and
_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4.16
and also make sure
_ZNSt14numeric_limitsIeE12max_digits10E@@GLIBCXX_3.4.16
is exported on those targets for users that still use
-mlong-double-64.

But for now I think just baseline_symbols.txt should be regenerated,
both for alpha-linux-gnu and sparc-linux-gnu (perhaps leave out
the TLS: lines like it is omitted from other Linux targets).

David, could you please regenerate sparc-linux baseline_symbols.txt?
My sparc box is dead for quite some time...

Worst case for sparc we could apply something like following patch that
would just make sure abi_check won't complain about the incompatible
addition:

--- libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt	2010-06-11 11:07:17.562409190 +0200
+++ libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt	2011-03-22 11:41:29.842419946 +0100
@@ -3244,6 +3244,7 @@ OBJECT:4:_ZNSt14numeric_limitsIfE6digits
 OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
 OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
 OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_digits10E@@GLIBCXX_LDBL_3.4
 OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
 OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
 OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4


	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]