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:
@@ -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,
|
||||
|
Reference in New Issue
Block a user