Owen Anderson 
							
						 
					 
					
						
						
							
						
						ce665bd2e2 
					 
					
						
						
							
							Now with fewer extraneous semicolons!  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-10-07 22:25:06 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						90c579de5a 
					 
					
						
						
							
							Reapply r110396, with fixes to appease the Linux buildbot gods.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-06 18:33:48 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						1f74590e9d 
					 
					
						
						
							
							Revert r110396 to fix buildbots.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-06 00:23:35 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						9ccaf53ada 
					 
					
						
						
							
							Don't use PassInfo* as a type identifier for passes.  Instead, use the address of the static  
						
						... 
						
						
						
						ID member as the sole unique type identifier.  Clean up APIs related to this change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-05 23:42:04 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						d13db2c59c 
					 
					
						
						
							
							Fix batch of converting RegisterPass<> to INTIALIZE_PASS().  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-21 22:09:45 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f8bd392dce 
					 
					
						
						
							
							tighten up this code.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107670  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-06 15:59:27 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						f7a0c7bf8b 
					 
					
						
						
							
							Fix up -fstack-protector on linux to use the segment  
						
						... 
						
						
						
						registers.  Split out testcases per architecture and os
now.
Patch from Nelson Elhage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107640  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-06 05:18:56 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						b0bc6c361d 
					 
					
						
						
							
							Uniformize the names of type predicates: rather than having isFloatTy and  
						
						... 
						
						
						
						isInteger, we now have isFloatTy and isIntegerTy.  Requested by Chris!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96223  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-15 16:12:20 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						8c65f6e71c 
					 
					
						
						
							
							Move remaining stuff to the isInteger predicate.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92771  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 21:05:54 +00:00 
						 
				 
			
				
					
						
							
							
								Nick Lewycky 
							
						 
					 
					
						
						
							
						
						6726b6d75a 
					 
					
						
						
							
							Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.  
						
						... 
						
						
						
						Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-10-25 06:33:48 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						dfd85c142f 
					 
					
						
						
							
							Neuter stack protectors by only checking character arrays. This is what GCC  
						
						... 
						
						
						
						does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84916  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-10-23 00:01:05 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						1d0be15f89 
					 
					
						
						
							
							Push LLVMContexts through the IntegerType APIs.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-08-13 21:58:54 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						50dead06ff 
					 
					
						
						
							
							Revert yesterday's change by removing the LLVMContext parameter to AllocaInst and MallocInst.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75863  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-07-15 23:53:25 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						9adc0abad3 
					 
					
						
						
							
							Move EVER MORE stuff over to LLVMContext.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75703  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-07-14 23:09:55 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						333c400965 
					 
					
						
						
							
							This started as a small change, I swear.  Unfortunately, lots of things call the [I|F]CmpInst constructors.  Who knew!?  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75200  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-07-09 23:48:35 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						777d2306b3 
					 
					
						
						
							
							Rename PaddedSize to AllocSize, in the hope that this  
						
						... 
						
						
						
						will make it more obvious what it represents, and stop
it being confused with the StoreSize.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-05-09 07:06:46 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						5601699d7c 
					 
					
						
						
							
							When we split a basic block, there's a default branch to the newly created BB.  
						
						... 
						
						
						
						Delete this default branch, because we're going to generate our own.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66234  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-03-06 01:41:15 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						ceb4d1aecb 
					 
					
						
						
							
							Rename getABITypeSize to getTypePaddedSize, as  
						
						... 
						
						
						
						suggested by Chris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-01-12 20:38:59 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						5734450d40 
					 
					
						
						
							
							Rename stackprotector_create intrinsic to stackprotector.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59519  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-18 11:01:33 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						733bbc5320 
					 
					
						
						
							
							Remove the stackprotector_check intrinsic. Use a volatile load instead.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59504  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-18 07:30:57 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						c3348a77f7 
					 
					
						
						
							
							- Use "moveAfter" instead of "remove/insert" of a basic block.  
						
						... 
						
						
						
						- Use less indentation in coding.
- Shorten description.
- Update comments.
- Move code around
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59496  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-18 05:32:11 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						e9e6bdf27f 
					 
					
						
						
							
							Implement stack protectors as function attributes: "ssp" and "sspreq".  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59202  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-13 01:02:14 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						22511ed2fe 
					 
					
						
						
							
							Small simplification. Use the iterator already present as the insertion point.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59008  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-10 23:38:59 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						7205677a46 
					 
					
						
						
							
							- Make sure that we don't over-increment the iterator when going through the  
						
						... 
						
						
						
						basic blocks.
