From f9fa2d112bef458ea765043f1ba3104ce013b1fe Mon Sep 17 00:00:00 2001 From: Peter Kasting Date: Wed, 28 Aug 2024 14:43:27 -0700 Subject: [PATCH] [reland] Don't redefine macros from base/compiler_specific.h. `DISABLE_CFI_ICALL` is already defined in that header; use it. This is both simpler and less likely to trigger macro redefinition errors. This was previously landed in crrev.com/c/5805458, but reverted due to crbug.com/362787700. Bug: chromium:362787700 Change-Id: I1fc8d9dc0b099c67ea7d774034b7691691ff2a50 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5825328 Reviewed-by: Joshua Peraza --- handler/BUILD.gn | 6 ++++-- util/BUILD.gn | 5 ++++- util/misc/no_cfi_icall.h | 19 +------------------ 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/handler/BUILD.gn b/handler/BUILD.gn index a2d6f7fb..0b4f1bc5 100644 --- a/handler/BUILD.gn +++ b/handler/BUILD.gn @@ -222,9 +222,11 @@ if (crashpad_is_android) { if (crashpad_is_in_chromium) { # Chromium's sanitizer runtime libraries do not include an unwinder, # so add Chromium's standard dependencies to link against the in-tree - # libunwind. + # libunwind. The coverage wrapper similarly requires an unwinder, as + # well as a few other bits from libc++abi. + import("//build/config/coverage/coverage.gni") import("//build/config/sanitizers/sanitizers.gni") - no_default_deps = !using_sanitizer + no_default_deps = !use_clang_coverage && !using_sanitizer remove_configs = [ "//build/config/android:default_orderfile_instrumentation" ] } diff --git a/util/BUILD.gn b/util/BUILD.gn index d4f4b2d0..8d037fea 100644 --- a/util/BUILD.gn +++ b/util/BUILD.gn @@ -730,7 +730,10 @@ if (!crashpad_is_android && !crashpad_is_ios) { source_set("no_cfi_icall") { sources = [ "misc/no_cfi_icall.h" ] public_configs = [ "..:crashpad_config" ] - public_deps = [ "$mini_chromium_source_parent:build" ] + public_deps = [ + "$mini_chromium_source_parent:base", + "$mini_chromium_source_parent:build", + ] } source_set("util_test") { diff --git a/util/misc/no_cfi_icall.h b/util/misc/no_cfi_icall.h index bb3e5940..7410026d 100644 --- a/util/misc/no_cfi_icall.h +++ b/util/misc/no_cfi_icall.h @@ -18,6 +18,7 @@ #include #include +#include "base/compiler_specific.h" #include "build/build_config.h" #if BUILDFLAG(IS_WIN) @@ -28,24 +29,6 @@ namespace crashpad { namespace { -// Sanitizers annotations. -#if defined(__has_attribute) -#if __has_attribute(no_sanitize) -#define NO_SANITIZE(what) __attribute__((no_sanitize(what))) -#endif -#endif -#if !defined(NO_SANITIZE) -#define NO_SANITIZE(what) -#endif - -// DISABLE_CFI_ICALL -- Disable Control Flow Integrity indirect call checks. -#if BUILDFLAG(IS_WIN) -// Windows also needs __declspec(guard(nocf)). -#define DISABLE_CFI_ICALL NO_SANITIZE("cfi-icall") __declspec(guard(nocf)) -#else -#define DISABLE_CFI_ICALL NO_SANITIZE("cfi-icall") -#endif - template struct FunctorTraits;