History log of /external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd81d94322a39503e4a3e87b6ee03d4fcb3465fb 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
64409ad8e3b360b84349042f14b57f87a5c0ca18 18-Nov-2013 Alexey Samsonov <samsonov@google.com> [ASan] Fix PR17867 - make sure ASan doesn't crash if use-after-scope and use-after-return are combined.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195014 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
8f15c6822251bbe7eb21732c46aa6d9f30ba8836 15-Nov-2013 Kostya Serebryany <kcc@google.com> [asan] use GlobalValue::PrivateLinkage for coverage guard to save quite a bit of code size

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194800 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
4b8991424a8967dfdafc1768a9748f67e6c8b36f 15-Nov-2013 Bob Wilson <bob.wilson@apple.com> Reapply "[asan] Poor man's coverage that works with ASan"

I was able to successfully run a bootstrapped LTO build of clang with
r194701, so this change does not seem to be the cause of our failing
buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194789 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
2475da80edafcf3a45bddbc937e60312dba435ad 15-Nov-2013 Bob Wilson <bob.wilson@apple.com> Revert "[asan] Poor man's coverage that works with ASan"

This reverts commit 194701. Apple's bootstrapped LTO builds have been failing,
and this change (along with compiler-rt 194702-194704) is the only thing on
the blamelist. I will either reappy these changes or help debug the problem,
depending on whether this fixes the buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194780 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
8cc5f7cd59c69250ab3b6a68e38405dcdb6a4b25 14-Nov-2013 Kostya Serebryany <kcc@google.com> [asan] Poor man's coverage that works with ASan

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
3386d252579ea00d0fc26a3ba7874bec25ce4516 16-Oct-2013 Kostya Serebryany <kcc@google.com> [asan] Optimize accesses to global arrays with constant index

Summary:
Given a global array G[N], which is declared in this CU and has static initializer
avoid instrumenting accesses like G[i], where 'i' is a constant and 0<=i<N.
Also add a bit of stats.

This eliminates ~1% of instrumentations on SPEC2006
and also partially helps when asan is being run together with coverage.

Reviewers: samsonov

Reviewed By: samsonov

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1947

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192794 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
8819c84aed10777ba91d4e862229882b8da0b272 01-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove several unused variables.

Patch by Alp Toker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191757 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
ac04abaf5a1df4c4bf48367cfbb41600289c4d78 18-Sep-2013 Kostya Serebryany <kcc@google.com> [asan] call __asan_stack_malloc_N only if use-after-return detection is enabled with the run-time option

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190939 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
0b956507cab3dc4b06b310d2674bb35c79f46dc0 18-Sep-2013 David Blaikie <dblaikie@gmail.com> ifndef NDEBUG-out an asserts-only constant committed in r190863

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
671c3ba921d5b8271307a8caa5e29f512d2e8e82 17-Sep-2013 Kostya Serebryany <kcc@google.com> [asan] inline the calls to __asan_stack_free_* with small sizes. Yet another 10%-20% speedup for use-after-return

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190863 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
f3d4b35f24f4e54b2cb99e06f47a958e5557d01e 10-Sep-2013 Kostya Serebryany <kcc@google.com> [asan] refactor the use-after-return API so that the size class is computed at compile time instead of at run-time. llvm part

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190407 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
e39e1316f034e9932cb8da535541a3e35a0e490a 12-Aug-2013 Alexey Samsonov <samsonov@google.com> Add SpecialCaseList::createOrDie() factory and use it in sanitizer passes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188169 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
4c71064129d1e5def34d74ee47c4f3beaa0a66df 09-Aug-2013 Jakub Staszak <kubastaszak@gmail.com> Mark obviously const methods. Also use reference for parameters when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188103 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
55a1a590bf0cadf88dfbef2aab6948ffec35c1c3 07-Aug-2013 Bill Wendling <isanbard@gmail.com> Change the linkage of these global values to 'internal'.

The globals being generated here were given the 'private' linkage type. However,
this caused them to end up in different sections with the wrong prefix. E.g.,
they would be in the __TEXT,__const section with an 'L' prefix instead of an 'l'
(lowercase ell) prefix.

The problem is that the linker will eat a literal label with 'L'. If a weak
symbol is then placed into the __TEXT,__const section near that literal, then it
cannot distinguish between the literal and the weak symbol.

Part of the problems here was introduced because the address sanitizer converted
some C strings into constant initializers with trailing nuls. (Thus putting them
in the __const section with the wrong prefix.) The others were variables that
the address sanitizer created but simply had the wrong linkage type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187827 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
48d7d1d231cde758599fa0a010c29a174907c12f 05-Aug-2013 Alexey Samsonov <samsonov@google.com> 80-cols

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
f38cc38fa647d4e72c053c39bbe0cdec1342535f 26-Jul-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> [PowerPC] Support powerpc64le as a syntax-checking target.

This patch provides basic support for powerpc64le as an LLVM target.
However, use of this target will not actually generate little-endian
code. Instead, use of the target will cause the correct little-endian
built-in defines to be generated, so that code that tests for
__LITTLE_ENDIAN__, for example, will be correctly parsed for
syntax-only testing. Code generation will otherwise be the same as
powerpc64 (big-endian), for now.