- Minor code clean-up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59002  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-10 21:13:10 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						b7c6ebcb47 
					 
					
						
						
							
							- Modify the stack protector algorithm so that the stack slot is allocated in  
						
						... 
						
						
						
						LLVM IR code and not in the selection DAG ISel. This is a cleaner solution.
- Fix the heuristic for determining if protectors are necessary. The previous
  one wasn't checking the proper type size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58824  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-07 01:23:58 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						848693c254 
					 
					
						
						
							
							Remove unneeded header file.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58823  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-06 23:56:59 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						1fb615f820 
					 
					
						
						
							
							Don't build a vector of returns. Just modify the Function in the loop.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58822  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-06 23:55:49 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						703ccfe053 
					 
					
						
						
							
							The size limit is for individual arrays. So if any array has more than 8 bytes  
						
						... 
						
						
						
						in it, then emit stack protectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58819  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-06 22:18:44 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						4c3a1d8d2b 
					 
					
						
						
							
							- Rename stackprotector_{prologue,epilogue} to stackprotector_{create,check}.  
						
						... 
						
						
						
						- Get rid of "HasStackProtector" in MachineFrameInfo.
- Modify intrinsics to tell which are doing what with memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58799  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-06 07:23:03 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						89c5cc6c79 
					 
					
						
						
							
							Adjust the stack protector heuristic to care about only arrays or calls to  
						
						... 
						
						
						
						"alloca".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58792  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-06 02:38:58 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						b2a4298ce4 
					 
					
						
						
							
							Implement the stack protector stack accesses via intrinsics:  
						
						... 
						
						
						
						- stackprotector_prologue creates a stack object and stores the guard there.
- stackprotector_epilogue reads the stack guard from the stack position created
  by stackprotector_prologue.
- The PrologEpilogInserter was changed to make sure that the stack guard is
  first on the stack frame.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58791  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-06 02:29:10 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						1508606ee8 
					 
					
						
						
							
							Remove dead variable.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58741  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-05 00:56:35 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						fa75dc647c 
					 
					
						
						
							
							Simplify the allocated size calculation.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58740  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-05 00:54:27 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						f0eaa9a233 
					 
					
						
						
							
							Fix comment  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58739  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-05 00:46:15 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						613f77439e 
					 
					
						
						
							
							Some code simplification. It now doesn't generate a prologue if the epilogue  
						
						... 
						
						
						
						isn't going to be generated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58734  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-05 00:00:21 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						4a3a851182 
					 
					
						
						
							
							Small simplification of the stack guard type.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58728  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-04 22:54:43 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						b7c2c1246f 
					 
					
						
						
							
							- Add a "getOrInsertGlobal" method to the Module class. This acts similarly to  
						
						... 
						
						
						
						"getOrInsertFunction" in that it either adds a new declaration of the global
  and returns it, or returns the current one -- optionally casting it to the
  correct type.
- Use the new getOrInsertGlobal in the stack protector code.
- Use "splitBasicBlock" in the stack protector code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58727  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-04 22:51:24 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						80a320d974 
					 
					
						
						
							
							Update in response to feedback from Chris:  
						
						... 
						
						
						
						- Use enums instead of magic numbers.
- Rework algorithm to use the bytes size from the target to determine when to
  emit stack protectors.
- Get rid of "propolice" in any comments.
- Renamed an option to its expanded form.
- Other miscellanenous changes.
More changes will come after this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58723  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-04 21:53:09 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						2b58ce5ab4 
					 
					
						
						
							
							Initial checkin for stack protectors. Here's what it does:  
						
						... 
						
						
						
						* The prologue is modified to read the __stack_chk_guard global and insert it
  onto the stack.
* The epilogue is modified to read the stored guard from the stack and compare
  it to the original __stack_chk_guard value. If they differ, then the
  __stack_chk_fail() function is called.
* The stack protector needs to be first on the stack (after the parameters) to
  catch any stack-smashing activities.
Front-end support will follow after a round of beta testing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58673  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-04 02:10:20 +00:00