Merge "Use static libclang_rt.ubsan_standalone runtime for musl"
This commit is contained in:
@@ -1392,6 +1392,7 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
|
|||||||
|
|
||||||
// Determine the runtime library required
|
// Determine the runtime library required
|
||||||
runtimeLibrary := ""
|
runtimeLibrary := ""
|
||||||
|
alwaysStaticRuntime := false
|
||||||
var extraStaticDeps []string
|
var extraStaticDeps []string
|
||||||
toolchain := c.toolchain(mctx)
|
toolchain := c.toolchain(mctx)
|
||||||
if Bool(c.sanitize.Properties.Sanitize.Address) {
|
if Bool(c.sanitize.Properties.Sanitize.Address) {
|
||||||
@@ -1416,8 +1417,15 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
|
|||||||
Bool(c.sanitize.Properties.Sanitize.Undefined) ||
|
Bool(c.sanitize.Properties.Sanitize.Undefined) ||
|
||||||
Bool(c.sanitize.Properties.Sanitize.All_undefined) {
|
Bool(c.sanitize.Properties.Sanitize.All_undefined) {
|
||||||
runtimeLibrary = config.UndefinedBehaviorSanitizerRuntimeLibrary(toolchain)
|
runtimeLibrary = config.UndefinedBehaviorSanitizerRuntimeLibrary(toolchain)
|
||||||
if c.staticBinary() {
|
if c.staticBinary() || toolchain.Musl() {
|
||||||
|
// Use a static runtime for static binaries.
|
||||||
|
// Also use a static runtime for musl to match
|
||||||
|
// what clang does for glibc. Otherwise dlopening
|
||||||
|
// libraries that depend on libclang_rt.ubsan_standalone.so
|
||||||
|
// fails with:
|
||||||
|
// Error relocating ...: initial-exec TLS resolves to dynamic definition
|
||||||
runtimeLibrary += ".static"
|
runtimeLibrary += ".static"
|
||||||
|
alwaysStaticRuntime = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1461,7 +1469,7 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
|
|||||||
//
|
//
|
||||||
// Note that by adding dependency with {static|shared}DepTag, the lib is
|
// Note that by adding dependency with {static|shared}DepTag, the lib is
|
||||||
// added to libFlags and LOCAL_SHARED_LIBRARIES by cc.Module
|
// added to libFlags and LOCAL_SHARED_LIBRARIES by cc.Module
|
||||||
if c.staticBinary() {
|
if c.staticBinary() || alwaysStaticRuntime {
|
||||||
addStaticDeps(runtimeLibrary)
|
addStaticDeps(runtimeLibrary)
|
||||||
addStaticDeps(extraStaticDeps...)
|
addStaticDeps(extraStaticDeps...)
|
||||||
} else if !c.static() && !c.Header() {
|
} else if !c.static() && !c.Header() {
|
||||||
|
Reference in New Issue
Block a user