The patch leaves open the possibility of creating a little-endian
PowerPC64 back end, but there is no immediate intent to create such a
thing.

The LLVM portions of this patch simply add ppc64le coverage everywhere
that ppc64 coverage currently exists. There is nothing of any import
worth testing until such time as little-endian code generation is
implemented. In the corresponding Clang patch, there is a new test
case variant to ensure that correct built-in defines for little-endian
code are generated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187179 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
4172a8abbabea2359d91bb07101166565127d798 16-Jul-2013 Craig Topper <craig.topper@gmail.com> Add 'const' qualifiers to static const char* variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186371 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
46e11c4c97fe1c424241e4098801456303a5c86e 10-Jul-2013 Peter Collingbourne <peter@pcc.me.uk> Implement categories for special case lists.

A special case list can now specify categories for specific globals,
which can be used to instruct an instrumentation pass to treat certain
functions or global variables in a specific way, such as by omitting
certain aspects of instrumentation while keeping others, or informing
the instrumentation pass that a specific uninstrumentable function
has certain semantics, thus allowing the pass to instrument callers
according to those semantics.

For example, AddressSanitizer now uses the "init" category instead of
global-init prefixes for globals whose initializers should not be
instrumented, but which in all other respects should be instrumented.

The motivating use case is DataFlowSanitizer, which will have a
number of different categories for uninstrumentable functions, such
as "functional" which specifies that a function has pure functional
semantics, or "discard" which indicates that a function's return
value should not be labelled.

Differential Revision: http://llvm-reviews.chandlerc.com/D1092

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
405515d55f470d04ef75f653b7f1994329c9066b 10-Jul-2013 Peter Collingbourne <peter@pcc.me.uk> Rename BlackList class to SpecialCaseList and move it to Transforms/Utils.

Differential Revision: http://llvm-reviews.chandlerc.com/D1089

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
d4429214a2dffcfd8f97956ac8b1a67c4795d242 26-Jun-2013 Kostya Serebryany <kcc@google.com> [asan] workaround for PR16277: don't instrument AllocaInstr with alignment more than the redzone size

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184928 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
20985711c76b8799d689a9c0e416b68896333c23 26-Jun-2013 Kostya Serebryany <kcc@google.com> [asan] add option -asan-keep-uninstrumented-functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
3e1d45bf44f882f3ee139d452dd50305d831a341 03-Jun-2013 Kostya Serebryany <kcc@google.com> [asan] ASan Linux MIPS32 support (llvm part), patch by Jyun-Yan Y

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
c6af2432c802d241c8fffbe0371c023e6c58844e 25-May-2013 Michael J. Spencer <bigcheesegs@gmail.com> Replace Count{Leading,Trailing}Zeros_{32,64} with count{Leading,Trailing}Zeros.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182680 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
d02c8f4066ddf35f606582d914ee17834cb14e15 20-May-2013 Bill Wendling <isanbard@gmail.com> Remove unused #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182315 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
ca825ea24de2f3d819845ee01796dc6c7a45170d 26-Mar-2013 Alexey Samsonov <samsonov@google.com> [ASan] Change the ABI of __asan_before_dynamic_init function: now it takes pointer to private string with module name. This string serves as a unique module ID in ASan runtime. LLVM part

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
3016056769639878b4f152838f0cf16d2e482339 22-Mar-2013 Kostya Serebryany <kcc@google.com> [asan] Change the way we report the alloca frame on stack-buff-overflow.

Before: the function name was stored by the compiler as a constant string
and the run-time was printing it.
Now: the PC is stored instead and the run-time prints the full symbolized frame.
This adds a couple of instructions into every function with non-empty stack frame,
but also reduces the binary size because we store less strings (I saw 2% size reduction).
This change bumps the asan ABI version to v3.

llvm part.

Example of report (now):
==31711==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffa77cf1c5 at pc 0x41feb0 bp 0x7fffa77cefb0 sp 0x7fffa77cefa8
READ of size 1 at 0x7fffa77cf1c5 thread T0
#0 0x41feaf in Frame0(int, char*, char*, char*) stack-oob-frames.cc:20
#1 0x41f7ff in Frame1(int, char*, char*) stack-oob-frames.cc:24
#2 0x41f477 in Frame2(int, char*) stack-oob-frames.cc:28
#3 0x41f194 in Frame3(int) stack-oob-frames.cc:32
#4 0x41eee0 in main stack-oob-frames.cc:38
#5 0x7f0c5566f76c (/lib/x86_64-linux-gnu/libc.so.6+0x2176c)
#6 0x41eb1c (/usr/local/google/kcc/llvm_cmake/a.out+0x41eb1c)
Address 0x7fffa77cf1c5 is located in stack of thread T0 at offset 293 in frame
#0 0x41f87f in Frame0(int, char*, char*, char*) stack-oob-frames.cc:12 <<<<<<<<<<<<<< this is new
This frame has 6 object(s):
[32, 36) 'frame.addr'
[96, 104) 'a.addr'
[160, 168) 'b.addr'
[224, 232) 'c.addr'
[288, 292) 's'
[352, 360) 'd'




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177724 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
5111627ac1b0ae8a5a9d4dc1be8b22939ba850d0 18-Mar-2013 Kostya Serebryany <kcc@google.com> [asan] when creating string constants, set unnamed_attr and align 1 so that equal strings are merged by the linker. Observed up to 1% binary size reduction. Thanks to Anton Korobeynikov for the suggestion

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177264 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
086a472dbed9911f83add781e020cb49c89829d0 18-Mar-2013 Kostya Serebryany <kcc@google.com> [asan] while generating the description of a global variable, emit the module name in a separate field, thus not duplicating this information if every description. This decreases the binary size (observed up to 3%). https://code.google.com/p/address-sanitizer/issues/detail?id=168 . This changes the asan API version. llvm-part

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177254 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
3797adb94fdc6b747cb0e97a64b15b931f2533b8 18-Mar-2013 Kostya Serebryany <kcc@google.com> [asan] don't instrument functions with available_externally linkage. This saves a bit of compile time and reduces the number of redundant global strings generated by asan (https://code.google.com/p/address-sanitizer/issues/detail?id=167)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177250 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
b4ba5e68e1ac00bfb93572a1f271673deefd7ea9 14-Mar-2013 Alexey Samsonov <samsonov@google.com> [ASan] emit instrumentation for initialization order checking by default

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177063 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
8eec41fc778e99d42172a7f6de76faa43a6d8847 26-Feb-2013 Kostya Serebryany <kcc@google.com> Unify clang/llvm attributes for asan/tsan/msan (LLVM part)

These are two related changes (one in llvm, one in clang).
LLVM:
- rename address_safety => sanitize_address (the enum value is the same, so we preserve binary compatibility with old bitcode)
- rename thread_safety => sanitize_thread
- rename no_uninitialized_checks -> sanitize_memory

CLANG:
- add __attribute__((no_sanitize_address)) as a synonym for __attribute__((no_address_safety_analysis))
- add __attribute__((no_sanitize_thread))
- add __attribute__((no_sanitize_memory))

for S in address thread memory
If -fsanitize=S is present and __attribute__((no_sanitize_S)) is not
set llvm attribute sanitize_S


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176075 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
1479c9bb392325688b72e5829bbb7939c4a079a4 20-Feb-2013 Kostya Serebryany <kcc@google.com> [asan] instrument invoke insns with noreturn attribute (as well as call insns)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
6ecccdbb2bf24a011b9c8ecbdd39be5a02269670 19-Feb-2013 Kostya Serebryany <kcc@google.com> [asan] instrument memory accesses with unusual sizes

This patch makes asan instrument memory accesses with unusual sizes (e.g. 5 bytes or 10 bytes), e.g. long double or
packed structures.
Instrumentation is done with two 1-byte checks
(first and last bytes) and if the error is found
__asan_report_load_n(addr, real_size) or
__asan_report_store_n(addr, real_size)
is called.

Also, call these two new functions in memset/memcpy
instrumentation.

asan-rt part will follow.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175507 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
605ff6655b31033dde21e61416751847bd0ee201 18-Feb-2013 Kostya Serebryany <kcc@google.com> [asan] revert r175266 as it breaks code with packed structures. supporting long double will require a more general solution

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175442 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
74ecd214e267c9b24d824a6403d2f89aff1a7697 15-Feb-2013 Kostya Serebryany <kcc@google.com> [asan] support long double on 64-bit. See https://code.google.com/p/address-sanitizer/issues/detail?id=151

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175266 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
39f02940ba085af79011f7e9095bf9902cd0fa6f 13-Feb-2013 Kostya Serebryany <kcc@google.com> [asan] fix confusing indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175033 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
c8a196ae8fad3cba7a777e2e7916fd36ebf70fe6 12-Feb-2013 Alexander Potapenko <glider@google.com> [ASan] Do not use kDefaultShort64bitShadowOffset on Mac, where the binaries may get mapped at 0x100000000+ and thus may interleave with the shadow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174964 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
0bc55d517e8e64f0f441736fba2447781c405ef4 12-Feb-2013 Kostya Serebryany <kcc@google.com> [asan] change the default mapping offset on x86_64 to 0x7fff8000. This gives roughly 5% speedup. Since this is an ABI change, bump the asan ABI version by renaming __asan_init to __asan_init_v1. llvm part, compiler-rt part will follow

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174957 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
117de489a0d5f4ff280fb173fe45bd5ce8514d93 11-Feb-2013 Kostya Serebryany <kcc@google.com> [asan] added a flag -mllvm asan-short-64bit-mapping-offset=1 (0 by default)
This flag makes asan use a small (<2G) offset for 64-bit asan shadow mapping.
On x86_64 this saves us a register, thus achieving ~2/3 of the
zero-base-offset's benefits in both performance and code size.

