[CFI] Add CFI-icall pointer type generalization
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 llvm-svn: 317044
Showing
- clang/docs/ClangCommandLineReference.rst 4 additions, 0 deletionsclang/docs/ClangCommandLineReference.rst
- clang/docs/ControlFlowIntegrity.rst 17 additions, 0 deletionsclang/docs/ControlFlowIntegrity.rst
- clang/docs/UsersManual.rst 5 additions, 0 deletionsclang/docs/UsersManual.rst
- clang/include/clang/Driver/Options.td 3 additions, 0 deletionsclang/include/clang/Driver/Options.td
- clang/include/clang/Driver/SanitizerArgs.h 1 addition, 0 deletionsclang/include/clang/Driver/SanitizerArgs.h
- clang/include/clang/Frontend/CodeGenOptions.def 2 additions, 0 deletionsclang/include/clang/Frontend/CodeGenOptions.def
- clang/lib/CodeGen/CGExpr.cpp 6 additions, 1 deletionclang/lib/CodeGen/CGExpr.cpp
- clang/lib/CodeGen/CodeGenModule.cpp 55 additions, 0 deletionsclang/lib/CodeGen/CodeGenModule.cpp
- clang/lib/CodeGen/CodeGenModule.h 8 additions, 1 deletionclang/lib/CodeGen/CodeGenModule.h
- clang/lib/Driver/SanitizerArgs.cpp 10 additions, 0 deletionsclang/lib/Driver/SanitizerArgs.cpp
- clang/lib/Frontend/CompilerInvocation.cpp 2 additions, 0 deletionsclang/lib/Frontend/CompilerInvocation.cpp
- clang/test/CodeGen/cfi-icall-cross-dso.c 7 additions, 3 deletionsclang/test/CodeGen/cfi-icall-cross-dso.c
- clang/test/CodeGen/cfi-icall-generalize.c 19 additions, 0 deletionsclang/test/CodeGen/cfi-icall-generalize.c
- clang/test/CodeGen/cfi-icall.c 7 additions, 3 deletionsclang/test/CodeGen/cfi-icall.c
- clang/test/CodeGenCXX/cfi-icall.cpp 11 additions, 8 deletionsclang/test/CodeGenCXX/cfi-icall.cpp
- clang/test/Driver/fsanitize.c 8 additions, 0 deletionsclang/test/Driver/fsanitize.c
Loading
Please register or sign in to comment