Add ubsan_standalone library name to the toolchain. am: af36db1178

am: d820bdeda7

Change-Id: I001e87ffd49b6e7e7c476b3280a5c6ea7663fc60
This commit is contained in:
Evgenii Stepanov
2016-08-16 21:10:19 +00:00
committed by android-build-merger
9 changed files with 36 additions and 14 deletions

View File

@@ -184,8 +184,8 @@ func (t *toolchainArm64) ToolchainClangCflags() string {
return t.toolchainClangCflags
}
func (toolchainArm64) AddressSanitizerRuntimeLibrary() string {
return "libclang_rt.asan-aarch64-android.so"
func (toolchainArm64) SanitizerRuntimeLibraryArch() string {
return "aarch64"
}
func arm64ToolchainFactory(arch android.Arch) Toolchain {

View File

@@ -336,8 +336,8 @@ func (t *toolchainArm) ClangInstructionSetFlags(isa string) (string, error) {
}
}
func (toolchainArm) AddressSanitizerRuntimeLibrary() string {
return "libclang_rt.asan-arm-android.so"
func (toolchainArm) SanitizerRuntimeLibraryArch() string {
return "arm"
}
func armToolchainFactory(arch android.Arch) Toolchain {

View File

@@ -177,8 +177,8 @@ func (t *toolchainMips64) ClangLdflags() string {
return "${config.Mips64ClangLdflags}"
}
func (toolchainMips64) AddressSanitizerRuntimeLibrary() string {
return "libclang_rt.asan-mips64-android.so"
func (toolchainMips64) SanitizerRuntimeLibraryArch() string {
return "mips64"
}
func mips64ToolchainFactory(arch android.Arch) Toolchain {

View File

@@ -226,8 +226,8 @@ func (t *toolchainMips) ClangLdflags() string {
return "${config.MipsClangLdflags}"
}
func (toolchainMips) AddressSanitizerRuntimeLibrary() string {
return "libclang_rt.asan-mips-android.so"
func (toolchainMips) SanitizerRuntimeLibraryArch() string {
return "mips"
}
func mipsToolchainFactory(arch android.Arch) Toolchain {

View File

@@ -71,7 +71,7 @@ type Toolchain interface {
ShlibSuffix() string
ExecutableSuffix() string
AddressSanitizerRuntimeLibrary() string
SanitizerRuntimeLibraryArch() string
AvailableLibraries() []string
}
@@ -125,7 +125,7 @@ func (toolchainBase) ClangAsflags() string {
return ""
}
func (toolchainBase) AddressSanitizerRuntimeLibrary() string {
func (toolchainBase) SanitizerRuntimeLibraryArch() string {
return ""
}
@@ -188,3 +188,19 @@ func indexList(s string, list []string) int {
func inList(s string, list []string) bool {
return indexList(s, list) != -1
}
func AddressSanitizerRuntimeLibrary(t Toolchain) string {
arch := t.SanitizerRuntimeLibraryArch()
if arch == "" {
return ""
}
return "libclang_rt.asan-" + arch + "-android.so"
}
func UndefinedBehaviorSanitizerRuntimeLibrary(t Toolchain) string {
arch := t.SanitizerRuntimeLibraryArch()
if arch == "" {
return ""
}
return "libclang_rt.ubsan_standalone-" + arch + "-android.so"
}

View File

@@ -232,6 +232,10 @@ func (t *toolchainX86_64) ClangLdflags() string {
return "${config.X86_64Ldflags}"
}
func (toolchainX86_64) SanitizerRuntimeLibraryArch() string {
return "x86_64"
}
func x86_64ToolchainFactory(arch android.Arch) Toolchain {
toolchainCflags := []string{
"${config.X86_64ToolchainCflags}",

View File

@@ -251,8 +251,8 @@ func (t *toolchainX86) ClangLdflags() string {
return "${config.X86Ldflags}"
}
func (toolchainX86) AddressSanitizerRuntimeLibrary() string {
return "libclang_rt.asan-i686-android.so"
func (toolchainX86) SanitizerRuntimeLibraryArch() string {
return "i686"
}
func x86ToolchainFactory(arch android.Arch) Toolchain {

View File

@@ -172,7 +172,8 @@ func makeVarsToolchain(ctx android.MakeVarsContext, secondPrefix string,
}, " "))
if target.Os.Class == android.Device {
ctx.Strict(secondPrefix+"ADDRESS_SANITIZER_RUNTIME_LIBRARY", strings.TrimSuffix(toolchain.AddressSanitizerRuntimeLibrary(), ".so"))
ctx.Strict(secondPrefix+"ADDRESS_SANITIZER_RUNTIME_LIBRARY", strings.TrimSuffix(config.AddressSanitizerRuntimeLibrary(toolchain), ".so"))
ctx.Strict(secondPrefix+"UBSAN_RUNTIME_LIBRARY", strings.TrimSuffix(config.UndefinedBehaviorSanitizerRuntimeLibrary(toolchain), ".so"))
}
// This is used by external/gentoo/...

View File

@@ -21,6 +21,7 @@ import (
"github.com/google/blueprint"
"android/soong/android"
"android/soong/cc/config"
)
type sanitizerType int
@@ -239,7 +240,7 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
flags.LdFlags = append(flags.LdFlags, "-Wl,-u,__asan_preinit")
// ASan runtime library must be the first in the link order.
runtimeLibrary := ctx.toolchain().AddressSanitizerRuntimeLibrary()
runtimeLibrary := config.AddressSanitizerRuntimeLibrary(ctx.toolchain())
if runtimeLibrary != "" {
flags.libFlags = append([]string{"${config.ClangAsanLibDir}/" + runtimeLibrary}, flags.libFlags...)
}