39674fc008 
								
							 
						 
						
							
							
								
								Emit the compact unwind *if* we have a compact unwind encoding.  
							
							... 
							
							
							
							*headdesk*
llvm-svn: 144138 
							
						 
						
							2011-11-08 22:23:43 +00:00  
				
					
						
							
							
								 
						
							
								69d57cf9c4 
								
							 
						 
						
							
							
								
								Simplify some uses of utohexstr.  
							
							... 
							
							
							
							As a side effect hex is printed lowercase instead of uppercase now.
llvm-svn: 144013 
							
						 
						
							2011-11-07 21:00:59 +00:00  
				
					
						
							
							
								 
						
							
								9803abb788 
								
							 
						 
						
							
							
								
								As a first step, emit both the compact unwind and CIE/FDEs for a function.  
							
							... 
							
							
							
							llvm-svn: 139152 
							
						 
						
							2011-09-06 18:37:11 +00:00  
				
					
						
							
							
								 
						
							
								eee864520c 
								
							 
						 
						
							
							
								
								Some autoconf tests use module level inline asm to test compiler's handling of  
							
							... 
							
							
							
							.cfi_startproc. e.g. libffi:
 $ cat confopt.c 
asm (".cfi_startproc\n\t.cfi_endproc");
int main () { return 0; }
Teach MC / dwarf emission to handle these cfi directives which essentially
create an empty frame.
rdar://10017184
llvm-svn: 138504 
							
						 
						
							2011-08-24 22:31:37 +00:00  
				
					
						
							
							
								 
						
							
								4d9aa512f8 
								
							 
						 
						
							
							
								
								Emit the __compact_unwind section first. If there are any frames which weren't  
							
							... 
							
							
							
							emitted, emit them next as CIE/FDEs.
llvm-svn: 135807 
							
						 
						
							2011-07-22 21:18:59 +00:00  
				
					
						
							
							
								 
						
							
								bbf3b0de8b 
								
							 
						 
						
							
							
								
								Goodbye TargetAsmInfo. This eliminate last bit of CodeGen and Target in llvm-mc.  
							
							... 
							
							
							
							There is still a bit more refactoring left to do in Targets. But we are now very
close to fixing all the layering issues in MC.
llvm-svn: 135611 
							
						 
						
							2011-07-20 19:50:42 +00:00  
				
					
						
							
							
								 
						
							
								76792992d6 
								
							 
						 
						
							
							
								
								Add MCObjectFileInfo and sink the MCSections initialization code from  
							
							... 
							
							
							
							TargetLoweringObjectFileImpl down to MCObjectFileInfo.
TargetAsmInfo is done to one last method. It's *almost* gone!
llvm-svn: 135569 
							
						 
						
							2011-07-20 05:58:47 +00:00  
				
					
						
							
							
								 
						
							
								ada366c691 
								
							 
						 
						
							
							
								
								Micro-opt: Only emit compact unwind if there is a compact unwind encoding to emit.  
							
							... 
							
							
							
							llvm-svn: 135452 
							
						 
						
							2011-07-19 00:09:25 +00:00  
				
					
						
							
							
								 
						
							
								49bc680bdf 
								
							 
						 
						
							
							
								
								Use the CompactUnwindEncoding from the Frame, if it's defined.  
							
							... 
							
							
							
							llvm-svn: 135451 
							
						 
						
							2011-07-19 00:06:12 +00:00  
				
					
						
							
							
								 
						
							
								67c033e6b8 
								
							 
						 
						
							
							
								
								Move getInitialFrameState from TargetFrameInfo to MCAsmInfo (suggestions for  
							
							... 
							
							
							
							better location welcome).
llvm-svn: 135438 
							
						 
						
							2011-07-18 22:29:13 +00:00  
				
					
						
							
							
								 
						
							
								d60fa58ba1 
								
							 
						 
						
							
							
								
								Sink getDwarfRegNum, getLLVMRegNum, getSEHRegNum from TargetRegisterInfo down  
							
							... 
							
							
							
							to MCRegisterInfo. Also initialize the mapping at construction time.
This patch eliminate TargetRegisterInfo from TargetAsmInfo. It's another step
towards fixing the layering violation.
llvm-svn: 135424 
							
						 
						
							2011-07-18 20:57:22 +00:00  
				
					
						
							
							
								 
						
							
								a83b37a9db 
								
							 
						 
						
							
							
								
								Move some parts of TargetAsmInfo down to MCAsmInfo. This is not the greatest  
							
							... 
							
							
							
							solution but it is a small step towards removing the horror that is
TargetAsmInfo.
llvm-svn: 135237 
							
						 
						
							2011-07-15 02:09:41 +00:00  
				
					
						
							
							
								 
						
							
								9b8605f787 
								
							 
						 
						
							
							
								
								Remove setting the bit for personality function. It should be set by the linker.  
							
							... 
							
							
							
							llvm-svn: 135236 
							
						 
						
							2011-07-15 01:42:32 +00:00  
				
					
						
							
							
								 
						
							
								c998f71d14 
								
							 
						 
						
							
							
								
								Encode that we have a personality function.  
							
							... 
							
							
							
							llvm-svn: 135227 
							
						 
						
							2011-07-15 00:07:31 +00:00  
				
					
						
							
							
								 
						
							
								dafd598f05 
								
							 
						 
						
							
							
								
								* If we have an LSDA, we need to mark it in the encoding.  
							
							... 
							
							
							
							* The personality function should be encoded as an absolute pointer to the function.
llvm-svn: 135215 
							
						 
						
							2011-07-14 23:34:45 +00:00  
				
					
						
							
							
								 
						
							
								c7ac690ba2 
								
							 
						 
						
							
							
								
								Unfortunately several files in MC are badly violating layering rule by using  
							
							... 
							
							
							
							TargetAsmInfo, which in turn pulls in TargetRegisterInfo, etc. :-( There are
other cases of violations, but this is probably the worst.
This patch is but one small step towards fixing this. 500 more steps to go. :-(
llvm-svn: 135131 
							
						 
						
							2011-07-14 05:43:07 +00:00  
				
					
						
							
							
								 
						
							
								ee6e776be2 
								
							 
						 
						
							
							
								
								Don't emit the FDE end label if the last thing emitted was a compact unwind and  
							
							... 
							
							
							
							not the FDE
llvm-svn: 135020 
							
						 
						
							2011-07-13 00:49:09 +00:00  
				
					
						
							
							
								 
						
							
								b6adf46f62 
								
							 
						 
						
							
							
								
								Add a target hook to encode the compact unwind information.  
							
							... 
							
							
							
							llvm-svn: 134577 
							
						 
						
							2011-07-07 00:54:13 +00:00  
				
					
						
							
							
								 
						
							
								7ed5625082 
								
							 
						 
						
							
							
								
								Clean up the #includes.  
							
							... 
							
							
							
							llvm-svn: 134557 
							
						 
						
							2011-07-06 22:52:32 +00:00  
				
					
						
							
							
								 
						
							
								c737ac1816 
								
							 
						 
						
							
							
								
								Remove tabs.  
							
							... 
							
							
							
							llvm-svn: 134212 
							
						 
						
							2011-06-30 23:59:38 +00:00  
				
					
						
							
							
								 
						
							
								40cc749788 
								
							 
						 
						
							
							
								
								Improve comment: Show the register the DWARF label is added to.  
							
							... 
							
							
							
							llvm-svn: 134209 
							
						 
						
							2011-06-30 23:47:40 +00:00  
				
					
						
							
							
								 
						
							
								2fd8d775df 
								
							 
						 
						
							
							
								
								Add one more comment to the FDE verbose asm output.  
							
							... 
							
							
							
							llvm-svn: 134200 
							
						 
						
							2011-06-30 22:35:49 +00:00  
				
					
						
							
							
								 
						
							
								f166ab447e 
								
							 
						 
						
							
							
								
								Add comments to the FDE.  
							
							... 
							
							
							
							llvm-svn: 134196 
							
						 
						
							2011-06-30 22:02:20 +00:00  
				
					
						
							
							
								 
						
							
								e7fe47e53b 
								
							 
						 
						
							
							
								
								Add more comments to the ASM output for the CIE's "moves".  
							
							... 
							
							
							
							llvm-svn: 134194 
							
						 
						
							2011-06-30 21:45:12 +00:00  
				
					
						
							
							
								 
						
							
								567a1aee85 
								
							 
						 
						
							
							
								
								Add comments to the ASM output to help understand the compact unwind and CIE tables.  
							
							... 
							
							
							
							llvm-svn: 134191 
							
						 
						
							2011-06-30 21:25:51 +00:00  
				
					
						
							
							
								 
						
							
								7517466970 
								
							 
						 
						
							
							
								
								* Use the proper size to output the range size.  
							
							... 
							
							
							
							* Rough in the compact encoding part.
llvm-svn: 134119 
							
						 
						
							2011-06-30 00:30:52 +00:00  
				
					
						
							
							
								 
						
							
								4cdb206e76 
								
							 
						 
						
							
							
								
								Stupid error: If the LSDA and Personality functions aren't there, emit 0 instead  
							
							... 
							
							
							
							of the encoding.
llvm-svn: 134117 
							
						 
						
							2011-06-29 23:53:16 +00:00  
				
					
						
							
							
								 
						
							
								8fa4ada5cf 
								
							 
						 
						
							
							
								
								We don't want to use relocations inside the compact unwind section. Just use the  
							
							... 
							
							
							
							symbols instead.
llvm-svn: 134115 
							
						 
						
							2011-06-29 23:49:12 +00:00  
				
					
						
							
							
								 
						
							
								25fbb92320 
								
							 
						 
						
							
							
								
								Use a reference. Don't make a useless copy of the vector.  
							
							... 
							
							
							
							llvm-svn: 133707 
							
						 
						
							2011-06-23 07:55:41 +00:00  
				
					
						
							
							
								 
						
							
								a4b9d1f97b 
								
							 
						 
						
							
							
								
								Formatting changes. No functionality change.  
							
							... 
							
							
							
							llvm-svn: 133706 
							
						 
						
							2011-06-23 07:44:54 +00:00  
				
					
						
							
							
								 
						
							
								9af2fa9d1b 
								
							 
						 
						
							
							
								
								Use the presence of the __compact_unwind section to indicate that a target  
							
							... 
							
							
							
							supports compact unwind info instead of having a separate flag indicating this.
llvm-svn: 133685 
							
						 
						
							2011-06-23 05:13:28 +00:00  
				
					
						
							
							
								 
						
							
								e8fc92ad46 
								
							 
						 
						
							
							
								
								Some skeleton code to emit the compact unwind. If the information is unable to  
							
							... 
							
							
							
							be emitted in a compact way, we then default to emitting a CIE and FDE.
llvm-svn: 133676 
							
						 
						
							2011-06-23 01:06:23 +00:00  
				
					
						
							
							
								 
						
							
								f7cb7ef996 
								
							 
						 
						
							
							
								
								Directly print to a raw_ostream instead of printing to a buffer first.  
							
							... 
							
							
							
							llvm-svn: 133352 
							
						 
						
							2011-06-18 14:42:47 +00:00  
				
					
						
							
							
								 
						
							
								8aded86edb 
								
							 
						 
						
							
							
								
								No reason not to allow defining the CFA as a reg w/ offset zero.  
							
							... 
							
							
							
							llvm-svn: 131760 
							
						 
						
							2011-05-20 21:50:09 +00:00  
				
					
						
							
							
								 
						
							
								de32fa163f 
								
							 
						 
						
							
							
								
								Avoid a gcc warning.  
							
							... 
							
							
							
							llvm-svn: 131161 
							
						 
						
							2011-05-10 22:28:35 +00:00  
				
					
						
							
							
								 
						
							
								99f6735532 
								
							 
						 
						
							
							
								
								On MachO, unlike ELF, there should be no relocation to produce the CIE pointer.  
							
							... 
							
							
							
							llvm-svn: 131149 
							
						 
						
							2011-05-10 20:59:42 +00:00  
				
					
						
							
							
								 
						
							
								d0d2354258 
								
							 
						 
						
							
							
								
								The EH symbols are only needed in eh_frame, not debug_frame.  
							
							... 
							
							
							
							llvm-svn: 131146 
							
						 
						
							2011-05-10 19:51:53 +00:00  
				
					
						
							
							
								 
						
							
								27390b4a0e 
								
							 
						 
						
							
							
								
								In a debug_frame the cfi offset is to the start of the debug_frame section!  
							
							... 
							
							
							
							llvm-svn: 131129 
							
						 
						
							2011-05-10 15:20:23 +00:00  
				
					
						
							
							
								 
						
							
								1ecb12fc57 
								
							 
						 
						
							
							
								
								Add support for producing .deubg_frame sections.  
							
							... 
							
							
							
							llvm-svn: 131121 
							
						 
						
							2011-05-10 03:54:12 +00:00  
				
					
						
							
							
								 
						
							
								b6444c0401 
								
							 
						 
						
							
							
								
								Small cleanups.  
							
							... 
							
							
							
							llvm-svn: 131120 
							
						 
						
							2011-05-10 03:26:21 +00:00  
				
					
						
							
							
								 
						
							
								0e130d1d37 
								
							 
						 
						
							
							
								
								Remove unused argument.  
							
							... 
							
							
							
							llvm-svn: 131118 
							
						 
						
							2011-05-10 03:01:39 +00:00  
				
					
						
							
							
								 
						
							
								392445823d 
								
							 
						 
						
							
							
								
								Eliminate an unused line to fix a warning.  
							
							... 
							
							
							
							llvm-svn: 131078 
							
						 
						
							2011-05-08 23:19:04 +00:00  
				
					
						
							
							
								 
						
							
								ab39c63538 
								
							 
						 
						
							
							
								
								Don't force relaxation of AdvanceLoc instructions on OS X. gdb is happy with  
							
							... 
							
							
							
							the smaller encoding and this cuts 270336 bytes from a release version of
clang and 1246272 bytes from a debug build.
llvm-svn: 131067 
							
						 
						
							2011-05-08 14:35:21 +00:00  
				
					
						
							
							
								 
						
							
								bcabcdcedd 
								
							 
						 
						
							
							
								
								Switch Darwin to the generic CIE/FDE printer.  
							
							... 
							
							
							
							llvm-svn: 131031 
							
						 
						
							2011-05-06 22:29:04 +00:00  
				
					
						
							
							
								 
						
							
								f6daf94ab2 
								
							 
						 
						
							
							
								
								MCDwarf: Don't save Twine to local variable, this is almost never safe to do  
							
							... 
							
							
							
							(and should thus never be done).
 - Should fix a crash on win32.
llvm-svn: 130793 
							
						 
						
							2011-05-03 21:33:37 +00:00  
				
					
						
							
							
								 
						
							
								750cb61553 
								
							 
						 
						
							
							
								
								GCC uses a different encoding of pointers in the FDE when using  
							
							... 
							
							
							
							-fno-dwarf2-cfi-asm. Implement the same behavior.
llvm-svn: 130637 
							
						 
						
							2011-05-01 04:49:54 +00:00  
				
					
						
							
							
								 
						
							
								fd05785324 
								
							 
						 
						
							
							
								
								Simplify the handling of pcrel relocations on ELF. Now we do the right thing  
							
							... 
							
							
							
							for all symbol differences and can drop the old EmitPCRelSymbolValue
method.
This also make getExprForFDESymbol on ELF equal to the one on MachO, and it
can be made non-virtual.
llvm-svn: 130634 
							
						 
						
							2011-05-01 03:50:49 +00:00  
				
					
						
							
							
								 
						
							
								6a85f9b42e 
								
							 
						 
						
							
							
								
								Avoid some uses of .uleb128. This is a small speedup and more importantly  
							
							... 
							
							
							
							lets this code be used when producing assembly code for old assemblers without
uleb support.
llvm-svn: 130544 
							
						 
						
							2011-04-29 21:50:57 +00:00  
				
					
						
							
							
								 
						
							
								68067664c3 
								
							 
						 
						
							
							
								
								Last bit by bit compatibility patch to MCDwarf.cpp: If a FDE with no LSDA is  
							
							... 
							
							
							
							assigned to a CIE that requires one, just output a 0.
llvm-svn: 130472 
							
						 
						
							2011-04-29 03:06:29 +00:00  
				
					
						
							
							
								 
						
							
								7c7151512c 
								
							 
						 
						
							
							
								
								Add an alternative implementation of CIE and FDE emission that outputs them  
							
							... 
							
							
							
							in the same order as the one in CodeGen.
llvm-svn: 130471 
							
						 
						
							2011-04-29 02:42:28 +00:00  
				
					
						
							
							
								 
						
							
								6bd6a70837 
								
							 
						 
						
							
							
								
								Add the getExprForFDESymbol method that responsible for computing the  
							
							... 
							
							
							
							expressions used in the FDE to refer to symbols.
llvm-svn: 130437 
							
						 
						
							2011-04-28 21:04:39 +00:00  
				
					
						
							
							
								 
						
							
								c5dac4df2e 
								
							 
						 
						
							
							
								
								Add a getExprForPersonalitySymbol method to MCAsmInfo. Use it when  
							
							... 
							
							
							
							converting the symbol passed to .cfi_personality into bytes is the file.
llvm-svn: 130400 
							
						 
						
							2011-04-28 16:09:09 +00:00  
				
					
						
							
							
								 
						
							
								349c3298da 
								
							 
						 
						
							
							
								
								Mark the EH symbol global or weak if the corresponding function is.  
							
							... 
							
							
							
							llvm-svn: 130397 
							
						 
						
							2011-04-28 12:50:37 +00:00  
				
					
						
							
							
								 
						
							
								2eeee8cfef 
								
							 
						 
						
							
							
								
								Add a small temporary hack for producing identical eh_frame sections on OS X.  
							
							... 
							
							
							
							This removes one of the main advantages of moving eh_frame to MC, but
makes the transition a lot easier to debug (run md5).
llvm-svn: 130379 
							
						 
						
							2011-04-28 04:04:14 +00:00  
				
					
						
							
							
								 
						
							
								bf60fb0a37 
								
							 
						 
						
							
							
								
								Produce the EH_frame# symbols if needed.  
							
							... 
							
							
							
							llvm-svn: 130378 
							
						 
						
							2011-04-28 03:26:11 +00:00  
				
					
						
							
							
								 
						
							
								96b07932a3 
								
							 
						 
						
							
							
								
								Forward isFunctionEHFrameSymbolPrivate. If it is false, produce the foo.eh  
							
							... 
							
							
							
							symbols.
llvm-svn: 130375 
							
						 
						
							2011-04-28 02:46:42 +00:00  
				
					
						
							
							
								 
						
							
								ae124da625 
								
							 
						 
						
							
							
								
								Force some values to be absolute and align based on the FDE pointers size. A small  
							
							... 
							
							
							
							step towards using .cfi_* on OS X.
llvm-svn: 130273 
							
						 
						
							2011-04-27 01:43:49 +00:00  
				
					
						
							
							
								 
						
							
								bab81b9797 
								
							 
						 
						
							
							
								
								Delete the other unused variable in this function. Sorry I missed this  
							
							... 
							
							
							
							the first time through.
llvm-svn: 129969 
							
						 
						
							2011-04-22 01:29:18 +00:00  
				
					
						
							
							
								 
						
							
								ea41470726 
								
							 
						 
						
							
							
								
								Remove an unused variable from a function. This is a likely cut-paste-o.  
							
							... 
							
							
							
							Silences GCC warning.
I wonder why Clang doesn't warn on this...
llvm-svn: 129968 
							
						 
						
							2011-04-22 01:21:06 +00:00  
				
					
						
							
							
								 
						
							
								5395f44fe8 
								
							 
						 
						
							
							
								
								Compute the size of the FDE encoding instead of hard coding it. Update  
							
							... 
							
							
							
							X8664_ELFTargetObjectFile::getFDEEncoding to match reality.
llvm-svn: 129959 
							
						 
						
							2011-04-22 00:08:43 +00:00  
				
					
						
							
							
								 
						
							
								6aea59268a 
								
							 
						 
						
							
							
								
								Remove unused argument.  
							
							... 
							
							
							
							llvm-svn: 129955 
							
						 
						
							2011-04-21 23:39:26 +00:00  
				
					
						
							
							
								 
						
							
								ea61f22dd3 
								
							 
						 
						
							
							
								
								Don't pass address spaces to EmitULEB128IntValue.  
							
							... 
							
							
							
							llvm-svn: 129953 
							
						 
						
							2011-04-21 23:26:40 +00:00  
				
					
						
							
							
								 
						
							
								fd794affe5 
								
							 
						 
						
							
							
								
								Remove LastOffset from the asm parser.  
							
							... 
							
							
							
							llvm-svn: 129378 
							
						 
						
							2011-04-12 18:53:30 +00:00  
				
					
						
							
							
								 
						
							
								1ec0f46169 
								
							 
						 
						
							
							
								
								Fix the case of a .cfi_rel_offset before any .cfi_def_cfa_offset.  
							
							... 
							
							
							
							llvm-svn: 129362 
							
						 
						
							2011-04-12 16:12:03 +00:00  
				
					
						
							
							
								 
						
							
								2e1c9d2188 
								
							 
						 
						
							
							
								
								Implement  .cfi_same_value.  
							
							... 
							
							
							
							llvm-svn: 129361 
							
						 
						
							2011-04-12 15:31:05 +00:00  
				
					
						
							
							
								 
						
							
								2f93128109 
								
							 
						 
						
							
							
								
								Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there.  
							
							... 
							
							
							
							llvm-svn: 123170 
							
						 
						
							2011-01-10 12:39:04 +00:00  
				
					
						
							
							
								 
						
							
								570dd787a6 
								
							 
						 
						
							
							
								
								Make a bunch of symbols internal.  
							
							... 
							
							
							
							llvm-svn: 122642 
							
						 
						
							2010-12-30 22:34:44 +00:00  
				
					
						
							
							
								 
						
							
								46a5b05207 
								
							 
						 
						
							
							
								
								Correctly encode pcrel|indirect.  
							
							... 
							
							
							
							llvm-svn: 122624 
							
						 
						
							2010-12-29 04:31:26 +00:00  
				
					
						
							
							
								 
						
							
								563301dfdb 
								
							 
						 
						
							
							
								
								Fix bug when trying to output uint16_t or uint32_t.  
							
							... 
							
							
							
							llvm-svn: 122615 
							
						 
						
							2010-12-29 02:30:49 +00:00  
				
					
						
							
							
								 
						
							
								290d71671e 
								
							 
						 
						
							
							
								
								Implement cfi_def_cfa. Also don't convert to dwarf reg numbers twice. Looks  
							
							... 
							
							
							
							like 6 is a fixed point of that and so the previous tests were OK :-)
llvm-svn: 122614 
							
						 
						
							2010-12-29 01:42:56 +00:00  
				
					
						
							
							
								 
						
							
								6bbfb6c06c 
								
							 
						 
						
							
							
								
								Don't produce a "DW_CFA_advance_loc 0".  
							
							... 
							
							
							
							llvm-svn: 122609 
							
						 
						
							2010-12-28 23:38:03 +00:00  
				
					
						
							
							
								 
						
							
								85d91982ca 
								
							 
						 
						
							
							
								
								Implement .cfi_remember_state and .cfi_restore_state.  
							
							... 
							
							
							
							llvm-svn: 122602 
							
						 
						
							2010-12-28 18:36:23 +00:00  
				
					
						
							
							
								 
						
							
								3784c5ea3c 
								
							 
						 
						
							
							
								
								Fix warning about size potentially being used uninitialized  
							
							... 
							
							
							
							when doing a release build.
llvm-svn: 122594 
							
						 
						
							2010-12-28 10:02:42 +00:00  
				
					
						
							
							
								 
						
							
								736a35d9ab 
								
							 
						 
						
							
							
								
								Relax address updates in the eh_frame section.  
							
							... 
							
							
							
							llvm-svn: 122591 
							
						 
						
							2010-12-28 05:39:27 +00:00  
				
					
						
							
							
								 
						
							
								a75b87b55a 
								
							 
						 
						
							
							
								
								Start adding basic support for emitting the call frame instructions.  
							
							... 
							
							
							
							llvm-svn: 122590 
							
						 
						
							2010-12-28 04:15:37 +00:00  
				
					
						
							
							
								 
						
							
								1de2dd0e5e 
								
							 
						 
						
							
							
								
								Add support for .cfi_lsda.  
							
							... 
							
							
							
							llvm-svn: 122584 
							
						 
						
							2010-12-27 15:56:22 +00:00  
				
					
						
							
							
								 
						
							
								2ac8355ecd 
								
							 
						 
						
							
							
								
								Add support for the same encodings of the personality function that gnu as  
							
							... 
							
							
							
							supports.
llvm-svn: 122577 
							
						 
						
							2010-12-27 00:36:05 +00:00  
				
					
						
							
							
								 
						
							
								54462cd730 
								
							 
						 
						
							
							
								
								Fix .cfi_personality on 32 bit systems.  
							
							... 
							
							
							
							llvm-svn: 122570 
							
						 
						
							2010-12-26 22:47:37 +00:00  
				
					
						
							
							
								 
						
							
								9141b611ad 
								
							 
						 
						
							
							
								
								Add basic support for .cfi_personality.  
							
							... 
							
							
							
							llvm-svn: 122566 
							
						 
						
							2010-12-26 20:20:31 +00:00  
				
					
						
							
							
								 
						
							
								32c74ea3ab 
								
							 
						 
						
							
							
								
								"Fix" FDE alignment to match what gas does.  
							
							... 
							
							
							
							llvm-svn: 122006 
							
						 
						
							2010-12-17 00:28:02 +00:00  
				
					
						
							
							
								 
						
							
								0a017a6db2 
								
							 
						 
						
							
							
								
								Fixed version of 121434 with no new memory leaks.  
							
							... 
							
							
							
							llvm-svn: 121471 
							
						 
						
							2010-12-10 07:39:47 +00:00  
				
					
						
							
							
								 
						
							
								a945a34c73 
								
							 
						 
						
							
							
								
								Revert my previous patch to make the valgrind bots happy.  
							
							... 
							
							
							
							llvm-svn: 121461 
							
						 
						
							2010-12-10 04:01:09 +00:00  
				
					
						
							
							
								 
						
							
								56eb741237 
								
							 
						 
						
							
							
								
								Initial support for the cfi directives. This is just enough to get  
							
							... 
							
							
							
							f:
        .cfi_startproc
        nop
        .cfi_endproc
assembled (on ELF).
llvm-svn: 121434 
							
						 
						
							2010-12-09 23:48:29 +00:00  
				
					
						
							
							
								 
						
							
								d66e65df03 
								
							 
						 
						
							
							
								
								Use const references.  
							
							... 
							
							
							
							llvm-svn: 121426 
							
						 
						
							2010-12-09 23:08:35 +00:00  
				
					
						
							
							
								 
						
							
								44bbe36de6 
								
							 
						 
						
							
							
								
								Second try at making direct object emission produce the same results  
							
							... 
							
							
							
							as llc + llvm-mc. This time ELF is not changed and I tested that llvm-gcc
bootstrap on darwin10 using darwin9's assembler and linker.
llvm-svn: 121006 
							
						 
						
							2010-12-06 17:27:56 +00:00  
				
					
						
							
							
								 
						
							
								dee3062373 
								
							 
						 
						
							
							
								
								Revert previous two patches while I try to find out how to make both  
							
							... 
							
							
							
							linux and darwin assemblers happy :-(
llvm-svn: 121004 
							
						 
						
							2010-12-06 15:35:15 +00:00  
				
					
						
							
							
								 
						
							
								34a06a0802 
								
							 
						 
						
							
							
								
								Add an EmitAbsValue helper method and use it in cases where we want to be sure  
							
							... 
							
							
							
							that no relocations are used (on MochO).
Fixes llc producing different output from llc + llvm-mc.
llvm-svn: 121000 
							
						 
						
							2010-12-06 14:53:14 +00:00  
				
					
						
							
							
								 
						
							
								99e026dbca 
								
							 
						 
						
							
							
								
								Remember the contents of leb and dwarfline fragments when relaxing. This avoids  
							
							... 
							
							
							
							having to evaluate the expression again when writing.
llvm-svn: 120920 
							
						 
						
							2010-12-04 21:58:52 +00:00  
				
					
						
							
							
								 
						
							
								1c8ac8f027 
								
							 
						 
						
							
							
								
								There are two reasons why we might want to use  
							
							... 
							
							
							
							foo = a - b
.long foo
instead of just
.long a - b
First, on darwin9 64 bits the assembler produces the wrong result. Second,
if "a" is the end of the section all darwin assemblers (9, 10 and mc) will not
consider a - b to be a constant but will if the dummy foo is created.
Split how we handle these cases. The first one is something MC should take care
of. The second one has to be handled by the caller.
llvm-svn: 120889 
							
						 
						
							2010-12-04 03:21:47 +00:00  
				
					
						
							
							
								 
						
							
								1048e75fb9 
								
							 
						 
						
							
							
								
								Next step: Only pad debug_line when the target is darwin. Add a FIXME to avoid  
							
							... 
							
							
							
							doing that if the target is darwin10 or newer.
This fixes
*) Direct object emission was producing objects without the workaround on
   darwin9.
*) Assembly printing was producing objects with the workaround on linux.
llvm-svn: 120866 
							
						 
						
							2010-12-04 00:31:13 +00:00  
				
					
						
							
							
								 
						
							
								f8af778e1f 
								
							 
						 
						
							
							
								
								First step in fixing MC. Make it clear that we are avoiding a bug in the  
							
							... 
							
							
							
							darwin9 linker, what is needed to avoid it and where to get more information.
Also make the workaround simpler. Just the regular end_sequence we normally
create is more than 4 bytes.
Tested by building cctools and ld64 from darwin9 on a darwin10 system and using
those. I checked that I was able to reproduce the bootstrap failure when
the the workaround was disabled.
llvm-svn: 120854 
							
						 
						
							2010-12-03 23:36:59 +00:00  
				
					
						
							
							
								 
						
							
								57ab708bdd 
								
							 
						 
						
							
							
								
								Try to resolve symbol differences early, and if successful create a plain  
							
							... 
							
							
							
							data fragment. This reduces the time to assemble the test in 8711 from 60s to
54s.
llvm-svn: 120767 
							
						 
						
							2010-12-03 00:55:40 +00:00  
				
					
						
							
							
								 
						
							
								5eed2e63f8 
								
							 
						 
						
							
							
								
								It may not be an option to skip .debug_line if there are file reference in already emitted debug info. So, for now, emit dummy line table entry to make older linker and assemblers happy. This is not a new behavior, original AsmPrinter emitted similar line table entries.  
							
							... 
							
							
							
							llvm-svn: 120760 
							
						 
						
							2010-12-03 00:10:48 +00:00  
				
					
						
							
							
								 
						
							
								8cabd938ed 
								
							 
						 
						
							
							
								
								Use set directive for StartMinusEndExpr.  
							
							... 
							
							
							
							This is a fix for llvm-gcc-i386-darwin9 buildbot failure.
