forked from OSchip/llvm-project
7aa8c38a9e
The Randstruct feature is a compile-time hardening technique that randomizes the field layout for designated structures of a code base. Admittedly, this is mostly useful for closed-source releases of code, since the randomization seed would need to be available for public and open source applications. Why implement it? This patch set enhances Clang’s feature parity with that of GCC which already has the Randstruct feature. It's used by the Linux kernel in certain structures to help thwart attacks that depend on structure layouts in memory. This patch set is a from-scratch reimplementation of the Randstruct feature that was originally ported to GCC. The patches for the GCC implementation can be found here: https://www.openwall.com/lists/kernel-hardening/2017/04/06/14 Link: https://lists.llvm.org/pipermail/cfe-dev/2019-March/061607.html Co-authored-by: Cole Nixon <nixontcole@gmail.com> Co-authored-by: Connor Kuehl <cipkuehl@gmail.com> Co-authored-by: James Foster <jafosterja@gmail.com> Co-authored-by: Jeff Takahashi <jeffrey.takahashi@gmail.com> Co-authored-by: Jordan Cantrell <jordan.cantrell@mail.com> Co-authored-by: Nikk Forbus <nicholas.forbus@gmail.com> Co-authored-by: Tim Pugh <nwtpugh@gmail.com> Co-authored-by: Bill Wendling <isanbard@gmail.com> Signed-off-by: Bill Wendling <isanbard@gmail.com> Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D121556 |
||
---|---|---|
.. | ||
Inputs | ||
amdgcn.languageOptsOpenCL.cl | ||
attr-source-range.cpp | ||
backend-optimization-failure-nodbg.cpp | ||
backend-optimization-failure.cpp | ||
backend-resource-limit-diagnostics.cl | ||
backend-stack-frame-diagnostics-attributes.cpp | ||
backend-stack-frame-diagnostics-fallback.cpp | ||
backend-stack-frame-diagnostics.cpp | ||
caret-diags-macros.c | ||
caret-diags-multiline.cpp | ||
caret-diags-scratch-buffer.c | ||
cc1as-asm-debug.s | ||
cc1as-asm.s | ||
cc1as-compress.s | ||
cc1as-debug-format.s | ||
cc1as-split-dwarf.s | ||
clear-ast-before-backend-plugins.c | ||
clear-ast-before-backend.c | ||
dev-fd-fs.c | ||
diag-aka-types.cpp | ||
diag-format.c | ||
diag-greatergreater.cpp | ||
diag-inline-namespace.cpp | ||
diag-line-wrapping.cpp | ||
diag-macro-backtrace.c | ||
diag-macro-backtrace2.c | ||
diag-mapping.c | ||
diag-mapping2.c | ||
diag-null-bytes-in-line.cpp | ||
diag-presumed.c | ||
diag-special-chars.c | ||
diag-template-diffing-color.cpp | ||
diag-template-diffing-cxx98.cpp | ||
diag-template-diffing.cpp | ||
diag-template.cpp | ||
diag-trailing-null-bytes.cpp | ||
diag-verify.cpp | ||
diagnostic-crash.cpp | ||
driver-verify.c | ||
emit-html-insert.c | ||
emit-html.c | ||
error-limit-multiple-notes.cpp | ||
error-limit.c | ||
explicit.cpp | ||
ffp-contract.c | ||
find-diagnostic-id.c | ||
freebsd-arm-size_t.c | ||
include-stack-for-note-flag.cpp | ||
inline-asm-clobber-warning.c | ||
integer-literal-printing.cpp | ||
languageOptsOpenCL.cl | ||
loop-opt-setup.c | ||
macro-backtrace.c | ||
message-length.c | ||
no-warn-in-system-macro.c | ||
no-warn-in-system-macro.c.inc | ||
nvptx.languageOptsOpenCL.cl | ||
nvptx.unsupported_core.cl | ||
opencl-c-3.0.incorrect_options.cl | ||
ppc-inline-asm-clobber-warning.c | ||
pragma-attribute-cxx.cpp | ||
pragma-attribute-objc.m | ||
pragma-attribute-strict-subjects.c | ||
pragma-attribute-supported-attributes-list.test | ||
predefines.c | ||
printer.c | ||
r600.languageOptsOpenCL.cl | ||
r600.unsupported_core.cl | ||
reduced-diags-macros-backtrace.cpp | ||
reduced-diags-macros.cpp | ||
remap-file.c | ||
serialized-diags-bcanalyzer.c | ||
serialized-diags-driver.c | ||
serialized-diags-emit-header-module-misconfig.c | ||
serialized-diags-empty-filename.c | ||
serialized-diags-frontend.c | ||
serialized-diags-no-category.c | ||
serialized-diags-no-issue.c | ||
serialized-diags-really-long-text.cpp | ||
serialized-diags-single-issue.c | ||
serialized-diags-stable.c | ||
serialized-diags-unknown-argument.c | ||
serialized-diags-unknown-target.c | ||
serialized-diags.c | ||
serialized-diags.h | ||
serialized-diags.m | ||
show-diag-options.c | ||
tabstop.c | ||
target-invalid-cpu-note.c | ||
target-parser.c | ||
time-passes.c | ||
unnecessary-elipses.cpp | ||
unprintable.c | ||
verify.c | ||
warn-in-system-header.c | ||
warn-in-system-header.h | ||
warn-in-system-macro-def.c | ||
warn-in-system-macro-def.c.inc | ||
warn-sysheader.cpp | ||
warning-flags-enabled.c | ||
warning-flags-tree.c | ||
warning-flags.c | ||
warning-wall.c | ||
win32-macho.c | ||
working-directory.c | ||
wrong-encoding.c | ||
wrong-encoding2.c |