Commit 09ff0ee4 by Benjamin Kosnik Committed by Benjamin Kosnik

localefwd.h: Tweak formatting.


2002-09-06  Benjamin Kosnik  <bkoz@redhat.com>

	* include/bits/localefwd.h: Tweak formatting.
	* docs/html/abi.txt: Add.

From-SVN: r56903
parent 942579db
2002-09-06 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/localefwd.h: Tweak formatting.
* docs/html/abi.txt: Add.
2002-09-06 Jakub Jelinek <jakub@redhat.com> 2002-09-06 Jakub Jelinek <jakub@redhat.com>
* configure.target: Use cpu_include_dir="config/cpu/sparc" for all * configure.target: Use cpu_include_dir="config/cpu/sparc" for all
......
...@@ -6,7 +6,7 @@ document exists, why it's incomplete, and what needs to be done still. ...@@ -6,7 +6,7 @@ document exists, why it's incomplete, and what needs to be done still.
=========================== ===========================
2002-07-30 Benjamin Kosnik 2002-09-06 Benjamin Kosnik
Description of the libstdc++ ABI. Description of the libstdc++ ABI.
...@@ -131,7 +131,7 @@ I. What is an ABI? What's covered? What's not? ...@@ -131,7 +131,7 @@ I. What is an ABI? What's covered? What's not?
gcc-3.0.4: 20020220 gcc-3.0.4: 20020220
gcc-3.1.0: 20020514 gcc-3.1.0: 20020514
gcc-3.1.1: 20020725 gcc-3.1.1: 20020725
gcc-3.2.0: (20020731) gcc-3.2.0: 20020814
- Incremental bumping of a library pre-defined macro, - Incremental bumping of a library pre-defined macro,
...@@ -152,7 +152,7 @@ I. What is an ABI? What's covered? What's not? ...@@ -152,7 +152,7 @@ I. What is an ABI? What's covered? What's not?
gcc-3.0.4: "3.0.0" (Error, should be "3.0.4") gcc-3.0.4: "3.0.0" (Error, should be "3.0.4")
gcc-3.1.0: "3.1.0" gcc-3.1.0: "3.1.0"
gcc-3.1.1: "3.1.1" gcc-3.1.1: "3.1.1"
gcc-3.2.0: ("3.2.0") gcc-3.2.0: "3.2"
- Matching each specific C++ compiler release to a specific set of - Matching each specific C++ compiler release to a specific set of
...@@ -281,40 +281,53 @@ III. Versioning ...@@ -281,40 +281,53 @@ III. Versioning
IV. Testing ABI changes IV. Testing ABI changes
Currently, there is no formal testing for changes in the libstdc++ Currently, there are formal tests for changes in the libstdc++ ABI,
ABI. It would be in the best interest of GNU C++ users everywhere to and in addition informal testing procedures. Work to develop these
have such a test, and work to develop this test is ongoing. tests is ongoing.
There is a formal method for checking the compiler parts of the C++ There is a formal method for checking the compiler parts of the C++
ABI, donated by Intel. More information can be obtained ABI, donated by Intel. More information can be obtained
<a href="http://developer.intel.com/software/products/opensource/">here.</a> <a href="http://developer.intel.com/software/products/opensource/">here.</a>
To test the library, the following two ideas have been suggested: Also, it seems as if some members of the open source community are
working on C++ ABI testers for the compiler. It is yet unspecified if
these tools will be freely available, and able to be included in a GNU
project. Please contact Mark Mitchell (mark@codesoucery.com) for more
details, and current status.
To test the library, there are two methods:
One. One.
(Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways, (Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways,
one with a new compiler and an old library, and the other with an old one with a new compiler and an old library, and the other with an old
compiler and a new library, and look for testsuite regressions) compiler and a new library, and look for testsuite regressions)
Details on how to set this kind of test up can be found here:
http://gcc.gnu.org/ml/gcc/2002-08/msg00142.html
Two. Two.
Have the libstdc++ testsuite proactive check the library ABI. Probably Use the 'make check-abi' rule in the libstdc++-v3 Makefile.
a couple of items would be covered, although perhaps not all would
need to be done at once for this to be useful. Compute the list of This is a proactive check the library ABI. Currently, exported symbol
names exported in the shared version of libstdc++ binary. Then, save names are checked against a last known good baseline. Currently, this
this list of names. Have this list of names re-computed for each new baseline is keyed off of 3.2.0 binaries, as this was the last time the
binary of the same version. Next, use sizeof, alignof, and offset to .so number was incremented. In addition, all exported names are
compute offsets for each structure and type in the standard library, demangled, and the exported objects are checked to make sure they are
saving to another datafile. Then, compute this for new binaries, and the same size as the same object in the baseline.
look for differences.
An example of a way to compute the list of names exported by the In the future, more tests should be added. In particular, vtable
shared libstdc++ binary is: information, offsets of data members in class objects, and other
layout information should be checked.
nm --extern-only --portability libstdc++.so.5.0.0 | awk '{ print $1 $2}' It should be possible to use sizeof, alignof, and offset to compute
offsets for each structure and type in the standard library, saving to
another datafile. Then, compute this for new binaries, and look for
differences.
The thought is to choose one or both of these approaches, and to use a Another approach might be to use the -fdump-class-hierarchy flag to
Makefile hook, perhaps 'make check-abi', to add this capability to the get information.
libstdc++ testsuite. (See g++/7470 on how this was used to find bugs.)
Perhaps there are other Library ABI checkers. If so, please notify us. Perhaps there are other Library ABI checkers. If so, please notify us.
...@@ -327,7 +340,7 @@ V. Issues not directly addressed, and possible suggestions ...@@ -327,7 +340,7 @@ V. Issues not directly addressed, and possible suggestions
--enable-version-specific-runtime-libs --enable-version-specific-runtime-libs
- Alexandre Oliva proposal to have extended name attributes, modify ld - Alexandre Olva proposal to have extended name attributes, modify ld
- directory-level versioning - directory-level versioning
......
...@@ -387,12 +387,12 @@ namespace std ...@@ -387,12 +387,12 @@ namespace std
friend class locale; friend class locale;
friend class locale::_Impl; friend class locale::_Impl;
_Atomic_word _M_references; _Atomic_word _M_references;
protected: protected:
// Contains data from the underlying "C" library for default "C" // Contains data from the underlying "C" library for default "C"
// or "POSIX" locale. // or "POSIX" locale.
static __c_locale _S_c_locale; static __c_locale _S_c_locale;
explicit explicit
facet(size_t __refs = 0) throw(); facet(size_t __refs = 0) throw();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment