mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
942579db7e
commit
09ff0ee4cf
|
|
@ -1,3 +1,8 @@
|
||||||
|
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.
|
||||||
|
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
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?
|
||||||
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?
|
||||||
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
|
||||||
|
|
||||||
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
|
|
||||||
names exported in the shared version of libstdc++ binary. Then, save
|
|
||||||
this list of names. Have this list of names re-computed for each new
|
|
||||||
binary of the same version. Next, 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.
|
|
||||||
|
|
||||||
An example of a way to compute the list of names exported by the
|
This is a proactive check the library ABI. Currently, exported symbol
|
||||||
shared libstdc++ binary is:
|
names are checked against a last known good baseline. Currently, this
|
||||||
|
baseline is keyed off of 3.2.0 binaries, as this was the last time the
|
||||||
|
.so number was incremented. In addition, all exported names are
|
||||||
|
demangled, and the exported objects are checked to make sure they are
|
||||||
|
the same size as the same object in the baseline.
|
||||||
|
|
||||||
nm --extern-only --portability libstdc++.so.5.0.0 | awk '{ print $1 $2}'
|
In the future, more tests should be added. In particular, vtable
|
||||||
|
information, offsets of data members in class objects, and other
|
||||||
|
layout information should be checked.
|
||||||
|
|
||||||
The thought is to choose one or both of these approaches, and to use a
|
It should be possible to use sizeof, alignof, and offset to compute
|
||||||
Makefile hook, perhaps 'make check-abi', to add this capability to the
|
offsets for each structure and type in the standard library, saving to
|
||||||
libstdc++ testsuite.
|
another datafile. Then, compute this for new binaries, and look for
|
||||||
|
differences.
|
||||||
|
|
||||||
|
Another approach might be to use the -fdump-class-hierarchy flag to
|
||||||
|
get information.
|
||||||
|
(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
|
||||||
|
|
||||||
--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
|
||||||
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();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue