llvm-project/llvm/lib
Alexey Samsonov 4b7f413e3e [ASan] Change fake stack and local variables handling.
This commit changes the way we get fake stack from ASan runtime
(to find use-after-return errors) and the way we represent local
variables:
  - __asan_stack_malloc function now returns pointer to newly allocated
    fake stack frame, or NULL if frame cannot be allocated. It doesn't
    take pointer to real stack as an input argument, it is calculated
    inside the runtime.
  - __asan_stack_free function doesn't take pointer to real stack as
    an input argument. Now this function is never called if fake stack
    frame wasn't allocated.
  - __asan_init version is bumped to reflect changes in the ABI.
  - new flag "-asan-stack-dynamic-alloca" allows to store all the
    function local variables in a dynamic alloca, instead of the static
    one. It reduces the stack space usage in use-after-return mode
    (dynamic alloca will not be called if the local variables are stored
    in a fake stack), and improves the debug info quality for local
    variables (they will not be described relatively to %rbp/%rsp, which
    are assumed to be clobbered by function calls). This flag is turned
    off by default for now, but I plan to turn it on after more
    testing.

llvm-svn: 224062
2014-12-11 21:53:03 +00:00
..
Analysis Fix PR21694. r219517 added a use of SCEV divide in HowFarToZero computation. This divide can produce incorrect results as we are using an unsigned divide for what should be a modular divide. This change reverts back to a more conservative computation using trailing zeros. 2014-12-10 22:53:52 +00:00
AsmParser AsmParser: Don't crash on an ill-formed MDNodeVector 2014-12-11 20:51:54 +00:00
Bitcode IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
CodeGen CodeGen: Stop using LeakDetector for MachineInstr 2014-12-11 21:51:37 +00:00
DebugInfo Make DWARFAcceleratorTable::dump() const. 2014-11-20 16:21:11 +00:00
ExecutionEngine Move three methods only used by MCJIT to MCJIT. 2014-12-10 20:46:55 +00:00
IR IR: Store MDNodes in a separate LeakDetector container 2014-12-11 21:39:39 +00:00
IRReader Remove unused variable. NFC. 2014-11-06 23:16:57 +00:00
LTO IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
LineEditor
Linker IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
MC clang-formatted ranged loops and assignment, NFC. 2014-12-04 08:30:39 +00:00
Object Move three methods only used by MCJIT to MCJIT. 2014-12-10 20:46:55 +00:00
Option Add an overload of getLastArgNoClaim taking two OptSpecifiers. 2014-09-12 19:42:53 +00:00
ProfileData llvm-cov: Sink some reporting logic into CoverageMapping 2014-11-14 01:50:32 +00:00
Support Remove a convoluted way of calling close by moving the call to the only caller. 2014-12-11 20:12:55 +00:00
TableGen Use range-based for loops. NFC 2014-12-11 07:04:54 +00:00
Target [CodeGen] Add print and verify pass after each MachineFunctionPass by default 2014-12-11 21:26:47 +00:00
Transforms [ASan] Change fake stack and local variables handling. 2014-12-11 21:53:03 +00:00
CMakeLists.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
LLVMBuild.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
Makefile ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00