Merge "Switch platform EH unwinder to prebuilt LLVM libunwind" am: 809eac3057 am: 048809c624

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1551580

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I8d3ced17f7aadbc27498a89eedc2b9f8df9f4a3c
This commit is contained in:
Ryan Prichard
2021-01-20 01:53:10 +00:00
committed by Automerger Merge Worker
6 changed files with 19 additions and 12 deletions

View File

@@ -570,6 +570,7 @@ prebuilt_libclang_rt.builtins-aarch64-android(minSdkVersion:(no version))
prebuilt_libclang_rt.builtins-arm-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-i686-android(minSdkVersion:(no version))
prebuilt_libclang_rt.builtins-x86_64-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)) prebuilt_test_framework-sdkextensions(minSdkVersion:(no version))
server_configurable_flags(minSdkVersion:29) server_configurable_flags(minSdkVersion:29)
service-permission(minSdkVersion:current) service-permission(minSdkVersion:current)

View File

@@ -2854,7 +2854,7 @@ func makeApexAvailableBaseline() map[string][]string {
"libprofile-clang-extras_ndk", "libprofile-clang-extras_ndk",
"libprofile-extras", "libprofile-extras",
"libprofile-extras_ndk", "libprofile-extras_ndk",
"libunwind_llvm", "libunwind",
} }
return m return m
} }

View File

@@ -1752,10 +1752,10 @@ func TestQTargetApexUsesStaticUnwinder(t *testing.T) {
// ensure apex variant of c++ is linked with static unwinder // ensure apex variant of c++ is linked with static unwinder
cm := ctx.ModuleForTests("libc++", "android_arm64_armv8-a_shared_apex29").Module().(*cc.Module) 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. // note that platform variant is not.
cm = ctx.ModuleForTests("libc++", "android_arm64_armv8-a_shared").Module().(*cc.Module) 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) { func TestApexMinSdkVersion_ErrorIfIncompatibleStubs(t *testing.T) {

View File

@@ -90,9 +90,12 @@ var (
"-Wl,--warn-shared-textrel", "-Wl,--warn-shared-textrel",
"-Wl,--fatal-warnings", "-Wl,--fatal-warnings",
"-Wl,--no-undefined-version", "-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.a",
"-Wl,--exclude-libs,libgcc_stripped.a", "-Wl,--exclude-libs,libgcc_stripped.a",
"-Wl,--exclude-libs,libunwind_llvm.a", "-Wl,--exclude-libs,libunwind_llvm.a",
"-Wl,--exclude-libs,libunwind.a",
} }
deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags), deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags),

View File

@@ -140,11 +140,7 @@ func needsLibAndroidSupport(ctx BaseModuleContext) bool {
} }
func staticUnwinder(ctx android.BaseModuleContext) string { func staticUnwinder(ctx android.BaseModuleContext) string {
if ctx.Arch().ArchType == android.Arm { return "libunwind"
return "libunwind_llvm"
} else {
return "libgcc_stripped"
}
} }
func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps { 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) { if needsLibAndroidSupport(ctx) {
deps.StaticLibs = append(deps.StaticLibs, "ndk_libandroid_support") 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 { if ctx.Arch().ArchType == android.Arm {
deps.StaticLibs = append(deps.StaticLibs, "ndk_libunwind") deps.StaticLibs = append(deps.StaticLibs, "ndk_libunwind")
} else { } else {
@@ -231,10 +228,6 @@ func (stl *stl) flags(ctx ModuleContext, flags Flags) Flags {
// Use Win32 threads in libc++. // Use Win32 threads in libc++.
"-D_LIBCPP_HAS_THREAD_API_WIN32") "-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++": case "libstdc++":
// Nothing // Nothing

View File

@@ -109,6 +109,16 @@ func GatherRequiredDepsForTest(oses ...android.OsType) string {
src: "", 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 { toolchain_library {
name: "libclang_rt.fuzzer-arm-android", name: "libclang_rt.fuzzer-arm-android",
vendor_available: true, vendor_available: true,