From aed71a89bc0afae47f1f2c7b228fe2d79d2b81fe Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Thu, 9 Oct 2014 17:53:04 +0000 Subject: Add experimental clang/driver flag -fsanitize-address-field-padding=N Summary: This change adds an experimental flag -fsanitize-address-field-padding=N (0, 1, 2) to clang and driver. With this flag ASAN will be able to detect some cases of intra-object-overflow bugs, see https://code.google.com/p/address-sanitizer/wiki/IntraObjectOverflow There is no actual functionality here yet, just the flag parsing. The functionality is being reviewed at http://reviews.llvm.org/D5687 Test Plan: Build and run SPEC, LLVM Bootstrap, Chrome with this flag. Reviewers: samsonov Reviewed By: samsonov Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5676 llvm-svn: 219417 --- clang/include/clang/Basic/LangOptions.h | 3 +++ clang/include/clang/Driver/Options.td | 3 +++ clang/include/clang/Driver/SanitizerArgs.h | 1 + 3 files changed, 7 insertions(+) (limited to 'clang/include') diff --git a/clang/include/clang/Basic/LangOptions.h b/clang/include/clang/Basic/LangOptions.h index 1dac4b42775..47a74f06142 100644 --- a/clang/include/clang/Basic/LangOptions.h +++ b/clang/include/clang/Basic/LangOptions.h @@ -26,6 +26,9 @@ namespace clang { struct SanitizerOptions { #define SANITIZER(NAME, ID) unsigned ID : 1; #include "clang/Basic/Sanitizers.def" + /// \brief Controls how agressive is asan field padding (0: none, 1: least + /// aggressive, 2: more aggressive). + unsigned SanitizeAddressFieldPadding : 2; /// \brief Cached set of sanitizer options with all sanitizers disabled. static const SanitizerOptions Disabled; diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 1d2ef6f988c..b24d16ba068 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -526,6 +526,9 @@ def fsanitize_memory_track_origins : Flag<["-"], "fsanitize-memory-track-origins def fno_sanitize_memory_track_origins : Flag<["-"], "fno-sanitize-memory-track-origins">, Group, Flags<[CC1Option]>, HelpText<"Disable origins tracking in MemorySanitizer">; +def fsanitize_address_field_padding : Joined<["-"], "fsanitize-address-field-padding=">, + Group, Flags<[CC1Option]>, + HelpText<"Level of field padding for AddressSanitizer">; def fsanitize_recover : Flag<["-"], "fsanitize-recover">, Group; def fno_sanitize_recover : Flag<["-"], "fno-sanitize-recover">, diff --git a/clang/include/clang/Driver/SanitizerArgs.h b/clang/include/clang/Driver/SanitizerArgs.h index 8f011abba81..46fd4b6d5ea 100644 --- a/clang/include/clang/Driver/SanitizerArgs.h +++ b/clang/include/clang/Driver/SanitizerArgs.h @@ -49,6 +49,7 @@ class SanitizerArgs { std::string BlacklistFile; int MsanTrackOrigins; + int AsanFieldPadding; bool AsanZeroBaseShadow; bool UbsanTrapOnError; bool AsanSharedRuntime; -- cgit v1.2.3