aboutsummaryrefslogtreecommitdiff
path: root/compiler_wrapper/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'compiler_wrapper/config.go')
-rw-r--r--compiler_wrapper/config.go147
1 files changed, 60 insertions, 87 deletions
diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go
index 6c28287c..6c3fcf52 100644
--- a/compiler_wrapper/config.go
+++ b/compiler_wrapper/config.go
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium OS Authors. All rights reserved.
+// Copyright 2019 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -34,7 +34,7 @@ type config struct {
triciumNitsDir string
// Directory to store crash artifacts in.
crashArtifactsDir string
- // Version. Only used for printing via -print-cmd.
+ // Version. Only exposed via -print-config.
version string
}
@@ -83,13 +83,13 @@ func getConfig(configName string, useCCache bool, useLlvmNext bool, version stri
cfg := config{}
switch configName {
case "cros.hardened":
- cfg = *crosHardenedConfig
+ cfg = crosHardenedConfig
case "cros.nonhardened":
- cfg = *crosNonHardenedConfig
+ cfg = crosNonHardenedConfig
case "cros.host":
- cfg = *crosHostConfig
+ cfg = crosHostConfig
case "android":
- cfg = *androidConfig
+ cfg = androidConfig
default:
return nil, newErrorwithSourceLocf("unknown config name: %s", configName)
}
@@ -103,9 +103,42 @@ func getConfig(configName string, useCCache bool, useLlvmNext bool, version stri
return &cfg, nil
}
+func crosCommonClangFlags() []string {
+ // Temporarily disable tautological-*-compare chromium:778316.
+ // Temporarily add no-unknown-warning-option to deal with old clang versions.
+ // Temporarily disable Wdeprecated-declarations. b/193860318
+ // b/230345382: Temporarily disable Wimplicit-function-declaration.
+ // b/231987783: Temporarily disable Wimplicit-int.
+ return []string{
+ "-Qunused-arguments",
+ "-Werror=poison-system-directories",
+ "-Wno-compound-token-split-by-macro",
+ "-Wno-deprecated-declarations",
+ "-Wno-error=implicit-function-declaration",
+ "-Wno-error=implicit-int",
+ "-Wno-final-dtor-non-final-class",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-fdebug-default-version=5",
+ "-fexperimental-new-pass-manager",
+ }
+}
+
+func crosCommonClangPostFlags() []string {
+ // Temporarily disable Wdeprecated-copy. b/191479033
+ return []string{
+ "-Wno-compound-token-split-by-space",
+ "-Wno-deprecated-copy",
+ "-Wno-unused-but-set-variable",
+ "-Wno-implicit-int-float-conversion",
+ "-Wno-string-concatenation",
+ }
+}
+
// Full hardening.
// Temporarily disable function splitting because of chromium:434751.
-var crosHardenedConfig = &config{
+var crosHardenedConfig = config{
clangRootRelPath: "../..",
gccRootRelPath: "../../../../..",
// Pass "-fcommon" till the packages are fixed to work with new clang/gcc
@@ -113,8 +146,6 @@ var crosHardenedConfig = &config{
commonFlags: []string{
"-fcommon",
"-fstack-protector-strong",
- "-fPIE",
- "-pie",
"-D_FORTIFY_SOURCE=2",
"-fno-omit-frame-pointer",
},
@@ -123,46 +154,27 @@ var crosHardenedConfig = &config{
"-Wno-unused-local-typedefs",
"-Wno-maybe-uninitialized",
},
- // Temporarily disable tautological-*-compare chromium:778316.
- // Temporarily add no-unknown-warning-option to deal with old clang versions.
// Temporarily disable Wsection since kernel gets a bunch of these. chromium:778867
// Disable "-faddrsig" since it produces object files that strip doesn't understand, chromium:915742.
// crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache;
// removed that flag for now.
- // Temporarily disable Wdeprecated-declarations. b/193860318
-
- clangFlags: []string{
- "-Qunused-arguments",
- "-fno-addrsig",
- "-fdebug-default-version=5",
- "-Wno-tautological-constant-compare",
- "-Wno-tautological-unsigned-enum-zero-compare",
- "-Wno-unknown-warning-option",
+ clangFlags: append(
+ crosCommonClangFlags(),
+ "--unwindlib=libunwind",
"-Wno-section",
+ "-fno-addrsig",
"-fuse-ld=lld",
- "--unwindlib=libgcc",
- "-Wno-final-dtor-non-final-class",
- "-Werror=poison-system-directories",
- "-fexperimental-new-pass-manager",
- "-Wno-compound-token-split-by-macro",
- "-Wno-deprecated-declarations",
- },
-
- // Temporarily disable Wdeprecated-copy. b/191479033
- clangPostFlags: []string{
- "-Wno-implicit-int-float-conversion",
- "-Wno-compound-token-split-by-space",
- "-Wno-string-concatenation",
- "-Wno-deprecated-copy",
- "-Wno-unused-but-set-variable",
- },
+ "-ftrivial-auto-var-init=zero",
+ "-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang",
+ ),
+ clangPostFlags: crosCommonClangPostFlags(),
newWarningsDir: "/tmp/fatal_clang_warnings",
triciumNitsDir: "/tmp/linting_output/clang-tidy",
crashArtifactsDir: "/tmp/clang_crash_diagnostics",
}
// Flags to be added to non-hardened toolchain.
-var crosNonHardenedConfig = &config{
+var crosNonHardenedConfig = config{
clangRootRelPath: "../..",
gccRootRelPath: "../../../../..",
commonFlags: []string{},
@@ -172,39 +184,19 @@ var crosNonHardenedConfig = &config{
"-Wno-deprecated-declarations",
"-Wtrampolines",
},
- // Temporarily disable tautological-*-compare chromium:778316.
- // Temporarily add no-unknown-warning-option to deal with old clang versions.
// Temporarily disable Wsection since kernel gets a bunch of these. chromium:778867
- // Temporarily disable Wdeprecated-declarations. b/193860318
- clangFlags: []string{
- "-Qunused-arguments",
- "-fdebug-default-version=5",
- "-Wno-tautological-constant-compare",
- "-Wno-tautological-unsigned-enum-zero-compare",
- "-Wno-unknown-warning-option",
+ clangFlags: append(
+ crosCommonClangFlags(),
"-Wno-section",
- "-Wno-final-dtor-non-final-class",
- "-Werror=poison-system-directories",
- "-fexperimental-new-pass-manager",
- "-Wno-compound-token-split-by-macro",
- "-Wno-deprecated-declarations",
- },
-
- // Temporarily disable Wdeprecated-copy. b/191479033
- clangPostFlags: []string{
- "-Wno-implicit-int-float-conversion",
- "-Wno-compound-token-split-by-space",
- "-Wno-string-concatenation",
- "-Wno-deprecated-copy",
- "-Wno-unused-but-set-variable",
- },
+ ),
+ clangPostFlags: crosCommonClangPostFlags(),
newWarningsDir: "/tmp/fatal_clang_warnings",
triciumNitsDir: "/tmp/linting_output/clang-tidy",
crashArtifactsDir: "/tmp/clang_crash_diagnostics",
}
// Flags to be added to host toolchain.
-var crosHostConfig = &config{
+var crosHostConfig = config{
isHostWrapper: true,
clangRootRelPath: "../..",
gccRootRelPath: "../..",
@@ -218,41 +210,22 @@ var crosHostConfig = &config{
"-Wno-unused-local-typedefs",
"-Wno-deprecated-declarations",
},
- // Temporarily disable tautological-*-compare chromium:778316.
- // Temporarily add no-unknown-warning-option to deal with old clang versions.
// crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache;
// removed that flag for now.
- // Temporarily disable Wdeprecated-declarations. b/193860318
- clangFlags: []string{
- "-Qunused-arguments",
+ clangFlags: append(
+ crosCommonClangFlags(),
+ "-Wno-unused-local-typedefs",
"-fno-addrsig",
"-fuse-ld=lld",
- "-fdebug-default-version=5",
- "-Wno-unused-local-typedefs",
- "-Wno-tautological-constant-compare",
- "-Wno-tautological-unsigned-enum-zero-compare",
- "-Wno-final-dtor-non-final-class",
- "-Werror=poison-system-directories",
- "-Wno-unknown-warning-option",
- "-fexperimental-new-pass-manager",
- "-Wno-compound-token-split-by-macro",
- "-Wno-deprecated-declarations",
- },
-
+ ),
// Temporarily disable Wdeprecated-copy. b/191479033
- clangPostFlags: []string{
- "-Wno-implicit-int-float-conversion",
- "-Wno-compound-token-split-by-space",
- "-Wno-string-concatenation",
- "-Wno-deprecated-copy",
- "-Wno-unused-but-set-variable",
- },
+ clangPostFlags: crosCommonClangPostFlags(),
newWarningsDir: "/tmp/fatal_clang_warnings",
triciumNitsDir: "/tmp/linting_output/clang-tidy",
crashArtifactsDir: "/tmp/clang_crash_diagnostics",
}
-var androidConfig = &config{
+var androidConfig = config{
isHostWrapper: false,
isAndroidWrapper: true,
gccRootRelPath: "./",