llvm-svn: 120742 
							
						 
						
							2010-12-02 21:32:30 +00:00  
				
					
						
							
							
								 
						
							
								556f203d64 
								
							 
						 
						
							
							
								
								Remove some #includes.  
							
							... 
							
							
							
							llvm-svn: 119967 
							
						 
						
							2010-11-22 11:53:17 +00:00  
				
					
						
							
							
								 
						
							
								9900b4802e 
								
							 
						 
						
							
							
								
								Add a MCLineSectionOrder vector so that we produce the line tables in a  
							
							... 
							
							
							
							deterministic order.
llvm-svn: 119795 
							
						 
						
							2010-11-19 07:41:23 +00:00  
				
					
						
							
							
								 
						
							
								b58867ccba 
								
							 
						 
						
							
							
								
								Change some methods in MCDwarf.cpp to be able to handle an arbitrary  
							
							... 
							
							
							
							MCStreamer instead of just MCObjectStreamer. Address changes cannot
be as efficient as we have to use DW_LNE_set_addres, but at least
most of the logic is shared.
This will be used so that, with CodeGen still using EmitDwarfLocDirective,
llvm-gcc is able to produce debug_line sections without needing an
assembler that supports .loc.
llvm-svn: 119777 
							
						 
						
							2010-11-19 02:26:16 +00:00  
				
					
						
							
							
								 
						
							
								1d37f35eea 
								
							 
						 
						
							
							
								
								Fix the encoding of negative line deltas.  
							
							... 
							
							
							
							llvm-svn: 118962 
							
						 
						
							2010-11-13 01:06:27 +00:00  
				
					
						
							
							
								 
						
							
								c4f4b2e878 
								
							 
						 
						
							
							
								
								Remove what looks like dead code in the production of debug lines.  
							
							... 
							
							
							
							We only produce debug line information if we have seen a line directive, so
