Revert "Allow Linux hosts to use ubsan runtime sanitizers."
This reverts commit dbc5000c5b6ca1f0968207686c4f41fbff18d7a7.
Reason for revert: Build breakage.
Change-Id: Ia6a1b58f156e4cc071562043c2f99f78b45b7968
Exempt-From-Owner-Approval: Reverting change due to build breakage.
diff --git a/cc/config/x86_linux_host.go b/cc/config/x86_linux_host.go
index 13b5511..f08a379 100644
--- a/cc/config/x86_linux_host.go
+++ b/cc/config/x86_linux_host.go
@@ -234,7 +234,7 @@
}
func (toolchainLinuxX86) LibclangRuntimeLibraryArch() string {
- return "i386"
+ return "i686"
}
func (toolchainLinuxX8664) LibclangRuntimeLibraryArch() string {
diff --git a/cc/sanitize.go b/cc/sanitize.go
index ecaafe4..93c4b41 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -334,8 +334,8 @@
s.Diag.Cfi = nil
}
- // Disable sanitizers that depend on the UBSan runtime for windows/darwin builds.
- if !ctx.Os().Linux() {
+ // Disable sanitizers that depend on the UBSan runtime for host builds.
+ if ctx.Host() {
s.Cfi = nil
s.Diag.Cfi = nil
s.Misc_undefined = nil
@@ -433,18 +433,11 @@
func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
minimalRuntimeLib := config.UndefinedBehaviorSanitizerMinimalRuntimeLibrary(ctx.toolchain()) + ".a"
minimalRuntimePath := "${config.ClangAsanLibDir}/" + minimalRuntimeLib
- builtinsRuntimeLib := config.BuiltinsRuntimeLibrary(ctx.toolchain()) + ".a"
- builtinsRuntimePath := "${config.ClangAsanLibDir}/" + builtinsRuntimeLib
- if sanitize.Properties.MinimalRuntimeDep {
+ if ctx.Device() && sanitize.Properties.MinimalRuntimeDep {
flags.Local.LdFlags = append(flags.Local.LdFlags,
minimalRuntimePath,
"-Wl,--exclude-libs,"+minimalRuntimeLib)
- if ctx.Host() {
- flags.Local.LdFlags = append(flags.Local.LdFlags,
- builtinsRuntimePath,
- "-Wl,--exclude-libs,"+builtinsRuntimeLib)
- }
}
if !sanitize.Properties.SanitizerEnabled && !sanitize.Properties.UbsanRuntimeDep {
return flags
@@ -548,15 +541,11 @@
// there will always be undefined symbols in intermediate libraries.
_, flags.Global.LdFlags = removeFromList("-Wl,--no-undefined", flags.Global.LdFlags)
flags.Local.LdFlags = append(flags.Local.LdFlags, sanitizeArg)
- }
-
- if enableMinimalRuntime(sanitize) {
- flags.Local.CFlags = append(flags.Local.CFlags, strings.Join(minimalRuntimeFlags, " "))
- flags.libFlags = append([]string{minimalRuntimePath}, flags.libFlags...)
- flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--exclude-libs,"+minimalRuntimeLib)
- if !ctx.toolchain().Bionic() {
- flags.libFlags = append([]string{builtinsRuntimePath}, flags.libFlags...)
- flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--exclude-libs,"+builtinsRuntimeLib)
+ } else {
+ if enableMinimalRuntime(sanitize) {
+ flags.Local.CFlags = append(flags.Local.CFlags, strings.Join(minimalRuntimeFlags, " "))
+ flags.libFlags = append([]string{minimalRuntimePath}, flags.libFlags...)
+ flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--exclude-libs,"+minimalRuntimeLib)
}
}
@@ -899,46 +888,34 @@
runtimeLibrary = config.UndefinedBehaviorSanitizerRuntimeLibrary(toolchain)
}
- if runtimeLibrary != "" {
- // Devices and LinuxBionic use the same libraries.
- if toolchain.Bionic() {
- if isLlndkLibrary(runtimeLibrary, mctx.Config()) && !c.static() && c.UseVndk() {
- runtimeLibrary = runtimeLibrary + llndkLibrarySuffix
- }
-
- // Adding dependency to the runtime library. We are using *FarVariation*
- // because the runtime libraries themselves are not mutated by sanitizer
- // mutators and thus don't have sanitizer variants whereas this module
- // has been already mutated.
- //
- // Note that by adding dependency with {static|shared}DepTag, the lib is
- // added to libFlags and LOCAL_SHARED_LIBRARIES by cc.Module
- if c.staticBinary() {
- // static executable gets static runtime libs
- mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{
- {Mutator: "link", Variation: "static"},
- c.ImageVariation(),
- }...), StaticDepTag, append([]string{runtimeLibrary}, extraStaticDeps...)...)
- } else if !c.static() && !c.header() {
- // dynamic executable and shared libs get shared runtime libs
- mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{
- {Mutator: "link", Variation: "shared"},
- c.ImageVariation(),
- }...), earlySharedDepTag, runtimeLibrary)
- }
- // static lib does not have dependency to the runtime library. The
- // dependency will be added to the executables or shared libs using
- // the static lib.
- } else {
- if c.sanitize.Properties.UbsanRuntimeDep {
- // Support UBSan runtime on host modules, which requires the builtins linked in as well.
- mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{
- {Mutator: "link", Variation: "static"},
- c.ImageVariation(),
- }...), StaticDepTag, append([]string{runtimeLibrary, config.BuiltinsRuntimeLibrary(toolchain)},
- extraStaticDeps...)...)
- }
+ if mctx.Device() && runtimeLibrary != "" {
+ if isLlndkLibrary(runtimeLibrary, mctx.Config()) && !c.static() && c.UseVndk() {
+ runtimeLibrary = runtimeLibrary + llndkLibrarySuffix
}
+
+ // Adding dependency to the runtime library. We are using *FarVariation*
+ // because the runtime libraries themselves are not mutated by sanitizer
+ // mutators and thus don't have sanitizer variants whereas this module
+ // has been already mutated.
+ //
+ // Note that by adding dependency with {static|shared}DepTag, the lib is
+ // added to libFlags and LOCAL_SHARED_LIBRARIES by cc.Module
+ if c.staticBinary() {
+ // static executable gets static runtime libs
+ mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{
+ {Mutator: "link", Variation: "static"},
+ c.ImageVariation(),
+ }...), StaticDepTag, append([]string{runtimeLibrary}, extraStaticDeps...)...)
+ } else if !c.static() && !c.header() {
+ // dynamic executable and shared libs get shared runtime libs
+ mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{
+ {Mutator: "link", Variation: "shared"},
+ c.ImageVariation(),
+ }...), earlySharedDepTag, runtimeLibrary)
+ }
+ // static lib does not have dependency to the runtime library. The
+ // dependency will be added to the executables or shared libs using
+ // the static lib.
}
}
}