0f7a80d0c3 
								
							 
						 
						
							
							
								
								[asan] remove the code for --asan-merge-callbacks as it appears to be a bad idea. (partly related to Bug 13225)  
							
							... 
							
							
							
							llvm-svn: 161757 
							
						 
						
							2012-08-13 14:08:46 +00:00  
				
					
						
							
							
								 
						
							
								f02c6069ac 
								
							 
						 
						
							
							
								
								[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.  
							
							... 
							
							
							
							llvm-svn: 160544 
							
						 
						
							2012-07-20 09:54:50 +00:00  
				
					
						
							
							
								 
						
							
								986b8da500 
								
							 
						 
						
							
							
								
								[asan] more code to merge crash callbacks. Doesn't fully work yet, but allows to hold performance experiments  
							
							... 
							
							
							
							llvm-svn: 160361 
							
						 
						
							2012-07-17 11:04:12 +00:00  
				
					
						
							
							
								 
						
							
								c4ce5dfe2d 
								
							 
						 
						
							
							
								
								[asan] a bit more refactoring, addressed some of the style comments from chandlerc, partially implemented crash callback merging (under flag)  
							
							... 
							
							
							
							llvm-svn: 160290 
							
						 
						
							2012-07-16 17:12:07 +00:00  
				
					
						
							
							
								 
						
							
								874dae6119 
								
							 
						 
						
							
							
								
								[asan] refactor instrumentation to allow merging the crash callbacks (not fully implemented yet, no functionality change except the BB order)  
							
							... 
							
							
							
							llvm-svn: 160284 
							
						 
						
							2012-07-16 16:15:40 +00:00  
				
					
						
							
							
								 
						
							
								4273bb05d1 
								
							 
						 
						
							
							
								
								[asan] initialize asan error callbacks in runOnModule instead of doing that on-demand  
							
							... 
							
							
							
							llvm-svn: 160269 
							
						 
						
							2012-07-16 14:09:42 +00:00  
				
					
						
							
							
								 
						
							
								8b540ab337 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 160256 
							
						 
						
							2012-07-16 10:01:02 +00:00  
				
					
						
							
							
								 
						
							
								3dd6c81492 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 160254 
							
						 
						
							2012-07-16 08:58:53 +00:00  
				
					
						
							
							
								 
						
							
								eeaf688c0f 
								
							 
						 
						
							
							
								
								[asan] small code simplification  
							
							... 
							
							
							
							llvm-svn: 159522 
							
						 
						
							2012-07-02 11:42:29 +00:00  
				
					
						
							
							
								 
						
							
								aafe0918bc 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 159421 
							
						 
						
							2012-06-29 12:38:19 +00:00  
				
					
						
							
							
								 
						
							
								c387ca7bab 
								
							 
						 
						
							
							
								
								[asan] set a hard limit on the number of instructions instrumented pear each BB. This is (hopefully temporary) workaround for PR13225  
							
							... 
							
							
							
							llvm-svn: 159344 
							
						 
						
							2012-06-28 09:34:41 +00:00  
				
					
						
							
							
								 
						
							
								cbe34b4cc9 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 159077 
							
						 
						
							2012-06-23 11:37:03 +00:00  
				
					
						
							
							
								 
						
							
								9024160439 
								
							 
						 
						
							
							
								
								[asan] instrument cmpxchg and atomicrmw  
							
							... 
							
							
							
							llvm-svn: 157683 
							
						 
						
							2012-05-30 09:04:06 +00:00  
				
					
						
							
							
								 
						
							
								617232f32b 
								
							 
						 
						
							
							
								
								Use zero-based shadow by default on Android.  
							
							... 
							
							
							
							llvm-svn: 157317 
							
						 
						
							2012-05-23 11:52:12 +00:00  
				
					
						
							
							
								 
						
							
								5a464f03d3 
								
							 
						 
						
							
							
								
								[asan] small optimization: do not emit "x+0" instructions  
							
							... 
							
							
							
							llvm-svn: 155701 
							
						 
						
							2012-04-27 10:04:53 +00:00  
				
					
						
							
							
								 
						
							
								056e27ea49 
								
							 
						 
						
							
							
								
								Fix issue 67 by checking that the interface functions weren't redefined in the compiled source file.  
							
							... 
							
							
							
							llvm-svn: 155346 
							
						 
						
							2012-04-23 10:47:31 +00:00  
				
					
						
							
							
								 
						
							
								84a7f2e8e9 
								
							 
						 
						
							
							
								
								[asan] fix one more bug related to long double  
							
							... 
							
							
							
							llvm-svn: 153189 
							
						 
						
							2012-03-21 15:28:50 +00:00  
				
					
						
							
							
								 
						
							
								c58dc9fcd2 
								
							 
						 
						
							
							
								
								[asan] don't emit __asan_mapping_offset/__asan_mapping_scale by default -- they are currently used only for experiments  
							
							... 
							
							
							
							llvm-svn: 153040 
							
						 
						
							2012-03-19 16:40:35 +00:00  
				
					
						
							
							
								 
						
							
								01401cec00 
								
							 
						 
						
							
							
								
								[asan] rename class BlackList to FunctionBlackList and move it into a separate file -- we will need the same functionality in ThreadSanitizer  
							
							... 
							
							
							
							llvm-svn: 152753 
							
						 
						
							2012-03-14 23:22:10 +00:00  
				
					
						
							
							
								 
						
							
								d33e3d8c6e 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 151887 
							
						 
						
							2012-03-02 10:41:08 +00:00  
				
					
						
							
							
								 
						
							
								154a54d972 
								
							 
						 
						
							
							
								
								[asan] unpoison the stack before every noreturn call. Fixes asan issue 37. llvm part  
							
							... 
							
							
							
							llvm-svn: 150102 
							
						 
						
							2012-02-08 21:36:17 +00:00  
				
					
						
							
							
								 
						
							
								a2886c21d9 
								
							 
						 
						
							
							
								
								Convert assert(0) to llvm_unreachable  
							
							... 
							
							
							
							llvm-svn: 149967 
							
						 
						
							2012-02-07 05:05:23 +00:00  
				
					
						
							
							
								 
						
							
								cf9e8f6968 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 149800 
							
						 
						
							2012-02-05 02:29:43 +00:00  
				
					
						
							
							
								 
						
							
								17c981a45b 
								
							 
						 
						
							
							
								
								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
llvm-svn: 149470 
							
						 
						
							2012-02-01 04:51:17 +00:00  
				
					
						
							
							
								 
						
							
								f1179025ae 
								
							 
						 
						
							
							
								
								eliminate the "string" form of ConstantArray::get, using  
							
							... 
							
							
							
							ConstantDataArray::getString instead.
llvm-svn: 149365 
							
						 
						
							2012-01-31 06:18:43 +00:00  
				
					
						
							
							
								 
						
							
								22ddcfd2df 
								
							 
						 
						
							
							
								
								[asan] fix the ObjC support (asan Issue  #33 )  
							
							... 
							
							
							
							llvm-svn: 149300 
							
						 
						
							2012-01-30 23:50:10 +00:00  
				
					
						
							
							
								 
						
							
								7a36f9d399 
								
							 
						 
						
							
							
								
								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. 
llvm-svn: 149243 
							
						 
						
							2012-01-30 10:40:22 +00:00  
				
					
						
							
							
								 
						
							
								7471d1303d 
								
							 
						 
						
							
							
								
								[asan] correctly use ConstantExpr::getGetElementPtr. Catch by NAKAMURA Takumi  
							
							... 
							
							
							
							llvm-svn: 149172 
							
						 
						
							2012-01-28 04:27:16 +00:00  
				
					
						
							
							
								 
						
							
								c11d1dd133 
								
							 
						 
						
							
							
								
								[asan] enable asan only for the functions that have Attribute::AddressSafety  
							
							... 
							
							
							
							llvm-svn: 148846 
							
						 
						
							2012-01-24 19:34:43 +00:00  
				
					
						
							
							
								 
						
							
								c94cf8faf6 
								
							 
						 
						
							
							
								
								Implemented AddressSanitizer::getPassName()  
							
							... 
							
							
							
							llvm-svn: 148697 
							
						 
						
							2012-01-23 11:22:43 +00:00  
				
					
						
							
							
								 
						
							
								687d078192 
								
							 
						 
						
							
							
								
								[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  
							
							... 
							
							
							
							llvm-svn: 147953 
							
						 
						
							2012-01-11 18:15:23 +00:00  
				
					
						
							
							
								 
						
							
								3411f2ea68 
								
							 
						 
						
							
							
								
								[asan] cleanup: remove the SIGILL-related code (compiler part)  
							
							... 
							
							
							
							llvm-svn: 147667 
							
						 
						
							2012-01-06 18:09:21 +00:00  
				
					
						
							
							
								 
						
							
								7a9eb49a47 
								
							 
						 
						
							
							
								
								[asan] add the name of the module to the description of a global variable. This improves the readability of global-buffer-overflow reports.  
							
							... 
							
							
							
							llvm-svn: 146698 
							
						 
						
							2011-12-15 22:55:55 +00:00  
				
					
						
							
							
								 
						
							
								cd1aba8b4d 
								
							 
						 
						
							
							
								
								[asan] fix a bug (issue 19) where dlclose and the following mmap caused a false positive. compiler part.  
							
							... 
							
							
							
							llvm-svn: 146688 
							
						 
						
							2011-12-15 21:59:03 +00:00  
				
					
						
							
							
								 
						
							
								ac6ae7302d 
								
							 
						 
						
							
							
								
								[asan] remove .preinit_array from the compiler module (it breaks .so builds). This should be done in the run-time.  
							
							... 
							
							
							
							llvm-svn: 146527 
							
						 
						
							2011-12-14 00:01:51 +00:00  
				
					
						
							
							
								 
						
							
								21dc2be97a 
								
							 
						 
						
							
							
								
								[asan] report an error if blacklist file contains a malformed regex. fixes asan issue 17  
							
							... 
							
							
							
							llvm-svn: 146503 
							
						 
						
							2011-12-13 19:34:53 +00:00  
				
					
						
							
							
								 
						
							
								acb42b5919 
								
							 
						 
						
							
							
								
								[asan] use .preinit_array only on linux  
							
							... 
							
							
							
							llvm-svn: 146379 
							
						 
						
							2011-12-12 18:01:46 +00:00  
				
					
						
							
							
								 
						
							
								3563f8cd41 
								
							 
						 
						
							
							
								
								[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.  
							
							... 
							
							
							
							llvm-svn: 146284 
							
						 
						
							2011-12-09 22:09:32 +00:00  
				
					
						
							
							
								 
						
							
								d594bac68b 
								
							 
						 
						
							
							
								
								[asan] two minor fixes: use UnreachableInst after the neverreturn function call; use report_fatal_error when blacklist file can not be found  
							
							... 
							
							
							
							llvm-svn: 145611 
							
						 
						
							2011-12-01 18:54:53 +00:00  
				
					
						
							
							
								 
						
							
								8b5c7a56a3 
								
							 
						 
						
							
							
								
								[asan] do not instrument threadlocal globals, this is buggy  
							
							... 
							
							
							
							llvm-svn: 145092 
							
						 
						
							2011-11-23 02:10:54 +00:00  
				
					
						
							
							
								 
						
							
								1cdc6e9567 
								
							 
						 
						
							
							
								
								[asan] workaround for reg alloc bug 11395: don't instrument functions with large chunks of inline assembler  
							
							... 
							
							
							
							llvm-svn: 144962 
							
						 
						
							2011-11-18 01:41:06 +00:00  
				
					
						
							
							
								 
						
							
								a6edf4c21f 
								
							 
						 
						
							
							
								
								quick fix: remove GlobalVariable::GlobalVariable mistakenly commited at r144933. For some reason this compiles on linux  
							
							... 
							
							
							
							llvm-svn: 144936 
							
						 
						
							2011-11-17 23:37:53 +00:00  
				
					
						
							
							
								 
						
							
								65e2211b95 
								
							 
						 
						
							
							
								
								fall back to explicit list of allowed linkages when instrumenting globals in asan; add a test check that asan does not touch linkonce_odr  
							
							... 
							
							
							
							llvm-svn: 144933 
							
						 
						
							2011-11-17 23:14:59 +00:00  
				
					
						
							
							
								 
						
							
								6e6b03ec46 
								
							 
						 
						
							
							
								
								AddressSanitizer, first commit (compiler module only)  
							
							... 
							
							
							
							llvm-svn: 144758 
							
						 
						
							2011-11-16 01:35:23 +00:00