this code is dead. Also, if we want to be bug by bug compatible with
gas and sometimes produce "empty" .debug_line sections, this will
match the content produced by gas.
llvm-svn: 118914 
							
						 
						
							2010-11-12 18:41:26 +00:00  
				
					
						
							
							
								 
						
							
								5e874982f2 
								
							 
						 
						
							
							
								
								Add support for expressions in .sleb/.uleb directives.  
							
							... 
							
							
							
							llvm-svn: 118023 
							
						 
						
							2010-11-02 17:22:24 +00:00  
				
					
						
							
							
								 
						
							
								a68d004d88 
								
							 
						 
						
							
							
								
								Incorporate suggestions by Daniel Dunbar after his review.  Thanks Daniel!  
							
							... 
							
							
							
							1) Changed ValidateDwarfFileNumber() to isValidDwarfFileNumber() to be better
   named.  Since it is just a predicate and isn't actually changing any state.
2) Added a missing return in the comments for setCurrentDwarfLoc() in 
   include/llvm/MC/MCContext.h for fix formatting.
3) Changed clearDwarfLocSeen() to ClearDwarfLocSeen() since it does change
   state.
4) Simplified the last test in isValidDwarfFileNumber() to just a one line
   boolean test of MCDwarfFiles[FileNumber] != 0 for the final return statement.
