From 1838ef9be44938a476a6ecaff153b338e28f8e35 Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Thu, 10 May 2018 14:17:22 -0700 Subject: Don't export UBSan minimal runtime symbols. When linking in the UBSan minimal runtime, don't export the symbols. This was resulting in an edge case where symbols were sometimes undefined at runtime on address sanitized builds if static library dependencies were integer overflow sanitized. Bug: 78766744 Test: readelf on libraries show either inclusion of the shared library or no undefined symbols related to the minimal runtime. Change-Id: Ide85c8c6b53b400ce9166ccaf96d250797fe4b24 Merged-In: Ide85c8c6b53b400ce9166ccaf96d250797fe4b24 (cherry picked from commit 59fdea2ac2ded9190eaa9ce81252cd809a2985cb) --- cc/sanitize.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cc/sanitize.go b/cc/sanitize.go index ee549bc0..23a7be44 100644 --- a/cc/sanitize.go +++ b/cc/sanitize.go @@ -300,10 +300,12 @@ func (sanitize *sanitize) deps(ctx BaseModuleContext, deps Deps) Deps { } func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags { - minimalRuntimePath := "${config.ClangAsanLibDir}/" + config.UndefinedBehaviorSanitizerMinimalRuntimeLibrary(ctx.toolchain()) + ".a" + minimalRuntimeLib := config.UndefinedBehaviorSanitizerMinimalRuntimeLibrary(ctx.toolchain()) + ".a" + minimalRuntimePath := "${config.ClangAsanLibDir}/" + minimalRuntimeLib if ctx.Device() && sanitize.Properties.MinimalRuntimeDep { flags.LdFlags = append(flags.LdFlags, minimalRuntimePath) + flags.LdFlags = append(flags.LdFlags, "-Wl,--exclude-libs,"+minimalRuntimeLib) } if !sanitize.Properties.SanitizerEnabled { return flags @@ -449,6 +451,7 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags { if enableMinimalRuntime(sanitize) { flags.CFlags = append(flags.CFlags, strings.Join(minimalRuntimeFlags, " ")) flags.libFlags = append([]string{minimalRuntimePath}, flags.libFlags...) + flags.LdFlags = append(flags.LdFlags, "-Wl,--exclude-libs,"+minimalRuntimeLib) } } } -- cgit v1.2.3