Add symbol versions to libstdc++.so
Bug: http://b/28987948
Change-Id: I3853528bd432ceab37e4867f2c4112d9ee0b40dc
diff --git a/libc/Android.bp b/libc/Android.bp
index b1d37b4..36dfbc8 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -1769,13 +1769,27 @@
static_libs: ["libc_logging"],
},
- //TODO: This is to work around b/24465209. Remove after root cause is fixed
+ //TODO (dimitry): This is to work around b/24465209. Remove after root cause is fixed
arch: {
arm: {
ldflags: ["-Wl,--hash-style=both"],
+ version_script: "libstdc++.arm.map",
+ },
+ arm64: {
+ version_script: "libstdc++.arm64.map",
+ },
+ mips: {
+ version_script: "libstdc++.mips.map",
+ },
+ mips64: {
+ version_script: "libstdc++.mips64.map",
},
x86: {
ldflags: ["-Wl,--hash-style=both"],
+ version_script: "libstdc++.x86.map",
+ },
+ x86_64: {
+ version_script: "libstdc++.x86_64.map",
},
},
}
diff --git a/libc/libstdc++.arm.map b/libc/libstdc++.arm.map
new file mode 100644
index 0000000..70df4e1
--- /dev/null
+++ b/libc/libstdc++.arm.map
@@ -0,0 +1,19 @@
+# Generated by genversion-scripts.py. Do not edit.
+LIBC {
+ global:
+ _ZdaPv;
+ _ZdaPvRKSt9nothrow_t;
+ _ZdlPv;
+ _ZdlPvRKSt9nothrow_t;
+ _Znaj; # arm x86 mips
+ _ZnajRKSt9nothrow_t; # arm x86 mips
+ _Znwj; # arm x86 mips
+ _ZnwjRKSt9nothrow_t; # arm x86 mips
+ _ZSt7nothrow;
+ __cxa_guard_abort;
+ __cxa_guard_acquire;
+ __cxa_guard_release;
+ __cxa_pure_virtual;
+ local:
+ *;
+};
diff --git a/libc/libstdc++.arm64.map b/libc/libstdc++.arm64.map
new file mode 100644
index 0000000..55be046
--- /dev/null
+++ b/libc/libstdc++.arm64.map
@@ -0,0 +1,19 @@
+# Generated by genversion-scripts.py. Do not edit.
+LIBC {
+ global:
+ _ZdaPv;
+ _ZdaPvRKSt9nothrow_t;
+ _ZdlPv;
+ _ZdlPvRKSt9nothrow_t;
+ _Znam; # arm64 x86_64 mips64
+ _ZnamRKSt9nothrow_t; # arm64 x86_64 mips64
+ _Znwm; # arm64 x86_64 mips64
+ _ZnwmRKSt9nothrow_t; # arm64 x86_64 mips64
+ _ZSt7nothrow;
+ __cxa_guard_abort;
+ __cxa_guard_acquire;
+ __cxa_guard_release;
+ __cxa_pure_virtual;
+ local:
+ *;
+};
diff --git a/libc/libstdc++.map.txt b/libc/libstdc++.map.txt
new file mode 100644
index 0000000..d11d4c0
--- /dev/null
+++ b/libc/libstdc++.map.txt
@@ -0,0 +1,22 @@
+LIBC {
+ global:
+ _ZdaPv;
+ _ZdaPvRKSt9nothrow_t;
+ _ZdlPv;
+ _ZdlPvRKSt9nothrow_t;
+ _Znam; # arm64 x86_64 mips64
+ _ZnamRKSt9nothrow_t; # arm64 x86_64 mips64
+ _Znwm; # arm64 x86_64 mips64
+ _ZnwmRKSt9nothrow_t; # arm64 x86_64 mips64
+ _Znaj; # arm x86 mips
+ _ZnajRKSt9nothrow_t; # arm x86 mips
+ _Znwj; # arm x86 mips
+ _ZnwjRKSt9nothrow_t; # arm x86 mips
+ _ZSt7nothrow;
+ __cxa_guard_abort;
+ __cxa_guard_acquire;
+ __cxa_guard_release;
+ __cxa_pure_virtual;
+ local:
+ *;
+};
diff --git a/libc/libstdc++.mips.map b/libc/libstdc++.mips.map
new file mode 100644
index 0000000..70df4e1
--- /dev/null
+++ b/libc/libstdc++.mips.map
@@ -0,0 +1,19 @@
+# Generated by genversion-scripts.py. Do not edit.
+LIBC {
+ global:
+ _ZdaPv;
+ _ZdaPvRKSt9nothrow_t;
+ _ZdlPv;
+ _ZdlPvRKSt9nothrow_t;
+ _Znaj; # arm x86 mips
+ _ZnajRKSt9nothrow_t; # arm x86 mips
+ _Znwj; # arm x86 mips
+ _ZnwjRKSt9nothrow_t; # arm x86 mips
+ _ZSt7nothrow;
+ __cxa_guard_abort;
+ __cxa_guard_acquire;
+ __cxa_guard_release;
+ __cxa_pure_virtual;
+ local:
+ *;
+};
diff --git a/libc/libstdc++.mips64.map b/libc/libstdc++.mips64.map
new file mode 100644
index 0000000..55be046
--- /dev/null
+++ b/libc/libstdc++.mips64.map
@@ -0,0 +1,19 @@
+# Generated by genversion-scripts.py. Do not edit.
+LIBC {
+ global:
+ _ZdaPv;
+ _ZdaPvRKSt9nothrow_t;
+ _ZdlPv;
+ _ZdlPvRKSt9nothrow_t;
+ _Znam; # arm64 x86_64 mips64
+ _ZnamRKSt9nothrow_t; # arm64 x86_64 mips64
+ _Znwm; # arm64 x86_64 mips64
+ _ZnwmRKSt9nothrow_t; # arm64 x86_64 mips64
+ _ZSt7nothrow;
+ __cxa_guard_abort;
+ __cxa_guard_acquire;
+ __cxa_guard_release;
+ __cxa_pure_virtual;
+ local:
+ *;
+};
diff --git a/libc/libstdc++.x86.map b/libc/libstdc++.x86.map
new file mode 100644
index 0000000..70df4e1
--- /dev/null
+++ b/libc/libstdc++.x86.map
@@ -0,0 +1,19 @@
+# Generated by genversion-scripts.py. Do not edit.
+LIBC {
+ global:
+ _ZdaPv;
+ _ZdaPvRKSt9nothrow_t;
+ _ZdlPv;
+ _ZdlPvRKSt9nothrow_t;
+ _Znaj; # arm x86 mips
+ _ZnajRKSt9nothrow_t; # arm x86 mips
+ _Znwj; # arm x86 mips
+ _ZnwjRKSt9nothrow_t; # arm x86 mips
+ _ZSt7nothrow;
+ __cxa_guard_abort;
+ __cxa_guard_acquire;
+ __cxa_guard_release;
+ __cxa_pure_virtual;
+ local:
+ *;
+};
diff --git a/libc/libstdc++.x86_64.map b/libc/libstdc++.x86_64.map
new file mode 100644
index 0000000..55be046
--- /dev/null
+++ b/libc/libstdc++.x86_64.map
@@ -0,0 +1,19 @@
+# Generated by genversion-scripts.py. Do not edit.
+LIBC {
+ global:
+ _ZdaPv;
+ _ZdaPvRKSt9nothrow_t;
+ _ZdlPv;
+ _ZdlPvRKSt9nothrow_t;
+ _Znam; # arm64 x86_64 mips64
+ _ZnamRKSt9nothrow_t; # arm64 x86_64 mips64
+ _Znwm; # arm64 x86_64 mips64
+ _ZnwmRKSt9nothrow_t; # arm64 x86_64 mips64
+ _ZSt7nothrow;
+ __cxa_guard_abort;
+ __cxa_guard_acquire;
+ __cxa_guard_release;
+ __cxa_pure_virtual;
+ local:
+ *;
+};
diff --git a/libc/tools/genversion-scripts.py b/libc/tools/genversion-scripts.py
index 4f117f6..e6c8053 100755
--- a/libc/tools/genversion-scripts.py
+++ b/libc/tools/genversion-scripts.py
@@ -17,6 +17,7 @@
libc_script = os.path.join(bionic_libc_root, "libc.map.txt")
libm_script = os.path.join(bionic_libm_root, "libm.map.txt")
libdl_script = os.path.join(bionic_libdl_root, "libdl.map.txt")
+libstdcxx_script = os.path.join(bionic_libc_root, "libstdc++.map.txt")
script_name = os.path.basename(sys.argv[0])
@@ -35,7 +36,7 @@
class VersionScriptGenerator(object):
def run(self):
- for script in [libc_script, libm_script, libdl_script]:
+ for script in [libc_script, libstdcxx_script, libm_script, libdl_script]:
basename = os.path.basename(script)
dirname = os.path.dirname(script)
for arch in all_arches: