diff --git a/cc/cc_test.go b/cc/cc_test.go index bca26ea24..ead89f6e3 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -86,6 +86,34 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android. src: "", } + toolchain_library { + name: "libclang_rt.builtins-arm-android", + vendor_available: true, + recovery_available: true, + src: "", + } + + toolchain_library { + name: "libclang_rt.builtins-aarch64-android", + vendor_available: true, + recovery_available: true, + src: "", + } + + toolchain_library { + name: "libclang_rt.builtins-i686-android", + vendor_available: true, + recovery_available: true, + src: "", + } + + toolchain_library { + name: "libclang_rt.builtins-x86_64-android", + vendor_available: true, + recovery_available: true, + src: "", + } + toolchain_library { name: "libgcc", vendor_available: true, diff --git a/cc/linker.go b/cc/linker.go index e3f1ff1f2..6d4d07b3a 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")