Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b35a85ee authored by Ryan Prichard's avatar Ryan Prichard
Browse files

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
parent 2bcb4940
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -2854,7 +2854,7 @@ func makeApexAvailableBaseline() map[string][]string {
		"libprofile-clang-extras_ndk",
		"libprofile-extras",
		"libprofile-extras_ndk",
		"libunwind_llvm",
		"libunwind",
	}
	return m
}
+2 −2
Original line number Diff line number Diff line
@@ -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) {
+3 −0
Original line number Diff line number Diff line
@@ -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),
+2 −9
Original line number Diff line number Diff line
@@ -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
Loading