Factor out the keep_symbols magic.
arm32 in particular makes this quite noisy, obscuring the other stuff going on.
Change-Id: Id9e6738e9c4eb008afa208c94ff95c2d40e26891
diff --git a/libc/Android.bp b/libc/Android.bp
index a2d2e0c..bc933e0 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -132,6 +132,45 @@
},
}
+// Leave the symbols in the shared library so that stack unwinders can produce
+// meaningful name resolution. This is a bit more ugly than it sounds because
+// arm32 is a bit broken.
+// ========================================================
+cc_defaults {
+ name: "keep_symbols",
+ arch: {
+ arm: {
+ // arm32 does not produce complete exidx unwind information,
+ // so keep the .debug_frame which is relatively small and does
+ // include needed unwind information.
+ // See b/132992102 for details.
+ strip: {
+ keep_symbols_and_debug_frame: true,
+ },
+ },
+ arm64: {
+ strip: {
+ keep_symbols: true,
+ },
+ },
+ riscv64: {
+ strip: {
+ keep_symbols: true,
+ },
+ },
+ x86: {
+ strip: {
+ keep_symbols: true,
+ },
+ },
+ x86_64: {
+ strip: {
+ keep_symbols: true,
+ },
+ },
+ },
+}
+
// Defaults for native allocator libs/includes to make it
// easier to change.
// ========================================================
@@ -1548,6 +1587,7 @@
"libc_defaults",
"libc_native_allocator_defaults",
"bug_24465209_workaround",
+ "keep_symbols",
],
name: "libc_library_defaults",
product_variables: {
@@ -1595,12 +1635,6 @@
arch: {
arm: {
- ldflags: [
- // Since we are preserving the debug_frame, do not compress
- // in this case to make unwinds as fast as possible.
- "-Wl,--compress-debug-sections=none",
- ],
-
version_script: ":libc.arm.map",
no_libcrt: true,
@@ -1608,59 +1642,33 @@
srcs: [":libc_sources_shared_arm"],
// special for arm
cflags: ["-DCRT_LEGACY_WORKAROUND"],
- // For backwards-compatibility, some arm32 builtins are exported from libc.so.
+ // For backwards compatibility, some arm32 builtins are exported from libc.so.
static_libs: ["libclang_rt.builtins-exported"],
},
- // Arm 32 bit does not produce complete exidx unwind information
- // so keep the .debug_frame which is relatively small and does
- // include needed unwind information.
- // See b/132992102 for details.
- strip: {
- keep_symbols_and_debug_frame: true,
- },
+ ldflags: [
+ // Since we preserve the debug_frame for libc, do not compress
+ // in this case to make unwinds as fast as possible.
+ "-Wl,--compress-debug-sections=none",
+ ],
},
arm64: {
version_script: ":libc.arm64.map",
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
},
riscv64: {
version_script: ":libc.riscv64.map",
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
},
x86: {
version_script: ":libc.x86.map",
no_libcrt: true,
shared: {
- // For backwards-compatibility, some x86 builtins are exported from libc.so.
+ // For backwards compatibility, some x86 builtins are exported from libc.so.
static_libs: ["libclang_rt.builtins-exported"],
},
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
},
x86_64: {
version_script: ":libc.x86_64.map",
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
},
},
diff --git a/linker/Android.bp b/linker/Android.bp
index 143dbd5..694d1f5 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -273,57 +273,28 @@
// A template for the linker binary. May be inherited by native bridge implementations.
cc_defaults {
name: "linker_bin_template",
- defaults: ["linker_defaults"],
+ defaults: [
+ "linker_defaults",
+ "keep_symbols",
+ ],
srcs: [":linker_sources"],
arch: {
arm: {
srcs: [":linker_sources_arm"],
-
- // Arm 32 bit does not produce complete exidx unwind information
- // so keep the .debug_frame which is relatively small and does
- // include needed unwind information.
- // See b/242162222 for details.
- strip: {
- keep_symbols_and_debug_frame: true,
- },
},
arm64: {
srcs: [":linker_sources_arm64"],
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
},
riscv64: {
srcs: [":linker_sources_riscv64"],
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
},
x86: {
srcs: [":linker_sources_x86"],
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
},
x86_64: {
srcs: [":linker_sources_x86_64"],
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
},
},