Merge "build: Link the unwinder dynamically into platform and vendor binaries."

This commit is contained in:
Peter Collingbourne 2020-01-21 21:28:44 +00:00 committed by Gerrit Code Review
commit d2f8df4b3e
6 changed files with 15 additions and 7 deletions

View File

@ -596,6 +596,7 @@ toolchain_library {
vendor_available: true, vendor_available: true,
recovery_available: true, recovery_available: true,
native_bridge_supported: true, native_bridge_supported: true,
sdk_version: "current",
arch: { arch: {
arm: { arm: {

View File

@ -2303,13 +2303,13 @@ func TestStaticLibDepExport(t *testing.T) {
// Check the shared version of lib2. // Check the shared version of lib2.
variant := "android_arm64_armv8-a_shared" variant := "android_arm64_armv8-a_shared"
module := ctx.ModuleForTests("lib2", variant).Module().(*Module) 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. // Check the static version of lib2.
variant = "android_arm64_armv8-a_static" variant = "android_arm64_armv8-a_static"
module = ctx.ModuleForTests("lib2", variant).Module().(*Module) module = ctx.ModuleForTests("lib2", variant).Module().(*Module)
// libc++_static is linked additionally. // 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 { var compilerFlagsTestCases = []struct {

View File

@ -88,6 +88,7 @@ var (
"-Wl,--no-undefined-version", "-Wl,--no-undefined-version",
"-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",
} }
deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags), deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags),

View File

@ -224,11 +224,10 @@ func (linker *baseLinker) linkerDeps(ctx DepsContext, deps Deps) Deps {
} }
if ctx.toolchain().Bionic() { 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) { if !Bool(linker.Properties.No_libcrt) {
deps.LateStaticLibs = append(deps.LateStaticLibs, config.BuiltinsRuntimeLibrary(ctx.toolchain())) deps.LateStaticLibs = append(deps.LateStaticLibs, config.BuiltinsRuntimeLibrary(ctx.toolchain()))
deps.LateStaticLibs = append(deps.LateStaticLibs, "libatomic") deps.LateStaticLibs = append(deps.LateStaticLibs, "libatomic")
deps.LateStaticLibs = append(deps.LateStaticLibs, "libgcc_stripped")
} }
systemSharedLibs := linker.Properties.System_shared_libs systemSharedLibs := linker.Properties.System_shared_libs

View File

@ -171,11 +171,13 @@ func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps {
deps.StaticLibs = append(deps.StaticLibs, "libc++demangle") deps.StaticLibs = append(deps.StaticLibs, "libc++demangle")
} }
if ctx.toolchain().Bionic() { if ctx.toolchain().Bionic() {
if ctx.Arch().ArchType == android.Arm {
deps.StaticLibs = append(deps.StaticLibs, "libunwind_llvm")
}
if ctx.staticBinary() { if ctx.staticBinary() {
deps.StaticLibs = append(deps.StaticLibs, "libm", "libc") 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 "": case "":
@ -196,6 +198,8 @@ func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps {
} }
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 {
deps.StaticLibs = append(deps.StaticLibs, "libgcc_stripped")
} }
default: default:
panic(fmt.Errorf("Unknown stl: %q", stl.Properties.SelectedStl)) panic(fmt.Errorf("Unknown stl: %q", stl.Properties.SelectedStl))

View File

@ -136,6 +136,7 @@ func GatherRequiredDepsForTest(os android.OsType) string {
name: "libc", name: "libc",
no_libcrt: true, no_libcrt: true,
nocrt: true, nocrt: true,
stl: "none",
system_shared_libs: [], system_shared_libs: [],
recovery_available: true, recovery_available: true,
} }
@ -147,6 +148,7 @@ func GatherRequiredDepsForTest(os android.OsType) string {
name: "libm", name: "libm",
no_libcrt: true, no_libcrt: true,
nocrt: true, nocrt: true,
stl: "none",
system_shared_libs: [], system_shared_libs: [],
recovery_available: true, recovery_available: true,
} }
@ -158,6 +160,7 @@ func GatherRequiredDepsForTest(os android.OsType) string {
name: "libdl", name: "libdl",
no_libcrt: true, no_libcrt: true,
nocrt: true, nocrt: true,
stl: "none",
system_shared_libs: [], system_shared_libs: [],
recovery_available: true, recovery_available: true,
} }