llvm-svn: 115551 
							
						 
						
							2010-10-04 20:17:24 +00:00  
				
					
						
							
							
								 
						
							
								e46564a4a8 
								
							 
						 
						
							
							
								
								This is the last major patch to implement support for the .loc directive  
							
							... 
							
							
							
							and output the dwarf line number tables.  This contains the code to emit and
encode the dwarf line tables from the previously gathered information in the
MCLineSection objects.  This contains all the details to encode the line and
address deltas into the dwarf line table.
To do this an MCDwarfLineAddrFragment has been added.
Also this moves the interface code out of Mach-O streamer into
MCDwarf so it should be useable by other object file formats.
There is now one call to be made from an MCObjectStreamer
EmitInstruction() method:
   MCLineEntry::Make(this, getCurrentSection());
to create a line entry after each instruction is assembled.
And one call call to be made from an MCObjectStreamer Finish() method:
   MCDwarfFileTable::Emit(this, DwarfLineSection);
when getContext().hasDwarfFiles() is true and is passed a object file specific
MCSection where to emit the dwarf file and the line tables.
This appears to now be correct for 32-bit targets, at least x86.  But the
relocation entries for 64-bit Darwin needs some further work which is next
up to work on.  So for now the 64-bit Mach-O target does not output the
dwarf file and line tables.
llvm-svn: 115157 
							
						 
						
							2010-09-30 16:52:03 +00:00  
				
					
						
							
							
								 
						
							
								e5930f142a 
								
							 
						 
						
							
							
								
								Added first bit of support for the dwarf .file directive.  This patch collects  
							
							... 
							
							
							
							the info from the .file directive and makes file and directory tables that
will eventually be put out as part of the dwarf info in the output file.
llvm-svn: 109651 
							
						 
						
							2010-07-28 20:55:35 +00:00