diff options
-rw-r--r-- | build/common.gypi | 7 | ||||
-rw-r--r-- | build/config/sanitizers/sanitizers.gni | 11 | ||||
-rw-r--r-- | chrome/installer/linux/debian/expected_deps_x64 | 2 |
3 files changed, 15 insertions, 5 deletions
diff --git a/build/common.gypi b/build/common.gypi index 800cefe..b2e8e6e 100644 --- a/build/common.gypi +++ b/build/common.gypi @@ -855,6 +855,13 @@ 'enable_prod_wallet_service%': 1, }], + # Enable Control Flow Integrity for the official Linux Chrome. + # This triggers an LTO build that requires LLVM Gold plugin to be + # downloaded. See src/tools/clang/scripts/update.py + ['OS=="linux" and target_arch=="x64" and buildtype=="Official" and branding=="Chrome" and chromeos==0', { + 'cfi_vptr%': 1, + }], + # Enable hotwording on Chrome-branded ChromeOS builds. ['branding=="Chrome" and chromeos==1', { 'enable_hotwording%': 1, diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni index f8f469c..6d12813 100644 --- a/build/config/sanitizers/sanitizers.gni +++ b/build/config/sanitizers/sanitizers.gni @@ -2,6 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/chrome_build.gni") + declare_args() { # Compile for Address Sanitizer to find memory bugs. is_asan = false @@ -37,10 +39,6 @@ declare_args() { # https://code.google.com/p/sawbuck/wiki/SyzyASanHowTo is_syzyasan = false - # Compile with Control Flow Integrity to protect virtual calls and casts. - # See http://clang.llvm.org/docs/ControlFlowIntegrity.html - is_cfi = false - # By default, Control Flow Integrity will crash the program if it detects a # violation. Set this to true to print detailed diagnostics instead. use_cfi_diag = false @@ -58,6 +56,11 @@ declare_args() { # declare_args block. User overrides are only applied at the end of a # declare_args block. declare_args() { + # Compile with Control Flow Integrity to protect virtual calls and casts. + # See http://clang.llvm.org/docs/ControlFlowIntegrity.html + is_cfi = is_linux && !is_chromeos && target_cpu == "x64" && + is_chrome_branded && is_official_build + # Use libc++ (buildtools/third_party/libc++ and # buildtools/third_party/libc++abi) instead of stdlibc++ as standard library. # This is intended to be used for instrumented builds. diff --git a/chrome/installer/linux/debian/expected_deps_x64 b/chrome/installer/linux/debian/expected_deps_x64 index f1d0084..24d6a3f 100644 --- a/chrome/installer/linux/debian/expected_deps_x64 +++ b/chrome/installer/linux/debian/expected_deps_x64 @@ -4,7 +4,7 @@ libatk1.0-0 (>= 1.12.4) libc6 (>= 2.12) libcairo2 (>= 1.6.0) libcups2 (>= 1.4.0) -libdbus-1-3 (>= 1.2.14) +libdbus-1-3 (>= 1.1.4) libexpat1 (>= 1.95.8) libfontconfig1 (>= 2.8.0) libfreetype6 (>= 2.3.9) |