diff --git a/Android.bp b/Android.bp index 0382ee2ed..ab03a36f1 100644 --- a/Android.bp +++ b/Android.bp @@ -596,6 +596,7 @@ toolchain_library { vendor_available: true, recovery_available: true, native_bridge_supported: true, + sdk_version: "current", arch: { arm: { diff --git a/cc/cc_test.go b/cc/cc_test.go index 4d02f4f62..332cc45e7 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -2303,13 +2303,13 @@ func TestStaticLibDepExport(t *testing.T) { // Check the shared version of lib2. variant := "android_arm64_armv8-a_shared" 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. variant = "android_arm64_armv8-a_static" module = ctx.ModuleForTests("lib2", variant).Module().(*Module) // 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 { diff --git a/cc/config/global.go b/cc/config/global.go index 6b02429f4..1ce29b981 100644 --- a/cc/config/global.go +++ b/cc/config/global.go @@ -88,6 +88,7 @@ var ( "-Wl,--no-undefined-version", "-Wl,--exclude-libs,libgcc.a", "-Wl,--exclude-libs,libgcc_stripped.a", + "-Wl,--exclude-libs,libunwind_llvm.a", } deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags), diff --git a/cc/linker.go b/cc/linker.go index 61ae7575a..6f2e5b7d0 100644 --- a/cc/linker.go +++ b/cc/linker.go @@ -224,11 +224,10 @@ func (linker *baseLinker) linkerDeps(ctx DepsContext, deps Deps) Deps { } 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) { deps.LateStaticLibs = append(deps.LateStaticLibs, config.BuiltinsRuntimeLibrary(ctx.toolchain())) deps.LateStaticLibs = append(deps.LateStaticLibs, "libatomic") - deps.LateStaticLibs = append(deps.LateStaticLibs, "libgcc_stripped") } systemSharedLibs := linker.Properties.System_shared_libs diff --git a/cc/stl.go b/cc/stl.go index 5ccd44a4a..af015f91d 100644 --- a/cc/stl.go +++ b/cc/stl.go @@ -171,11 +171,13 @@ func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps { deps.StaticLibs = append(deps.StaticLibs, "libc++demangle") } if ctx.toolchain().Bionic() { - if ctx.Arch().ArchType == android.Arm { - deps.StaticLibs = append(deps.StaticLibs, "libunwind_llvm") - } if ctx.staticBinary() { 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 "": @@ -196,6 +198,8 @@ func (stl *stl) deps(ctx BaseModuleContext, deps Deps) Deps { } if ctx.Arch().ArchType == android.Arm { deps.StaticLibs = append(deps.StaticLibs, "ndk_libunwind") + } else { + deps.StaticLibs = append(deps.StaticLibs, "libgcc_stripped") } default: panic(fmt.Errorf("Unknown stl: %q", stl.Properties.SelectedStl)) diff --git a/cc/testing.go b/cc/testing.go index 198a346f5..ba8ed95dd 100644 --- a/cc/testing.go +++ b/cc/testing.go @@ -136,6 +136,7 @@ func GatherRequiredDepsForTest(os android.OsType) string { name: "libc", no_libcrt: true, nocrt: true, + stl: "none", system_shared_libs: [], recovery_available: true, } @@ -147,6 +148,7 @@ func GatherRequiredDepsForTest(os android.OsType) string { name: "libm", no_libcrt: true, nocrt: true, + stl: "none", system_shared_libs: [], recovery_available: true, } @@ -158,6 +160,7 @@ func GatherRequiredDepsForTest(os android.OsType) string { name: "libdl", no_libcrt: true, nocrt: true, + stl: "none", system_shared_libs: [], recovery_available: true, }