Switch platform EH unwinder to prebuilt LLVM libunwind
For the platform libc++ STL, remove the -Wl,--exclude-libs,libunwind_llvm.a argument, which is redundant with the same argument in deviceGlobalLdflags. Bug: http://b/153025717 Test: device boots Change-Id: Idd7791d52f74aab2d5f59419fb75f841fc29a2eb
This commit is contained in:
parent
2bcb4940bb
commit
b35a85ee8b
6 changed files with 19 additions and 12 deletions
|
@ -564,6 +564,7 @@ prebuilt_libclang_rt.builtins-aarch64-android(minSdkVersion:(no version))
|
|||
prebuilt_libclang_rt.builtins-arm-android(minSdkVersion:(no version))
|
||||
prebuilt_libclang_rt.builtins-i686-android(minSdkVersion:(no version))
|
||||
prebuilt_libclang_rt.builtins-x86_64-android(minSdkVersion:(no version))
|
||||
prebuilt_libunwind(minSdkVersion:(no version))
|
||||
prebuilt_test_framework-sdkextensions(minSdkVersion:(no version))
|
||||
server_configurable_flags(minSdkVersion:29)
|
||||
service-permission(minSdkVersion:current)
|
||||
|
|
|
@ -2854,7 +2854,7 @@ func makeApexAvailableBaseline() map[string][]string {
|
|||
"libprofile-clang-extras_ndk",
|
||||
"libprofile-extras",
|
||||
"libprofile-extras_ndk",
|
||||
"libunwind_llvm",
|
||||
"libunwind",
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -1751,10 +1751,10 @@ func TestQTargetApexUsesStaticUnwinder(t *testing.T) {
|
|||
|
||||
// ensure apex variant of c++ is linked with static unwinder
|
||||
cm := ctx.ModuleForTests("libc++", "android_arm64_armv8-a_shared_apex29").Module().(*cc.Module)
|
||||
ensureListContains(t, cm.Properties.AndroidMkStaticLibs, "libgcc_stripped")
|
||||
ensureListContains(t, cm.Properties.AndroidMkStaticLibs, "libunwind")
|
||||
// note that platform variant is not.
|
||||
cm = ctx.ModuleForTests("libc++", "android_arm64_armv8-a_shared").Module().(*cc.Module)
|
||||
ensureListNotContains(t, cm.Properties.AndroidMkStaticLibs, "libgcc_stripped")
|
||||
ensureListNotContains(t, cm.Properties.AndroidMkStaticLibs, "libunwind")
|
||||
}
|
||||
|
||||
func TestApexMinSdkVersion_ErrorIfIncompatibleStubs(t *testing.T) {
|
||||
|
|
|
@ -90,9 +90,12 @@ var (
|
|||
"-Wl,--warn-shared-textrel",
|
||||
"-Wl,--fatal-warnings",
|
||||
"-Wl,--no-undefined-version",
|
||||
// TODO: Eventually we should link against a libunwind.a with hidden symbols, and then these
|
||||
// --exclude-libs arguments can be removed.
|
||||
"-Wl,--exclude-libs,libgcc.a",
|
||||
"-Wl,--exclude-libs,libgcc_stripped.a",
|
||||
"-Wl,--exclude-libs,libunwind_llvm.a",
|
||||
"-Wl,--exclude-libs,libunwind.a",
|
||||
}
|
||||
|
||||
deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags),
|
||||
|
|
11
cc/stl.go
11
cc/stl.go
|
@ -140,11 +140,7 @@ func needsLibAndroidSupport(ctx BaseModuleContext) bool {
|
|||
}
|
||||
|
||||
func staticUnwinder(ctx android.BaseModuleContext) string {
|
||||
if ctx.Arch().ArchType == android.Arm {
|
||||
return "libunwind_llvm"
|
||||
} else {
|
||||
return "libgcc_stripped"
|
||||
}
|
||||
return "libunwind"
|
||||
}
|
||||
|
||||
func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps {
|
||||
|
@ -192,6 +188,7 @@ func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps {
|
|||
if needsLibAndroidSupport(ctx) {
|
||||
deps.StaticLibs = append(deps.StaticLibs, "ndk_libandroid_support")
|
||||
}
|
||||
// TODO: Switch the NDK over to the LLVM unwinder for non-arm32 architectures.
|
||||
if ctx.Arch().ArchType == android.Arm {
|
||||
deps.StaticLibs = append(deps.StaticLibs, "ndk_libunwind")
|
||||
} else {
|
||||
|
@ -231,10 +228,6 @@ func (stl *stl) flags(ctx ModuleContext, flags Flags) Flags {
|
|||
// Use Win32 threads in libc++.
|
||||
"-D_LIBCPP_HAS_THREAD_API_WIN32")
|
||||
}
|
||||
} else {
|
||||
if ctx.Arch().ArchType == android.Arm {
|
||||
flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--exclude-libs,libunwind_llvm.a")
|
||||
}
|
||||
}
|
||||
case "libstdc++":
|
||||
// Nothing
|
||||
|
|
|
@ -109,6 +109,16 @@ func GatherRequiredDepsForTest(oses ...android.OsType) string {
|
|||
src: "",
|
||||
}
|
||||
|
||||
toolchain_library {
|
||||
name: "libunwind",
|
||||
defaults: ["linux_bionic_supported"],
|
||||
vendor_available: true,
|
||||
product_available: true,
|
||||
recovery_available: true,
|
||||
native_bridge_supported: true,
|
||||
src: "",
|
||||
}
|
||||
|
||||
toolchain_library {
|
||||
name: "libclang_rt.fuzzer-arm-android",
|
||||
vendor_available: true,
|
||||
|
|
Loading…
Reference in a new issue