Thanks Jakub Jelinek for the idea.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174886 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
29f975f8ffda1f5d78cbf2530c2316abef11aa70 24-Jan-2013 Kostya Serebryany <kcc@google.com> [asan] fix 32-bit builds

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173338 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
63f0846f1eb43332a08811d332b813276b727eb6 24-Jan-2013 Kostya Serebryany <kcc@google.com> [asan] adaptive redzones for globals (the larger the global the larger is the redzone)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173335 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
48a615fee78c3c262c60147a65dc6fff5fd6bb3b 23-Jan-2013 Kostya Serebryany <kcc@google.com> [asan] use ADD instead of OR when applying shadow offset of PowerPC. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55975 for details

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
90230c84668269fbd53d163e398cd16486d5d414 19-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Sort all of the includes. Several files got checked in with mis-sorted
includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172891 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
ae36eccdfbad53a1e76ca263b7540b84d50d3524 18-Jan-2013 Will Dietz <wdietz2@illinois.edu> Move Blacklist.h to include/ to enable use from clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172806 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
11af9a873f9e1409a422ab31e22729368805afaf 17-Jan-2013 Alexey Samsonov <samsonov@google.com> ASan: add optional 'zero-based shadow' option to ASan passes. Always tell the values of shadow scale and offset to the runtime

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172709 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
19cd7e9ce28ed7f3326ebcd386eec215ab3763f9 16-Jan-2013 Alexey Samsonov <samsonov@google.com> ASan: wrap mapping scale and offset in a struct and make it a member of ASan passes. Add test for non-default mapping scale and offset. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
58a2cbef4aac9ee7d530dfb690c78d6fc11a2371 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Resort the #include lines in include/... and lib/... with the
utils/sort_includes.py script.

Most of these are updating the new R600 target and fixing up a few
regressions that have creeped in since the last time I sorted the
includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171362 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
831737d329a727f53a1fb0572f7b7a8127208881 30-Dec-2012 Bill Wendling <isanbard@gmail.com> Remove the Function::getFnAttributes method in favor of using the AttributeSet
directly.

This is in preparation for removing the use of the 'Attribute' class as a
collection of attributes. That will shift to the AttributeSet class instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171253 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
1c8b825c4396ad9cd38f713d9e9a51adae1d4c4e 27-Dec-2012 Alexey Samsonov <samsonov@google.com> [ASan] Fix lifetime intrinsics handling. Now for each intrinsic we check if it describes one of 'interesting' allocas. Assume that allocas can go through casts and phi-nodes before apperaring as llvm.lifetime arguments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171153 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
4684858624d7ffe82379783e9b678227d5e0b515 25-Dec-2012 Alexey Samsonov <samsonov@google.com> ASan: initialize callbacks from ASan module pass in a separate function for consistency

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
59cca13a80ed78ccbcdaa9bf20381bd48243f2f1 25-Dec-2012 Alexey Samsonov <samsonov@google.com> ASan: move stack poisoning logic into FunctionStackPoisoner struct

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171060 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
034b94b17006f51722886b0f2283fb6fb19aca1f 19-Dec-2012 Bill Wendling <isanbard@gmail.com> Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
1afbb517965e29b07cb42e2335d5eadd87de6535 12-Dec-2012 Alexey Samsonov <samsonov@google.com> Improve debug info generated with enabled AddressSanitizer.

When ASan replaces <alloca instruction> with
<offset into a common large alloca>, it should also patch
llvm.dbg.declare calls and replace debug info descriptors to mark
that we've replaced alloca with a value that stores an address
of the user variable, not the user variable itself.

