From 77e62dbf599da68077f2c3c8178140155e8a0417 Mon Sep 17 00:00:00 2001 From: Yi Kong Date: Thu, 9 Aug 2018 14:04:37 -0700 Subject: [PATCH] Move libgcc to libcrt.builtins libgcc is kept behind libcrt.builtins to provide unwinder symbols and any other missing symbols. libc and libm are excluded from the switch due to some symbols being hidden in libcrt.builtins but not in libgcc. These will be addressed in a separate CL. Bug: 29275768 Test: checkbuild and bionic native tests on arm/arm64/x86/x86_64 Change-Id: Icc85bf88513e989a4b1547564405a22cf847db8a --- cc/cc_test.go | 24 ++++++++++++++++++++++++ cc/linker.go | 12 +++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/cc/cc_test.go b/cc/cc_test.go index 3d5dfb155..3fd771b7c 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -84,6 +84,30 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android. recovery_available: true, } + toolchain_library { + name: "libclang_rt.builtins-arm-android", + vendor_available: true, + recovery_available: true, + } + + toolchain_library { + name: "libclang_rt.builtins-aarch64-android", + vendor_available: true, + recovery_available: true, + } + + toolchain_library { + name: "libclang_rt.builtins-i686-android", + vendor_available: true, + recovery_available: true, + } + + toolchain_library { + name: "libclang_rt.builtins-x86_64-android", + vendor_available: true, + recovery_available: true, + } + toolchain_library { name: "libgcc", vendor_available: true, diff --git a/cc/linker.go b/cc/linker.go index 9911b1659..725be2236 100644 --- a/cc/linker.go +++ b/cc/linker.go @@ -16,6 +16,7 @@ package cc import ( "android/soong/android" + "android/soong/cc/config" "fmt" "github.com/google/blueprint" @@ -214,12 +215,13 @@ func (linker *baseLinker) linkerDeps(ctx DepsContext, deps Deps) Deps { deps.WholeStaticLibs = removeListFromList(deps.WholeStaticLibs, linker.Properties.Target.Recovery.Exclude_static_libs) } - if ctx.ModuleName() != "libcompiler_rt-extras" { - deps.LateStaticLibs = append(deps.LateStaticLibs, "libcompiler_rt-extras") - } - if ctx.toolchain().Bionic() { - // libgcc and libatomic have to be last on the command line + // libclang_rt.builtins, libgcc and libatomic have to be last on the command line + // TODO: Also enable for libc and libm + if ctx.ModuleName() != "libc" && ctx.ModuleName() != "libm" { + deps.LateStaticLibs = append(deps.LateStaticLibs, config.BuiltinsRuntimeLibrary(ctx.toolchain())) + } + deps.LateStaticLibs = append(deps.LateStaticLibs, "libatomic") if !Bool(linker.Properties.No_libgcc) { deps.LateStaticLibs = append(deps.LateStaticLibs, "libgcc")