diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index eedd86e8654..ebfcdc4d654 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2006-08-28 Benjamin Kosnik
+
+ PR libstdc++/23773 partial
+ * docs/html/abi.html: Update.
+
2006-08-28 Roger Sayle
Paolo Carlini
diff --git a/libstdc++-v3/docs/html/abi.html b/libstdc++-v3/docs/html/abi.html
index 1971b3aa63d..dcbd4388491 100644
--- a/libstdc++-v3/docs/html/abi.html
+++ b/libstdc++-v3/docs/html/abi.html
@@ -168,10 +168,32 @@ on ELF systems).
gcc-3.3.1: libgcc_s.so.1
gcc-3.3.2: libgcc_s.so.1
gcc-3.3.3: libgcc_s.so.1
- gcc-3.4.0: on m68k-linux and hppa-linux this is either libgcc_s.so.1
- (when configuring --with-sjlj-exceptions
) or
- libgcc_s.so.2. For all others, this is libgcc_s.so.1.
+ gcc-3.4.x, gcc-4.0.x, gcc-4.1.x: on m68k-linux and hppa-linux
+ this is either libgcc_s.so.1 (when configuring
+ --with-sjlj-exceptions
) or libgcc_s.so.2. For all
+ others, this is libgcc_s.so.1.
+
+
+ Symbol versioning on the libgcc_s.so binary.
+ mapfile: gcc/libgcc-std.ver
+
+ It is versioned with the following labels and version
+ definitions, where the version definition is the maximum for a
+ particular release. Labels are cumulative. If a particular release
+ is not listed, it has the same version labels as the preceeding
+ release.
+
+ - gcc-3.0.0: GCC_3.0
+ - gcc-3.3.0: GCC_3.3
+ - gcc-3.3.1: GCC_3.3.1
+ - gcc-3.3.2: GCC_3.3.2
+ - gcc-3.3.4: GCC_3.3.4
+ - gcc-3.4.0: GCC_3.4
+ - gcc-3.4.2: GCC_3.4.2
+ - gcc-3.4.4: GCC_3.4.4
+ - gcc-4.0.0: GCC_4.0.0
+ - gcc-4.1.0: GCC_4.1.0
@@ -198,31 +220,17 @@ on ELF systems).
gcc-3.3.3: libstdc++.so.5.0.5
gcc-3.4.0: libstdc++.so.6.0.0
gcc-3.4.1: libstdc++.so.6.0.1
-
-
-
-
- Symbol versioning on the libgcc_s.so binary.
- mapfile: gcc/libgcc-std.ver
-
- It is versioned with the following labels and version definitions:
-
- - gcc-3.0.0: GCC_3.0
- - gcc-3.0.1: GCC_3.0
- - gcc-3.0.2: GCC_3.0
- - gcc-3.0.3: GCC_3.0
- - gcc-3.0.4: GCC_3.0
- - gcc-3.1.0: GCC_3.0
- - gcc-3.1.1: GCC_3.0
- - gcc-3.2.0: GCC_3.0
- - gcc-3.2.1: GCC_3.0
- - gcc-3.2.2: GCC_3.0
- - gcc-3.2.3: GCC_3.0
- - gcc-3.3.0: GCC_3.0
- - gcc-3.3.1: GCC_3.0
- - gcc-3.3.2: GCC_3.0
- - gcc-3.3.3: GCC_3.0
- - gcc-3.4.0: GCC_3.0
+ - gcc-3.4.2: libstdc++.so.6.0.2
+ - gcc-3.4.3: libstdc++.so.6.0.3
+ - gcc-3.4.4: libstdc++.so.6.0.3
+ - gcc-3.4.5: libstdc++.so.6.0.3
+ - gcc-3.4.6: libstdc++.so.6.0.3
+ - gcc-4.0.0: libstdc++.so.6.0.4
+ - gcc-4.0.1: libstdc++.so.6.0.5
+ - gcc-4.0.2: libstdc++.so.6.0.6
+ - gcc-4.0.3: libstdc++.so.6.0.7
+ - gcc-4.1.0: libstdc++.so.6.0.7
+ - gcc-4.1.1: libstdc++.so.6.0.8
@@ -238,7 +246,8 @@ on ELF systems).
release has both versions. (An example of this would be the
gcc-3.2.1 release, which has GLIBCPP_3.2.1 for new symbols and
GLIBCPP_3.2 for symbols that were introduced in the gcc-3.2.0
- release.)
+ release.) If a particular release is not listed, it has the same
+ version labels as the preceeding release.
- gcc-3.0.0: (Error, not versioned)
@@ -258,6 +267,13 @@ on ELF systems).
- gcc-3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1
- gcc-3.4.0: GLIBCXX_3.4, CXXABI_1.3
- gcc-3.4.1: GLIBCXX_3.4.1, CXXABI_1.3
+ - gcc-3.4.2: GLIBCXX_3.4.2
+ - gcc-3.4.3: GLIBCXX_3.4.3
+ - gcc-4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1
+ - gcc-4.0.1: GLIBCXX_3.4.5
+ - gcc-4.0.2: GLIBCXX_3.4.6
+ - gcc-4.0.3: GLIBCXX_3.4.7
+ - gcc-4.1.1: GLIBCXX_3.4.8
@@ -285,9 +301,9 @@ on ELF systems).
gcc-3.1.x: 100 (Error, should be 101)
gcc-3.2.x: 102
gcc-3.3.x: 102
- gcc-3.4.x: 102 (when n=1)
- gcc-3.4.x: 1000 + n (when n>1)
- gcc-3.4.x: 999999 (when n=0)
+ gcc-3.4.x, gcc-4.0.x, gcc-4.1.x: 102 (when n=1)
+ gcc-3.4.x, gcc-4.0.x, gcc-4.1.x: 1000 + n (when n>1)
+ gcc-3.4.x, gcc-4.0.x, gcc-4.1.x: 999999 (when n=0)
@@ -304,7 +320,7 @@ on ELF systems).
gcc-3.1.x: (Error, not versioned)
gcc-3.2.x: -fabi-version=1
gcc-3.3.x: -fabi-version=1
- gcc-3.4.x: -fabi-version=2
+ gcc-3.4.x, gcc-4.0.x, gcc-4.1.x: -fabi-version=2
@@ -319,9 +335,10 @@ on ELF systems).
- In addition, the pre-defined macro is defined in the file
- "c++config" in the "libstdc++-v3/include/bits" directory and is
- changed every night by an automated script.
+ This macro is defined in the file "c++config" in the
+ "libstdc++-v3/include/bits" directory. (Up to gcc-4.1.0, it was
+ changed every night by an automated script. Since gcc-4.1.0, it is
+ the same value as gcc/DATESTAMP.)
It is versioned as follows:
@@ -344,11 +361,21 @@ on ELF systems).
gcc-3.3.3: 20040214
gcc-3.4.0: 20040419
gcc-3.4.1: 20040701
+ gcc-3.4.2: 20040906
+ gcc-3.4.3: 20041105
+ gcc-3.4.4: 20050519
+ gcc-3.4.5: 20051201
+ gcc-3.4.6: 20060306
+ gcc-4.0.0: 20050421
+ gcc-4.0.1: 20050707
+ gcc-4.0.2: 20050921
+ gcc-4.0.3: 20060309
+ gcc-4.1.0: 20060228
+ gcc-4.1.1: 20060524
-
Incremental bumping of a library pre-defined macro,
@@ -384,8 +411,9 @@ on ELF systems).
gcc-3.3.1: "3.3.1"
gcc-3.3.2: "3.3.2"
gcc-3.3.3: "3.3.3"
- gcc-3.4.0: "version-unused"
- gcc-3.4.1: "version-unused"
+ gcc-3.4.x: "version-unused"
+ gcc-4.0.x: "version-unused"
+ gcc-4.1.x: "version-unused"
@@ -424,6 +452,17 @@ on ELF systems).
gcc-3.3.3: include/c++/3.3.3
gcc-3.4.0: include/c++/3.4.0
gcc-3.4.1: include/c++/3.4.1
+ gcc-3.4.2: include/c++/3.4.2
+ gcc-3.4.3: include/c++/3.4.3
+ gcc-3.4.4: include/c++/3.4.4
+ gcc-3.4.5: include/c++/3.4.5
+ gcc-3.4.6: include/c++/3.4.6
+ gcc-4.0.0: include/c++/4.0.0
+ gcc-4.0.1: include/c++/4.0.1
+ gcc-4.0.2: include/c++/4.0.2
+ gcc-4.0.3: include/c++/4.0.3
+ gcc-4.1.0: include/c++/4.1.0
+ gcc-4.1.1: include/c++/4.1.1
@@ -857,6 +896,29 @@ from both liba, and the dependent libstdc++.so.6, and libb, with the
dependent libstdc++.so.5.
+
+
+
+ Some features in the C++ language make versioning especially
+difficult. In particular, compiler generated constructs such as
+implicit instantiations for templates, typeinfo information, and
+virtual tables all may cause ABI leakage across shared library
+boundaries. Because of this, mixing C++ ABI's is not recommended at
+this time.
+
+
+For more background on this issue, see these bugzilla entries:
+
+
+24660: versioning weak symbols in libstdc++
+
+
+
+19664: libstdc++ headers should have pop/push of the visibility around the declarations
+
+
@@ -897,6 +959,24 @@ Ulrich Drepper, "ELF Symbol Versioning"
http://people.redhat.com/drepper/symbol-versioning
+
+C++ ABI for the ARM Architecture
+
+http://www.arm.com/miscPDFs/8033.pdf
+
+
+
+Benjamin Kosnik, ISO C++ J16/06-0046
+
+Dynamic Shared Objects: Survey and Issues
+
+
+
+Benjamin Kosnik, ISO C++ J16/06-0083
+
+Versioning With Namespaces
+
+