See PR11818 for more context.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169984 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
6c55412ea4b39103a3a5764d49ddfdf50e066d56 04-Dec-2012 Kostya Serebryany <kcc@google.com> [asan] add experimental -asan-realign-stack option (true by default, which does not change the current behavior)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169216 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
f985f44b13681071e585acb7a5703a2c1c23b6ce 04-Dec-2012 Alexey Samsonov <samsonov@google.com> ASan: add initial support for handling llvm.lifetime intrinsics in ASan - emit calls into runtime library that poison memory for local variables when their lifetime is over and unpoison memory when their lifetime begins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
b0dcf61252e58715a3bea79f4c112572df361c30 03-Dec-2012 Alexey Samsonov <samsonov@google.com> ASan: add blacklist file to ASan pass options. Clang patch for this will follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169143 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
a17babb021aa9dc3441ecce1ac8a62d2b27edecb 30-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] simplify the code around doesNotReturn call. It now magically works.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168995 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
d6f62c8da5aa4f3388cec1542309ffa623cac601 29-Nov-2012 Alexey Samsonov <samsonov@google.com> [ASan] Simplify check added in r168861. Bail out from module pass early if the module is blacklisted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168913 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
ee548275c63a1eeffda9d3edd2bea04e1dadcc67 29-Nov-2012 Alexey Samsonov <samsonov@google.com> Add options to AddressSanitizer passes to make them configurable by frontend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168910 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
8b390ffbfdd52a23a45a21de99aa1c31f3ce623f 29-Nov-2012 Kostya Serebryany <kcc@google.com> [asan/tsan] initialize the asan/tsan callbacks in runOnFunction as opposed to doInitialization. This is required to allow the upcoming changes in PassManager behavior

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168864 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
5085eb80abe29320fa8922c10b36249f5163f45d 29-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] when checking the noreturn attribute on the call, also check it on the callee

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
1416edc30adbd53b2be863f7f3de56de4a4c9d0a 28-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] Split AddressSanitizer into two passes (FunctionPass, ModulePass), LLVM part. This requires a clang part which will follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
d59c07255e2dc8471a0049d6c8466cd0eba13cb9 22-Nov-2012 NAKAMURA Takumi <geek4civic@gmail.com> llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp: Prune AddressSanitizerCreateGlobalRedzonesPass::ID. [-Wunused-variable]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168499 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
b9a12ea0fd92bfdb4c6eb5af333648a618f68686 22-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] rip off the creation of global redzones from the main AddressSanitizer class into a separate class. The intent is to make it a separate ModulePass in the following commmits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168484 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
51c7c65e32f76ec5a50cdecfe2b4c287c57da127 20-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] use names of globals instead of an external set to distinguish the globals generated by asan

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
407790604b8f71f7172bbdfb76c27e1799d241c2 20-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] don't instrument linker-initialized globals even with external linkage in -asan-initialization-order mode

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168367 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
ca23d43084c45a7d6f4371d62f45be044650ce38 20-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] make sure that linker-initialized globals (non-extern) are not instrumented even in -asan-initialization-order mode. This time with a test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
7846c1c851a53a8280f9d8ed57cd98d82c742551 07-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] fix bug 14277 (asan needs to fail with fata error if an __asan interface function is being redefined. Before this fix asan asserts)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167529 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
9ce84c1c95c0153a2f33e188ce0db00770425f9e 02-Nov-2012 Alexey Samsonov <samsonov@google.com> Fix whitespaces

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167295 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
a5f54f14435d881b10d8eb65e19fa42af95757e9 01-Nov-2012 Kostya Serebryany <kcc@google.com> [asan] don't instrument globals that we've created ourselves (reduces the binary size a bit)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167230 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
426c2bf5cdd2173e4a33aea8cb92cf684a724f4b 01-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Revert the majority of the next patch in the address space series:

r165941: Resubmit the changes to llvm core to update the functions to
support different pointer sizes on a per address space basis.

Despite this commit log, this change primarily changed stuff outside of
VMCore, and those changes do not carry any tests for correctness (or
even plausibility), and we have consistently found questionable or flat
out incorrect cases in these changes. Most of them are probably correct,
but we need to devise a system that makes it more clear when we have
handled the address space concerns correctly, and ideally each pass that
gets updated would receive an accompanying test case that exercises that
pass specificaly w.r.t. alternate address spaces.

However, from this commit, I have retained the new C API entry points.
Those were an orthogonal change that probably should have been split
apart, but they seem entirely good.

In several places the changes were very obvious cleanups with no actual
multiple address space code added; these I have not reverted when
I spotted them.

In a few other places there were merge conflicts due to a cleaner
solution being implemented later, often not using address spaces at all.
In those cases, I've preserved the new code which isn't address space
dependent.

This is part of my ongoing effort to clean out the partial address space
code which carries high risk and low test coverage, and not likely to be
finished before the 3.2 release looms closer. Duncan and I would both
like to see the above issues addressed before we return to these
changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167222 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
4a2dec05cef5882b745dd248d79e42a42cdbc87b 19-Oct-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Move SplitBlockAndInsertIfThen to BasicBlockUtils.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166278 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
bd0052a0f26f04b8fcf59e8f645e5e33751e1f6e 19-Oct-2012 Kostya Serebryany <kcc@google.com> [asan] make sure asan erases old unused allocas after it created a new one. This became important after the recent move from ModulePass to FunctionPass because no cleanup is happening after asan pass any more.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166267 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
324d96b9e265b0fd8bf63a28340910def64e2164 17-Oct-2012 Kostya Serebryany <kcc@google.com> [asan] better debug diagnostics in asan compiler module

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
2c39b15073db81d93bb629303915b7d7e5d088dc 15-Oct-2012 Micah Villmow <villmow@gmail.com> Resubmit the changes to llvm core to update the functions to support different pointer sizes on a per address space basis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165941 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
ee4edeccabe1854ee895f52d4ac5588bd5f40c80 15-Oct-2012 Kostya Serebryany <kcc@google.com> [asan] make AddressSanitizer to be a FunctionPass instead of ModulePass. This will simplify chaining other FunctionPasses with asan. Also some minor cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165936 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
fb384d61c78b60787ed65475d8403aee65023962 11-Oct-2012 Micah Villmow <villmow@gmail.com> Revert 165732 for further review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165747 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
f3840d2c16a4ec4c879a8ded402835746de380f8 11-Oct-2012 Micah Villmow <villmow@gmail.com> Add in the first iteration of support for llvm/clang/lldb to allow variable per address space pointer sizes to be optimized correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165726 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
6765834754cbb3cb0f15b4b15e98c5e73fa50066 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Create enums for the different attributes.

