Prevent clang from using the x18 register on arm64.

am: 98d8580c3a

Change-Id: I1fa9d1907b65f8152f35e84d0301e68f6da62c9b
This commit is contained in:
Peter Collingbourne
2018-10-24 20:03:52 -07:00
committed by android-build-merger
3 changed files with 19 additions and 0 deletions

View File

@@ -25,6 +25,11 @@ var (
arm64Cflags = []string{
// Help catch common 32/64-bit errors.
"-Werror=implicit-function-declaration",
// Prevent use of x18 register.
// TODO(pcc): Remove this flag once we upgrade past LLVM r340889
// which does this by default on Android.
"-ffixed-x18",
}
arm64ArchVariantCflags = map[string][]string{

View File

@@ -113,6 +113,13 @@ func (lto *lto) flags(ctx BaseModuleContext, flags Flags) Flags {
flags.LdFlags = append(flags.LdFlags, "-Wl,-plugin-opt,-inline-threshold=0")
flags.LdFlags = append(flags.LdFlags, "-Wl,-plugin-opt,-unroll-threshold=0")
}
if ctx.Arch().ArchType == android.Arm64 {
// Prevent use of x18 register on arm64.
// TODO(pcc): Remove this flag once we upgrade past LLVM r340889
// which does this by default on Android.
flags.LdFlags = append(flags.LdFlags, "-Wl,-plugin-opt,-mattr=+reserve-x18")
}
}
return flags
}

View File

@@ -471,6 +471,13 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
diagSanitizers = append(diagSanitizers, "cfi")
}
if ctx.Arch().ArchType == android.Arm64 {
// Prevent use of x18 register on arm64.
// TODO(pcc): Remove this flag once we upgrade past LLVM r340889
// which does this by default on Android.
flags.LdFlags = append(flags.LdFlags, "-Wl,-plugin-opt,-mattr=+reserve-x18")
}
if ctx.staticBinary() {
_, flags.CFlags = removeFromList("-fsanitize-cfi-cross-dso", flags.CFlags)
_, flags.LdFlags = removeFromList("-fsanitize-cfi-cross-dso", flags.LdFlags)