ABI baselines, --enable-clocale choices, and that AC_TRY_RUN test

Phil Edwards phil@jaj.com
Thu Sep 5 11:39:00 GMT 2002


I've changed abi_check.cc so that it can generate baseline_symbols files.
I'm trying to make sure it's not doing anything stupid, and in testing it,
kept seeing 61 symbols mangled differently.

Turns out that my system, for some reason, is failing the check in
GLIBCPP_ENABLE_CLOCALE:

  dnl Probe for locale support if no specific model is specified.
  dnl Default to "generic"
  [...]
        # Test for bugs early in glibc-2.2.x series
        if test x$enable_clocale_flag = xgnu; then
          AC_TRY_RUN([
          [...]
          ],
          [enable_clocale_flag=gnu],[enable_clocale_flag=generic],
          [enable_clocale_flag=generic])

Don't know what the bug is, but if I try it manually, the executable
segfaults.  So, "generic" it is.

As a result, __c_locale gets typedef'd to int* rather than __locale_struct*,
and the i686 baseline symbols file contains, e.g.,

    _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj

whereas mine has

    _ZNSt10moneypunctIcLb0EEC1EPiPKcj

(I'm trying a build now on another system that should be able to support
--enable-clocale=gnu, if it works I'll test the baseline stuff there first.)



Before I start renaming things, what are some of the common config options
that changes the ABI /within/ a platform?  Loren's already found changes
wrt to --enable-threads:

    http://gcc.gnu.org/ml/libstdc++/2002-08/msg00227.html

This is starting to sound like another multilibs-style mess:  for a given
triplet, we have multiple combinations of commonly used --enables that
each result in a different baseline_symbols.txt file.


Phil

-- 
I would therefore like to posit that computing's central challenge, viz. "How
not to make a mess of it," has /not/ been met.
                                                 - Edsger Dijkstra, 1930-2002



More information about the Libstdc++ mailing list