We use the enums to query whether an Attributes object has that attribute. The
opaque layer is responsible for knowing where that specific attribute is stored.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
3574eca1b02600bac4e625297f4ecf745f4c4f32 08-Oct-2012 Micah Villmow <villmow@gmail.com> Move TargetData to DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
2c189061184925c6a8ecbb5a19e648b230a41c0e 26-Sep-2012 Bill Wendling <isanbard@gmail.com> Remove the `hasFnAttr' method from Function.

The hasFnAttr method has been replaced by querying the Attributes explicitly. No
intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
3780ad8b998d93d7db406919c06137cdb786ef05 17-Sep-2012 Axel Naumann <Axel.Naumann@cern.ch> Fix a few vars that can end up being used without initialization.
The cases where no initialization happens should still be checked for logic flaws.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
7dadac65d375ff21b7a36bfb7642578d2f467525 05-Sep-2012 Kostya Serebryany <kcc@google.com> [asan] fix lint

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163205 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
59a4a47a7bea7cc17877c6a3954ad9f8309ff1cb 05-Sep-2012 Kostya Serebryany <kcc@google.com> [asan] extend the blacklist functionality to handle global-init. Patch by Reid Watson

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163199 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
43bf70986bb13c812e87ca959dd8f2dd9edf802c 02-Sep-2012 Logan Chien <tzuhsiang.chien@gmail.com> Rename ANDROIDEABI to Android.

Most of the code guarded with ANDROIDEABI are not
ARM-specific, and having no relation with arm-eabi.
Thus, it will be more natural to call this
environment "Android" instead of "ANDROIDEABI".

Note: We are not using ANDROID because several projects
are using "-DANDROID" as the conditional compilation
flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163087 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
b5b86d263a651566cb25c0f406f75ceffb771029 24-Aug-2012 Kostya Serebryany <kcc@google.com> [asan/tsan] rename FunctionBlackList* to BlackList* as this class is not limited to functions any more

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162566 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
9b9f87a87ac1b373c4c6a70904315bebbd01c50c 21-Aug-2012 Kostya Serebryany <kcc@google.com> [asan] add code to detect global initialization fiasco in C/C++. The sub-pass is off by default for now. Patch by Reid Watson. Note: this patch changes the interface between LLVM and compiler-rt parts of asan. The corresponding patch to compiler-rt will follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162268 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
6e2d506dc962873a0e05092bbb034f9a615d1084 15-Aug-2012 Kostya Serebryany <kcc@google.com> [asan] implement --asan-always-slow-path, which is a part of the improvement to handle unaligned partially OOB accesses. See http://code.google.com/p/address-sanitizer/issues/detail?id=100

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161937 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
ebd6454929f2ba3b92f61c151eccde0b8b0a8ded 14-Aug-2012 Kostya Serebryany <kcc@google.com> [asan] insert crash basic blocks inline as opposed to inserting them at the end of the function. This doesn't seem to fix or break anything, but is considered to be more friendly to downstream passes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161870 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
11c2a47af825a0f89d75aaa97ad873ed2acef266 13-Aug-2012 Kostya Serebryany <kcc@google.com> [asan] remove the code for --asan-merge-callbacks as it appears to be a bad idea. (partly related to Bug 13225)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161757 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
f7b08226eb44458f6f38cbeaca527028803c725a 20-Jul-2012 Kostya Serebryany <kcc@google.com> [asan] make sure that the crash callbacks do not get merged (Chandler's idea: insert an empty InlineAsm). Change the order in which the new BBs are inserted: the slow path BB is insert between old BBs, the crash BB is inserted at the end. Don't create an empty BB (introduced by recent commits). Update the test. The experimental code that does manual crash callback merge will most likely be deleted later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160544 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
4f0c69623c10a3a49f6926fd53694ee532e06a85 17-Jul-2012 Kostya Serebryany <kcc@google.com> [asan] more code to merge crash callbacks. Doesn't fully work yet, but allows to hold performance experiments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160361 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
2735cf4aa52e31b8d2de90f836c3ad991215e04e 16-Jul-2012 Kostya Serebryany <kcc@google.com> [asan] a bit more refactoring, addressed some of the style comments from chandlerc, partially implemented crash callback merging (under flag)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160290 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
c0ed3e548c6f688e22685de04e210c7b59ac3433 16-Jul-2012 Kostya Serebryany <kcc@google.com> [asan] refactor instrumentation to allow merging the crash callbacks (not fully implemented yet, no functionality change except the BB order)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160284 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
9db5b5ffa9fccd5c7f1f39a3e9aa66cc4a5eedc1 16-Jul-2012 Kostya Serebryany <kcc@google.com> [asan] initialize asan error callbacks in runOnModule instead of doing that on-demand

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160269 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
349f14c72cbcd3c50091d20a874967aca5f2f746 16-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Revert r160254 temporarily.

It turns out that ASan relied on the at-the-end block insertion order to
(purely by happenstance) disable some LLVM optimizations, which in turn
start firing when the ordering is made more "normal". These
optimizations in turn merge many of the instrumentation reporting calls
which breaks the return address based error reporting in ASan.

We're looking at several different options for fixing this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
c3c8db9d25e69083cec0c2d4a01735cd9e01269f 16-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Teach AddressSanitizer to create basic blocks in a more natural order.
This is particularly useful to the backend code generators which try to
process things in the incoming function order.

Also, cleanup some uses of IRBuilder to be a bit simpler and more clear.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160254 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
56139bc493790612ee6281630678e293be6b2eb2 02-Jul-2012 Kostya Serebryany <kcc@google.com> [asan] small code simplification

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
06cb8ed00696eb14d1b831921452e50ec0568ea2 29-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h

This was always part of the VMCore library out of necessity -- it deals
entirely in the IR. The .cpp file in fact was already part of the VMCore
library. This is just a mechanical move.

I've tried to go through and re-apply the coding standard's preferred
header sort, but at 40-ish files, I may have gotten some wrong. Please
let me know if so.

I'll be committing the corresponding updates to Clang and Polly, and
Duncan has DragonEgg.

Thanks to Bill and Eric for giving the green light for this bit of cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
324cbb89f2759fb9ad347bd2af4631e50c39c8f3 28-Jun-2012 Kostya Serebryany <kcc@google.com> [asan] set a hard limit on the number of instructions instrumented pear each BB. This is (hopefully temporary) workaround for PR13225

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
ce718ff9f42c7da092eaa01dd0242e8d5ba84713 23-Jun-2012 Hans Wennborg <hans@hanshq.net> Extend the IL for selecting TLS models (PR9788)

This allows the user/front-end to specify a model that is better
than what LLVM would choose by default. For example, a variable
might be declared as

@x = thread_local(initialexec) global i32 42

if it will not be used in a shared library that is dlopen'ed.

If the specified model isn't supported by the target, or if LLVM can
make a better choice, a different model may be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159077 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
e6cf2e0bd09544eeb69665deb908d264e62a71c2 30-May-2012 Kostya Serebryany <kcc@google.com> [asan] instrument cmpxchg and atomicrmw

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157683 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
06fdbaa9145f01a291d4981ca5120b7bdcad44c6 23-May-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Use zero-based shadow by default on Android.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157317 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
3f119989c3839c98b20bf6ea00c2ccc95aacff69 27-Apr-2012 Kostya Serebryany <kcc@google.com> [asan] small optimization: do not emit "x+0" instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
55cabae685991ac6bc6d96b14e2139f64a0c9967 23-Apr-2012 Alexander Potapenko <glider@google.com> Fix issue 67 by checking that the interface functions weren't redefined in the compiled source file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
208a4ff2b56f453910bb817540f34b8169f7702a 21-Mar-2012 Kostya Serebryany <kcc@google.com> [asan] fix one more bug related to long double

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153189 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
8c0134a77615b66f57250f0662bc899e4574551e 19-Mar-2012 Kostya Serebryany <kcc@google.com> [asan] don't emit __asan_mapping_offset/__asan_mapping_scale by default -- they are currently used only for experiments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153040 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
a1c45044099cf7fb4a072f1326f164706d5bb2e2 15-Mar-2012 Kostya Serebryany <kcc@google.com> [asan] rename class BlackList to FunctionBlackList and move it into a separate file -- we will need the same functionality in ThreadSanitizer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152753 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
d8313be41031e4d768f5b38199904d4debff88cd 02-Mar-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> ASan: use getTypeAllocSize instead of getTypeStoreSize.

This change replaces getTypeStoreSize with getTypeAllocSize in AddressSanitizer
instrumentation for stack allocations.

One case where old behaviour produced undesired results is an optimization in
InstCombine pass (PromoteCastOfAllocation), which can replace alloca(T) with
alloca(S), where S has the same AllocSize, but a smaller StoreSize. Another
case is memcpy(long double => long double), where ASan will poison bytes 10-15
of a stack-allocated long double (StoreSize 10, AllocSize 16,
sizeof(long double) = 16).

See http://llvm.org/bugs/show_bug.cgi?id=12047 for more context.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151887 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
95e3cf44a9d4672655dee3bd558bfeefa631dd55 08-Feb-2012 Kostya Serebryany <kcc@google.com> [asan] unpoison the stack before every noreturn call. Fixes asan issue 37. llvm part

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
858143816d43e58b17bfd11cb1b57afbd7f0f893 07-Feb-2012 Craig Topper <craig.topper@gmail.com> Convert assert(0) to llvm_unreachable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
18c7f80b3e83ab584bd8572695a3cde8bafd9d3c 05-Feb-2012 Chris Lattner <sabre@nondot.org> reapply the patches reverted in r149470 that reenable ConstantDataArray,
but with a critical fix to the SelectionDAG code that optimizes copies
from strings into immediate stores: the previous code was stopping reading
string data at the first nul. Address this by adding a new argument to
llvm::getConstantStringInfo, preserving the behavior before the patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149800 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
91766fe066efe6e0969ba805a2e3726a70ed34a3 01-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert Chris' commits up to r149348 that started causing VMCoreTests unit test to fail.

These are:

r149348
r149351
r149352
r149354
r149356
r149357
r149361
r149362
r149364
r149365

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149470 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
6a89228faca4b30c4abc29b5dec98bdac011ea4c 31-Jan-2012 Chris Lattner <sabre@nondot.org> eliminate the "string" form of ConstantArray::get, using
ConstantDataArray::getString instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149365 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
a1a8a323f43a95620fc4c6b5aad8d5ff5e5eb590 31-Jan-2012 Kostya Serebryany <kcc@google.com> [asan] fix the ObjC support (asan Issue #33)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149300 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
8375bc923638299410e75e8f668524fc1aa113bd 30-Jan-2012 Alexander Potapenko <glider@google.com> Fix compilation of ASan tests on OS X Lion (see http://code.google.com/p/address-sanitizer/issues/detail?id=32)
The redzones emitted by AddressSanitizer for CFString instances confuse the linker and are of little use, so we shouldn't add them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149243 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
f1639abf1aaba1448f719f595156cd0f4cd560cc 28-Jan-2012 Kostya Serebryany <kcc@google.com> [asan] correctly use ConstantExpr::getGetElementPtr. Catch by NAKAMURA Takumi

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149172 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
0307b9a88574d7e54459181afaa656ac92971847 24-Jan-2012 Kostya Serebryany <kcc@google.com> [asan] enable asan only for the functions that have Attribute::AddressSafety

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148846 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
25878042030e85c244b41bfcdfad27c32360e2ec 23-Jan-2012 Alexander Potapenko <glider@google.com> Implemented AddressSanitizer::getPassName()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
bcb55ce3862bbbedac4e09d7099c9e0efc434e4b 11-Jan-2012 Kostya Serebryany <kcc@google.com> [asan] extend the workaround for http://llvm.org/bugs/show_bug.cgi?id=11395: don't instrument the function at all on x86_32 if it has a large asm blob

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
3c7faae346f548c55cad86d82a2e242443001f23 06-Jan-2012 Kostya Serebryany <kcc@google.com> [asan] cleanup: remove the SIGILL-related code (compiler part)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
a4b2b1d8fbb84b0b6fac5abce21a2a5c5e907282 15-Dec-2011 Kostya Serebryany <kcc@google.com> [asan] add the name of the module to the description of a global variable. This improves the readability of global-buffer-overflow reports.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146698 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
7bcfc9950bac0f411f9671e8d6ce483bd219727e 15-Dec-2011 Kostya Serebryany <kcc@google.com> [asan] fix a bug (issue 19) where dlclose and the following mmap caused a false positive. compiler part.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146688 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
bd7910d158ad2e2a3cb17f2b3f160a9c39dd6b0f 14-Dec-2011 Kostya Serebryany <kcc@google.com> [asan] remove .preinit_array from the compiler module (it breaks .so builds). This should be done in the run-time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146527 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
085cb8f0b957841ab667a46be0c49ce4ee8c9c79 13-Dec-2011 Kostya Serebryany <kcc@google.com> [asan] report an error if blacklist file contains a malformed regex. fixes asan issue 17

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146503 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
9b02741d2284d9516a59666c211fe1f57e8803ad 12-Dec-2011 Kostya Serebryany <kcc@google.com> [asan] use .preinit_array only on linux

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146379 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
25a8b809a074941e52cf357674b4382437aabb08 09-Dec-2011 Kostya Serebryany <kcc@google.com> [asan] call __asan_init from .preinit_array. This simplifies __asan_init vs malloc chicken-and-egg situation on Android and probably on other flavours of Linux. Patch by eugenis@google.com.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146284 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
cc1d856d8e8e11407b3c6c1d08768f77c3722e38 01-Dec-2011 Kostya Serebryany <kcc@google.com> [asan] two minor fixes: use UnreachableInst after the neverreturn function call; use report_fatal_error when blacklist file can not be found

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145611 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
d2703dec271d82c8c9d22afb835c07730fd25d47 23-Nov-2011 Kostya Serebryany <kcc@google.com> [asan] do not instrument threadlocal globals, this is buggy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
5a3a9c937198084498a196dae856ac5a5a005bcc 18-Nov-2011 Kostya Serebryany <kcc@google.com> [asan] workaround for reg alloc bug 11395: don't instrument functions with large chunks of inline assembler

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144962 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
2e7fb2f73641f1f1ca385fe7777075945bf4ca24 18-Nov-2011 Kostya Serebryany <kcc@google.com> quick fix: remove GlobalVariable::GlobalVariable mistakenly commited at r144933. For some reason this compiles on linux

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144936 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
7cf2a04361e8613264498e50babe52d65c070473 18-Nov-2011 Kostya Serebryany <kcc@google.com> fall back to explicit list of allowed linkages when instrumenting globals in asan; add a test check that asan does not touch linkonce_odr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144933 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
800e03f59896ef4b26d988f1878370bb5aeec0d8 16-Nov-2011 Kostya Serebryany <kcc@google.com> AddressSanitizer, first commit (compiler module only)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144758 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp