Merge "build: Link the unwinder dynamically into platform and vendor binaries."
diff --git a/Android.bp b/Android.bp
index 0382ee2..ab03a36 100644
--- a/Android.bp
+++ b/Android.bp
@@ -596,6 +596,7 @@
vendor_available: true,
recovery_available: true,
native_bridge_supported: true,
+ sdk_version: "current",
arch: {
arm: {
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 4d02f4f..332cc45 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -2303,13 +2303,13 @@
// Check the shared version of lib2.
variant := "android_arm64_armv8-a_shared"
module := ctx.ModuleForTests("lib2", variant).Module().(*Module)
- checkStaticLibs(t, []string{"lib1", "libc++demangle", "libclang_rt.builtins-aarch64-android", "libatomic", "libgcc_stripped"}, module)
+ checkStaticLibs(t, []string{"lib1", "libc++demangle", "libclang_rt.builtins-aarch64-android", "libatomic"}, module)
// Check the static version of lib2.
variant = "android_arm64_armv8-a_static"
module = ctx.ModuleForTests("lib2", variant).Module().(*Module)
// libc++_static is linked additionally.
- checkStaticLibs(t, []string{"lib1", "libc++_static", "libc++demangle", "libclang_rt.builtins-aarch64-android", "libatomic", "libgcc_stripped"}, module)
+ checkStaticLibs(t, []string{"lib1", "libc++_static", "libc++demangle", "libclang_rt.builtins-aarch64-android", "libatomic"}, module)
}
var compilerFlagsTestCases = []struct {
diff --git a/cc/config/global.go b/cc/config/global.go
index 6b02429..1ce29b9 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -88,6 +88,7 @@
"-Wl,--no-undefined-version",
"-Wl,--exclude-libs,libgcc.a",
"-Wl,--exclude-libs,libgcc_stripped.a",
+ "-Wl,--exclude-libs,libunwind_llvm.a",
}
deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags),
diff --git a/cc/linker.go b/cc/linker.go
index 61ae757..6f2e5b7 100644
--- a/cc/linker.go
+++ b/cc/linker.go
@@ -224,11 +224,10 @@
}
if ctx.toolchain().Bionic() {
- // libclang_rt.builtins, libgcc and libatomic have to be last on the command line
+ // libclang_rt.builtins and libatomic have to be last on the command line
if !Bool(linker.Properties.No_libcrt) {
deps.LateStaticLibs = append(deps.LateStaticLibs, config.BuiltinsRuntimeLibrary(ctx.toolchain()))
deps.LateStaticLibs = append(deps.LateStaticLibs, "libatomic")
- deps.LateStaticLibs = append(deps.LateStaticLibs, "libgcc_stripped")
}
systemSharedLibs := linker.Properties.System_shared_libs
diff --git a/cc/stl.go b/cc/stl.go
index 5ccd44a..af015f9 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -171,11 +171,13 @@
deps.StaticLibs = append(deps.StaticLibs, "libc++demangle")
}
if ctx.toolchain().Bionic() {
- if ctx.Arch().ArchType == android.Arm {
- deps.StaticLibs = append(deps.StaticLibs, "libunwind_llvm")
- }
if ctx.staticBinary() {
deps.StaticLibs = append(deps.StaticLibs, "libm", "libc")
+ if ctx.Arch().ArchType == android.Arm {
+ deps.StaticLibs = append(deps.StaticLibs, "libunwind_llvm")
+ } else {
+ deps.StaticLibs = append(deps.StaticLibs, "libgcc_stripped")
+ }
}
}
case "":
@@ -196,6 +198,8 @@
}
if ctx.Arch().ArchType == android.Arm {
deps.StaticLibs = append(deps.StaticLibs, "ndk_libunwind")
+ } else {
+ deps.StaticLibs = append(deps.StaticLibs, "libgcc_stripped")
}
default:
panic(fmt.Errorf("Unknown stl: %q", stl.Properties.SelectedStl))
diff --git a/cc/testing.go b/cc/testing.go
index 198a346..ba8ed95 100644
--- a/cc/testing.go
+++ b/cc/testing.go
@@ -136,6 +136,7 @@
name: "libc",
no_libcrt: true,
nocrt: true,
+ stl: "none",
system_shared_libs: [],
recovery_available: true,
}
@@ -147,6 +148,7 @@
name: "libm",
no_libcrt: true,
nocrt: true,
+ stl: "none",
system_shared_libs: [],
recovery_available: true,
}
@@ -158,6 +160,7 @@
name: "libdl",
no_libcrt: true,
nocrt: true,
+ stl: "none",
system_shared_libs: [],
recovery_available: true,
}