Skip to content
Snippets Groups Projects
  1. Oct 31, 2017
    • Vlad Tsyrklevich's avatar
      [CFI] Add CFI-icall pointer type generalization · 746fd88c
      Vlad Tsyrklevich authored
      Summary:
      This change allows generalizing pointers in type signatures used for
      cfi-icall by enabling the -fsanitize-cfi-icall-generalize-pointers flag.
      This works by 1) emitting an additional generalized type signature
      metadata node for functions and 2) llvm.type.test()ing for the
      generalized type for translation units with the flag specified.
      
      This flag is incompatible with -fsanitize-cfi-cross-dso because it would
      require emitting twice as many type hashes which would increase artifact
      size.
      
      Reviewers: pcc, eugenis
      
      Reviewed By: pcc
      
      Subscribers: kcc
      
      Differential Revision: https://reviews.llvm.org/D39358
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@317044 91177308-0d34-0410-b5e6-96231b3b80d8
      746fd88c
  2. Sep 26, 2017
    • Vlad Tsyrklevich's avatar
      Allow specifying sanitizers in blacklists · 156b6794
      Vlad Tsyrklevich authored
      Summary:
      This is the follow-up patch to D37924.
      
      This change refactors clang to use the the newly added section headers
      in SpecialCaseList to specify which sanitizers blacklists entries
      should apply to, like so:
      
        [cfi-vcall]
        fun:*bad_vcall*
        [cfi-derived-cast|cfi-unrelated-cast]
        fun:*bad_cast*
      
      The SanitizerSpecialCaseList class has been added to allow querying by
      SanitizerMask, and SanitizerBlacklist and its downstream users have been
      updated to provide that information. Old blacklists not using sections
      will continue to function identically since the blacklist entries will
      be placed into a '[*]' section by default matching against all
      sanitizers.
      
      Reviewers: pcc, kcc, eugenis, vsk
      
      Reviewed By: eugenis
      
      Subscribers: dberris, cfe-commits, mgorny
      
      Differential Revision: https://reviews.llvm.org/D37925
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@314171 91177308-0d34-0410-b5e6-96231b3b80d8
      156b6794
  3. Apr 28, 2016
  4. Apr 27, 2016
    • Peter Collingbourne's avatar
      Rework interface for bitset-using features to use a notion of LTO visibility. · 47213cf9
      Peter Collingbourne authored
      Bitsets, and the compiler features they rely on (vtable opt, CFI),
      only have visibility within the LTO'd part of the linkage unit. Therefore,
      only enable these features for classes with hidden LTO visibility. This
      notion is based on object file visibility or (on Windows)
      dllimport/dllexport attributes.
      
      We provide the [[clang::lto_visibility_public]] attribute to override the
      compiler's LTO visibility inference in cases where the class is defined
      in the non-LTO'd part of the linkage unit, or where the ABI supports
      calling classes derived from abstract base classes with hidden visibility
      in other linkage units (e.g. COM on Windows).
      
      If the cross-DSO CFI mode is enabled, bitset checks are emitted even for
      classes with public LTO visibility, as that mode uses a separate mechanism
      to cause bitsets to be exported.
      
      This mechanism replaces the whole-program-vtables blacklist, so remove the
      -fwhole-program-vtables-blacklist flag.
      
      Because __declspec(uuid()) now implies [[clang::lto_visibility_public]], the
      support for the special attr:uuid blacklist entry is removed.
      
      Differential Revision: http://reviews.llvm.org/D18635
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267784 91177308-0d34-0410-b5e6-96231b3b80d8
      47213cf9
  5. Feb 01, 2016
  6. Dec 16, 2015
  7. Dec 12, 2015
  8. Dec 04, 2015
  9. Sep 10, 2015
  10. Jul 15, 2015
  11. Jun 19, 2015
  12. Apr 02, 2015
  13. Mar 14, 2015
  14. Feb 20, 2015
Loading