Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								d821f4ac60 
								
							 
						 
						
							
							
								
								llvm-mc: Add a -mc-relax-all option, which relaxes every fixup. We always need  
							
							 
							
							... 
							
							
							
							exactly two passes in that case, and don't ever need to recompute any layout,
so this is a nice baseline for relaxation performance.
llvm-svn: 99563 
							
						 
						
							2010-03-25 22:49:09 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								6432bd744e 
								
							 
						 
						
							
							
								
								MC: Stop restarting layout on every relaxation.  
							
							 
							
							... 
							
							
							
							- Still O(N^2), just a faster form, and now its the MCAsmLayout's fault.
On the .s I am tuning against (combine.s from 403.gcc):
--
ddunbar@lordcrumb:MC$ diff stats-before.txt stats-after.txt
5,10c5,10
<    1728 assembler - Number of assembler layout and relaxation steps
<    7707 assembler - Number of emitted assembler fragments
<  120588 assembler - Number of emitted object file bytes
< 2233448 assembler - Number of evaluated fixups
<    1727 assembler - Number of relaxed instructions
< 6723845 mcexpr    - Number of MCExpr evaluations
---
>      3 assembler - Number of assembler layout and relaxation steps
>   7707 assembler - Number of emitted assembler fragments
> 120588 assembler - Number of emitted object file bytes
>  14796 assembler - Number of evaluated fixups
>   1727 assembler - Number of relaxed instructions
>  67889 mcexpr    - Number of MCExpr evaluations
--
Feel free to LOL at the -before numbers, if you like.
I am a little surprised we make more than 2 relaxation passes. It's pretty
trivial for us to do relaxation out-of-order if that would give a speedup.
llvm-svn: 99543 
							
						 
						
							2010-03-25 19:35:56 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								0ba6a671d4 
								
							 
						 
						
							
							
								
								MC: Simplify main section layout process by moving alignment into LayoutSection.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99529 
							
						 
						
							2010-03-25 18:16:42 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								25d114b2b2 
								
							 
						 
						
							
							
								
								MC: Sink Section address assignment into LayoutSection.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99528 
							
						 
						
							2010-03-25 18:16:38 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								4108802628 
								
							 
						 
						
							
							
								
								MC: Explicity track section and fragment ordinals.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99500 
							
						 
						
							2010-03-25 07:10:11 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								5b07334c0d 
								
							 
						 
						
							
							
								
								MC: Route access to SectionData offset and file size through MCAsmLayout.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99474 
							
						 
						
							2010-03-25 02:00:07 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								2522dd1c49 
								
							 
						 
						
							
							
								
								MC: Route access to Fragment offset and effective size through MCAsmLayout.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99473 
							
						 
						
							2010-03-25 02:00:02 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								5d98824615 
								
							 
						 
						
							
							
								
								MC: Eliminate MC{Fragment,{Section,Symbol}Data}::getAddress.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99467 
							
						 
						
							2010-03-25 01:03:24 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								7c969558d9 
								
							 
						 
						
							
							
								
								MC: Direct all {fragment,section,symbol} address access through the MCAsmLayout object.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99380 
							
						 
						
							2010-03-24 03:43:40 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								5376c2a431 
								
							 
						 
						
							
							
								
								MC: Sprinkle in some more interesting statistics.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99350 
							
						 
						
							2010-03-23 23:47:14 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								de04b3f62c 
								
							 
						 
						
							
							
								
								MC: Switch to using MCInst fragments to do relaxation.  
							
							 
							
							... 
							
							
							
							Also, both MCMachOStreamer and MCAssembler are now target independent!
llvm-svn: 99256 
							
						 
						
							2010-03-23 05:09:03 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								86face8333 
								
							 
						 
						
							
							
								
								MC: Add TargetAsmBackend::MayNeedRelaxation, for checking whether a particular instruction + fixups might need relaxation.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99249 
							
						 
						
							2010-03-23 03:13:05 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								a9ae3ae698 
								
							 
						 
						
							
							
								
								MC: Add TargetAsmBackend::WriteNopData and use to eliminate some target dependencies in MCMachOStreamer and MCAssembler.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99248 
							
						 
						
							2010-03-23 02:36:58 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								16cbe95dd6 
								
							 
						 
						
							
							
								
								MC: Tweak MCInstFragment to include the encoded data and fixups, so that we don't need to recompute them during relaxation. I will revisit this once all the other pieces of fast relaxation are in place.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99244 
							
						 
						
							2010-03-23 01:39:05 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								b31c49a70d 
								
							 
						 
						
							
							
								
								MC: Add MCInstFragment, not used yet.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99229 
							
						 
						
							2010-03-22 23:16:48 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								fdc7ccc4e4 
								
							 
						 
						
							
							
								
								MC: Fix a few more cases we were passing an MCDataFragment when a MCFragment would do, and sprinkle in some const.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99218 
							
						 
						
							2010-03-22 21:49:41 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								20ea02fde2 
								
							 
						 
						
							
							
								
								Simplify.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99217 
							
						 
						
							2010-03-22 21:49:38 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								a0ab4bf989 
								
							 
						 
						
							
							
								
								MC: Change MCObjectWriter::RecordRelocation to take an MCFragment (instead of a MCDataFragment). Object files should only need the generic MCFragment features.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99205 
							
						 
						
							2010-03-22 20:35:50 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								9213355a91 
								
							 
						 
						
							
							
								
								MC: Eliminate MCFragment::getMaxFileSize.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99203 
							
						 
						
							2010-03-22 20:35:43 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								32ffc58ca9 
								
							 
						 
						
							
							
								
								MC: Share the MCAsmLayout object, although its still not used for anything important.  
							
							 
							
							... 
							
							
							
							llvm-svn: 99202 
							
						 
						
							2010-03-22 20:35:35 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								4d7c8645fd 
								
							 
						 
						
							
							
								
								MC: Add TargetAsmBackend::createObjectWriter.  
							
							 
							
							... 
							
							
							
							- MCAssembler is now object-file independent, although we will surely need more work to fully support ELF/COFF.
llvm-svn: 98955 
							
						 
						
							2010-03-19 10:43:26 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								eaa367f5ae 
								
							 
						 
						
							
							
								
								MCCodeEmitter: Add target independent fixup flag for is-pc-relative.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98954 
							
						 
						
							2010-03-19 10:43:23 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								1bd7171c95 
								
							 
						 
						
							
							
								
								MC: Sink code emitter into MCAssembler.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98953 
							
						 
						
							2010-03-19 10:43:18 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								79e0e5a631 
								
							 
						 
						
							
							
								
								MC/Mach-O: Move to MachObjectWriter.{h,cpp}.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98952 
							
						 
						
							2010-03-19 10:43:15 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								c5084cccc8 
								
							 
						 
						
							
							
								
								MC: Add TargetAsmBackend::isVirtualSection hook.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98950 
							
						 
						
							2010-03-19 09:29:03 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								f027abf7de 
								
							 
						 
						
							
							
								
								MC: Split MCObjectWriter out of MCAssembler.cpp.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98949 
							
						 
						
							2010-03-19 09:28:59 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								49e5a8ac2a 
								
							 
						 
						
							
							
								
								MCAssembler: Pull out MCObjectWriter class.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98948 
							
						 
						
							2010-03-19 09:28:55 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								f0517efc6c 
								
							 
						 
						
							
							
								
								MCAssembler: Move ApplyFixup to the TargetAsmBackend, this is a target specific not object writer specific task.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98947 
							
						 
						
							2010-03-19 09:28:12 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								3cab275783 
								
							 
						 
						
							
							
								
								MC/Mach-O: Lift the fixup evaluation and application up (to the same place), and eliminate MCAsmFixup::FixedValue.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98944 
							
						 
						
							2010-03-19 07:09:47 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								d84d196a86 
								
							 
						 
						
							
							
								
								MC/Mach-O: Factor out ExecutePostLayoutBinding, to separate the post-layout changes the object writer may need to make to the assembler from the actual .o writing.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98943 
							
						 
						
							2010-03-19 07:09:33 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								563d40eda6 
								
							 
						 
						
							
							
								
								MC/Mach-O: Lift relocation emission logic a bit higher to separate evaluation / relocation handling from the actual .o writing.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98942 
							
						 
						
							2010-03-19 07:09:18 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								0f7fbb3d00 
								
							 
						 
						
							
							
								
								MC/Mach-O: Add isScatteredFixupFullyResolved, which implements the correct algorithm (used on x86_64) for determining whether an evaluated fixup is fully resolved (doesn't need relocation).  
							
							 
							
							... 
							
							
							
							- Test cases will follow, once we have x86_64 relocation support.
llvm-svn: 98926 
							
						 
						
							2010-03-19 03:18:18 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								6e13bb07fb 
								
							 
						 
						
							
							
								
								MC/Mach-O/x86_64: Add getAtom[ForAddress].  
							
							 
							
							... 
							
							
							
							- These find the defining symbol which identifies the containing atom for a symbol or address. They are currently very slow, but will be eliminated eventually.
llvm-svn: 98925 
							
						 
						
							2010-03-19 03:18:15 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								5ec4bdd1b3 
								
							 
						 
						
							
							
								
								MC/Mach-O: Factor out isScatteredFixupFullyResolvedSimple predicate, and fix some corner cases.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98924 
							
						 
						
							2010-03-19 03:18:12 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								c558ec211f 
								
							 
						 
						
							
							
								
								MC/Mach-O: Factor out isSymbolLinkerVisible method; "linker visible" is a made up term to refer to non-temporary labels + temporary labels in sections-which-require symbols. For Darwin, it corresponds to symbols which effectively define an atom.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98923 
							
						 
						
							2010-03-19 03:18:09 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								9c64ec0a7e 
								
							 
						 
						
							
							
								
								MCValue: Change to holding MCSymbolRefExprs instead of MCSymbols, we will need this for accessing to symbol modifiers.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98791 
							
						 
						
							2010-03-18 00:59:10 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								fe8d866fc7 
								
							 
						 
						
							
							
								
								MC/Mach-O/x86_64: Temporary labels in cstring sections require symbols (and external relocations, but we don't have x86_64 relocations yet).  
							
							 
							
							... 
							
							
							
							llvm-svn: 98583 
							
						 
						
							2010-03-15 21:56:50 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								232dc953ac 
								
							 
						 
						
							
							
								
								MC/Mach-O: Add MCSectionMachO::getType()  
							
							 
							
							... 
							
							
							
							llvm-svn: 98582 
							
						 
						
							2010-03-15 21:56:38 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								7c1f3d8cad 
								
							 
						 
						
							
							
								
								MC/X86_64: Symbol support.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98456 
							
						 
						
							2010-03-13 22:49:35 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								56597588f0 
								
							 
						 
						
							
							
								
								MC/Mach-O: Initial x86_64 support.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98454 
							
						 
						
							2010-03-13 22:10:17 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								34b8e553ea 
								
							 
						 
						
							
							
								
								MC/Mach-O: PCrel relocations weren't using the right base address, they are  
							
							 
							
							... 
							
							
							
							relative to the fragment address, not its offset. This was masked by the text
section normally being at address 0.
llvm-svn: 98420 
							
						 
						
							2010-03-13 02:38:00 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								12f1e32d59 
								
							 
						 
						
							
							
								
								MC/Mach-O: Implement initial support for relaxation.  
							
							 
							
							... 
							
							
							
							- The implementation is currently very brain dead and inefficient, but I have a
   clear plan on how to fix it.
 - The good news is, it works and correctly assembles 403.gcc (when built with
   Clang, at '-Os', '-Os -g', and '-O3'). Even better, at '-Os' and '-Os -g',
   the resulting binary is exactly equivalent to that when built with the system
   assembler. So it probably works! :)
llvm-svn: 98396 
							
						 
						
							2010-03-12 22:07:14 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								ea9e2f8a15 
								
							 
						 
						
							
							
								
								MC: Factor out MCAssembler::EvaluateFixup, and simplify.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98381 
							
						 
						
							2010-03-12 21:00:49 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								64b408b124 
								
							 
						 
						
							
							
								
								MC/Mach-O: Add MCSymbolData::getAddress() utility.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98266 
							
						 
						
							2010-03-11 18:22:51 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								5c5228a8f6 
								
							 
						 
						
							
							
								
								MC/Mach-O: Implement "absolutizing" semantics of .set, by evaluating the assembly time value of variables.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98241 
							
						 
						
							2010-03-11 05:53:37 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								cf55f96214 
								
							 
						 
						
							
							
								
								MC/Mach-O: Start passing in the basic MCAsmLayout object.  
							
							 
							
							... 
							
							
							
							- Also, drop the current location part of AsmLayout, I think I prefer to implement this via explicit symbols.
llvm-svn: 98240 
							
						 
						
							2010-03-11 05:53:33 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								c5ddbad237 
								
							 
						 
						
							
							
								
								MC: Provide MCAssembler with a TargetAsmBackend.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98222 
							
						 
						
							2010-03-11 01:34:27 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								dc765e9f03 
								
							 
						 
						
							
							
								
								MC/Mach-O: Use the MCAssembler symbol map instead of reconstructing.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98187 
							
						 
						
							2010-03-10 20:58:31 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								46ed804180 
								
							 
						 
						
							
							
								
								MC/Mach-O: Resolve a FIXME; these relocation types are no longer semanticaly different.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98120 
							
						 
						
							2010-03-10 02:10:29 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								27b984ac85 
								
							 
						 
						
							
							
								
								MC/Mach-O: Use the SECTDIFF relocation type for (A - B + constant) where A is external.  
							
							 
							
							... 
							
							
							
							- I'm not sure why, but this is what 'as' does.
llvm-svn: 98115 
							
						 
						
							2010-03-10 00:58:25 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								3dde457b94 
								
							 
						 
						
							
							
								
								MC/Mach-O: For PCrel relocations, we need to compensate for the PCrel adjustment when determining if we need a scattered relocation.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98082 
							
						 
						
							2010-03-09 21:27:58 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								d49794e703 
								
							 
						 
						
							
							
								
								MC/Mach-O: Also set the PCrel bit in the second half of paired relocation entries.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98081 
							
						 
						
							2010-03-09 21:27:47 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								4680000b27 
								
							 
						 
						
							
							
								
								MC/Mach-O: Don't generate relocations for PCrel fixups to local labels.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98080 
							
						 
						
							2010-03-09 21:27:30 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								cb01210eca 
								
							 
						 
						
							
							
								
								MC/Mach-O: Tweak .dump() formatting.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98028 
							
						 
						
							2010-03-09 01:12:23 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								97d64717c4 
								
							 
						 
						
							
							
								
								MC/Mach-O: Don't adjust section sizes when aligning zero fill sections, just pad the address.  
							
							 
							
							... 
							
							
							
							llvm-svn: 98027 
							
						 
						
							2010-03-09 01:12:20 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								3a3f472cb4 
								
							 
						 
						
							
							
								
								MC/Macho-O: Align the zerofill section itself to the maximum alignment.  
							
							 
							
							... 
							
							
							
							llvm-svn: 97991 
							
						 
						
							2010-03-08 22:03:42 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								6622fe7873 
								
							 
						 
						
							
							
								
								MC/Mach-O: Fix address compution for zero fill sections.  
							
							 
							
							... 
							
							
							
							llvm-svn: 97984 
							
						 
						
							2010-03-08 21:10:42 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								c6ac7940d9 
								
							 
						 
						
							
							
								
								MC/Mach-O: Error out instead of crashing on invalid scattered relocation expressions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 97983 
							
						 
						
							2010-03-08 21:10:39 +00:00  
						
					 
				
					
						
							
							
								 
								Kevin Enderby
							
						 
						
							 
							
							
							
							
								
							
							
								c26ddccf38 
								
							 
						 
						
							
							
								
								This is the second patch to allow x86 code to be aligned with optimal nops.  
							
							 
							
							... 
							
							
							
							With the compiler changed to use EmitCodeAlignment() it does change the
functionality.  But X86 assembly code assembled with llvm-mc does not change
its output.  For that we will eventually change the assembler frontend to
detect a '.align x, 0x90' when used in a section that 'hasInstructions' and use
EmitCodeAlignment, but will wait until we have better target hooks.
llvm-svn: 96988 
							
						 
						
							2010-02-23 21:41:24 +00:00  
						
					 
				
					
						
							
							
								 
								Kevin Enderby
							
						 
						
							 
							
							
							
							
								
							
							
								e83d74f626 
								
							 
						 
						
							
							
								
								This is the first patch to put the needed bits in place to eventually allow code  
							
							 
							
							... 
							
							
							
							to be aligned with optimal nops.  This patch does not change any functionality
and when the compiler is changed to use EmitCodeAlignment() it should also not
change the resulting output.  Once the compiler change is made and everything
looks good the next patch with the table of optimal X86 nops will be added to
WriteNopData() changing the output.  There are many FIXMEs in this patch which
will be removed when we have better target hooks (coming soon I hear).
llvm-svn: 96963 
							
						 
						
							2010-02-23 18:26:34 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								1d7179ad63 
								
							 
						 
						
							
							
								
								MC/Mach-O: Update fixup values for change to X86 offsets.  
							
							 
							
							... 
							
							
							
							llvm-svn: 96532 
							
						 
						
							2010-02-17 23:45:16 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								fe562b6598 
								
							 
						 
						
							
							
								
								Pacify gcc-4.5, which warns (correctly) that these switches have  
							
							 
							
							... 
							
							
							
							cases that are not part of the enum.
llvm-svn: 96477 
							
						 
						
							2010-02-17 14:52:22 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								8408c126c1 
								
							 
						 
						
							
							
								
								MCAssembler: Fix pcrel relocations. Oh and,  
							
							 
							
							... 
							
							
							
							--
ddunbar@ozzy:tmp$ clang -m32 -integrated-as hello.c && ./a.out
hello world!
--
llvm-svn: 96096 
							
						 
						
							2010-02-13 09:45:59 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								1e2fad3de8 
								
							 
						 
						
							
							
								
								MC/Mach-O: Start emitting fixups/relocations for instructions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 96095 
							
						 
						
							2010-02-13 09:29:02 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								3374835b46 
								
							 
						 
						
							
							
								
								MCAssembler: Switch MCAsmFixup to storing MCFixupKind instead of just a size.  
							
							 
							
							... 
							
							
							
							llvm-svn: 96094 
							
						 
						
							2010-02-13 09:28:54 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								97867a9cfc 
								
							 
						 
						
							
							
								
								MCAssembler: Sink fixup list into MCDataFragment.  
							
							 
							
							... 
							
							
							
							llvm-svn: 96093 
							
						 
						
							2010-02-13 09:28:43 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								056bc60336 
								
							 
						 
						
							
							
								
								MCAssembler: Switch MCFillFragment to only taking constant values. Symbolic expressions can always be emitted as data + fixups.  
							
							 
							
							... 
							
							
							
							llvm-svn: 96092 
							
						 
						
							2010-02-13 09:28:32 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								8e53203154 
								
							 
						 
						
							
							
								
								MCAssembler: Start applying fixups in the data section.  
							
							 
							
							... 
							
							
							
							llvm-svn: 96090 
							
						 
						
							2010-02-13 09:28:15 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								bedf1d4a41 
								
							 
						 
						
							
							
								
								MCAssembler: Add assorted dump() methods.  
							
							 
							
							... 
							
							
							
							llvm-svn: 96089 
							
						 
						
							2010-02-13 09:28:03 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								1d34759721 
								
							 
						 
						
							
							
								
								MC: Move assembler-backend's fixup list into the fragment.  
							
							 
							
							... 
							
							
							
							llvm-svn: 95926 
							
						 
						
							2010-02-11 21:29:46 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								ee82e763e6 
								
							 
						 
						
							
							
								
								MC: Move MCSectionData::Fixup out to MCAsmFixup.  
							
							 
							
							... 
							
							
							
							llvm-svn: 95925 
							
						 
						
							2010-02-11 21:29:29 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								9a0a46163d 
								
							 
						 
						
							
							
								
								llvm-mc: Add --show-fixups option, for displaying the instruction fixup information in the asm comments.  
							
							 
							
							... 
							
							
							
							llvm-svn: 95710 
							
						 
						
							2010-02-09 23:00:14 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								255a8c8b13 
								
							 
						 
						
							
							
								
								MC/Mach-O: Set SOME_INSTRUCTIONS bit for sections.  
							
							 
							
							... 
							
							
							
							llvm-svn: 95135 
							
						 
						
							2010-02-02 21:44:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								809ae81ff9 
								
							 
						 
						
							
							
								
								Add a new top-level MachO.h file for manifest constants, fixing  
							
							 
							
							... 
							
							
							
							a layering violation from MC -> Target.
llvm-svn: 95113 
							
						 
						
							2010-02-02 19:38:14 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								e945172ba4 
								
							 
						 
						
							
							
								
								Remove this fixme, looking at the linker source, all targets pad to 4 bytes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 93835 
							
						 
						
							2010-01-19 01:32:44 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								ad36e8aceb 
								
							 
						 
						
							
							
								
								Pass StringRef by value.  
							
							 
							
							... 
							
							
							
							llvm-svn: 86251 
							
						 
						
							2009-11-06 10:58:06 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								e024def785 
								
							 
						 
						
							
							
								
								Minor formatting tweaks.  
							
							 
							
							... 
							
							
							
							llvm-svn: 84235 
							
						 
						
							2009-10-16 01:58:15 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								8e6d889d4c 
								
							 
						 
						
							
							
								
								MC: Switch assembler API to using MCExpr instead of MCValue.  
							
							 
							
							... 
							
							
							
							llvm-svn: 84234 
							
						 
						
							2009-10-16 01:58:03 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								4fa0595b94 
								
							 
						 
						
							
							
								
								llvm-mc: Store MCSymbolData value as a pointer (to make MSVC happy).  
							
							 
							
							... 
							
							
							
							llvm-svn: 80652 
							
						 
						
							2009-09-01 04:09:03 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								945e257e99 
								
							 
						 
						
							
							
								
								llvm-mc: Make MCSymbolData symbol member const.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80573 
							
						 
						
							2009-08-31 08:08:06 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								02c7254f6d 
								
							 
						 
						
							
							
								
								llvm-mc: Add MCContext to MCAssembler.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80572 
							
						 
						
							2009-08-31 08:07:55 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								2701eee0ad 
								
							 
						 
						
							
							
								
								llvm-mc: Support .comm emission.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80351 
							
						 
						
							2009-08-28 07:08:35 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								42a39d038a 
								
							 
						 
						
							
							
								
								llvm-mc: Support .zerofill emission.  
							
							 
							
							... 
							
							
							
							- I'm still trying to figure out the cleanest way to implement this and match the assembler, currently there are some substantial differences.
llvm-svn: 80347 
							
						 
						
							2009-08-28 05:49:21 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								a468a12dfa 
								
							 
						 
						
							
							
								
								llvm-mc: Tweak section alignment and size computation to match 'as' closer.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80345 
							
						 
						
							2009-08-28 05:49:04 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								93665faad0 
								
							 
						 
						
							
							
								
								llvm-mc: Fix thinko in emitting values.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80340 
							
						 
						
							2009-08-28 05:48:10 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								47f11ac5b5 
								
							 
						 
						
							
							
								
								Try to make MSVC just a little happier.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80187 
							
						 
						
							2009-08-27 00:38:04 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								e73b267301 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Don't put assembler temporary labels in the symbol table.  
							
							 
							
							... 
							
							
							
							- I moved section creation back into AsmParser. I think policy decisions like
   this should be pushed higher, not lower, when possible (in addition the
   assembler has flags which change this behavior, for example).
llvm-svn: 80162 
							
						 
						
							2009-08-26 22:13:22 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								e2697738a4 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Set .subsections_via_symbols flag properly.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80144 
							
						 
						
							2009-08-26 21:22:22 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								c4581eaca8 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Add support for relocations.  
							
							 
							
							... 
							
							
							
							- I haven't really tried to find the "right" way to store the fixups or apply
   them, yet. This works, but isn't particularly elegant or fast.
 - Still no evaluation support, so we don't actually ever not turn a fixup into
   a relocation entry.
llvm-svn: 80089 
							
						 
						
							2009-08-26 13:58:10 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								a9eeb78ed5 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Move symbol indices into the MCSymbolData structure.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80088 
							
						 
						
							2009-08-26 13:57:54 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								066d0f93bf 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Add section padding where needed (to align the next section).  
							
							 
							
							... 
							
							
							
							Also, simplify some of Mach-O writer code which can now use section addresses.
llvm-svn: 80067 
							
						 
						
							2009-08-26 04:13:32 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								aef5317edd 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Set addresses for symbols.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80065 
							
						 
						
							2009-08-26 02:48:04 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								c2c0bf961f 
								
							 
						 
						
							
							
								
								llvm-mc: Improve indirect symbol support (add the indirect index table).  
							
							 
							
							... 
							
							
							
							llvm-svn: 80059 
							
						 
						
							2009-08-26 00:18:21 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								5a07d6a9c6 
								
							 
						 
						
							
							
								
								llvm-mc: Add statistic for number of fragments emitted by the assembler.  
							
							 
							
							... 
							
							
							
							llvm-svn: 80033 
							
						 
						
							2009-08-25 21:10:45 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								582d61026d 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Preliminary support for indirect symbols.  
							
							 
							
							... 
							
							
							
							- The indirect table itself isn't being filled in yet.
 - This isn't factored properly and is rather FIXMEd, but at the moment I'm more
   focused on figuring out what it needs to do.
llvm-svn: 79910 
							
						 
						
							2009-08-24 11:56:58 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								04a1158d13 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Support symbol attributes.  
							
							 
							
							... 
							
							
							
							- This is mostly complete, the main thing missing is .indirect_symbol support
   (which would be straight-forward, except that the way it is implemented in
   'as' makes getting an exact .o match interesting).
llvm-svn: 79899 
							
						 
						
							2009-08-24 08:40:12 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								d341e781da 
								
							 
						 
						
							
							
								
								llvm-mc: Tweak undefined symbol handling.  
							
							 
							
							... 
							
							
							
							llvm-svn: 79898 
							
						 
						
							2009-08-24 08:39:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								06fa176862 
								
							 
						 
						
							
							
								
								prune the #includes in raw_ostream.h by moving a  
							
							 
							
							... 
							
							
							
							member out of line. ftostr is not particularly speedy,
so that method is presumably not perf sensitive.
llvm-svn: 79885 
							
						 
						
							2009-08-24 03:52:50 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8f816e7d68 
								
							 
						 
						
							
							
								
								tweak #includes  
							
							 
							
							... 
							
							
							
							llvm-svn: 79744 
							
						 
						
							2009-08-22 19:19:12 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								d1859474a7 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Improve symbol table support:  
							
							 
							
							... 
							
							
							
							- Honor .globl.
 - Set symbol type and section correctly ('nm' now works), and order symbols
   appropriately.
 - Take care to the string table so that the .o matches 'as' exactly (for ease
   of testing).
llvm-svn: 79740 
							
						 
						
							2009-08-22 11:41:10 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								ff3eafd39d 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Sketch symbol table support.  
							
							 
							
							... 
							
							
							
							- The only .s syntax this honors right now is emitting labels, and some parts
   of the symbol table generation are wrong or faked.
 - This is enough to get nm to report such symbols... incorrectly, but still.
Also, fixed byte emission to extend the previous fragment if possible.
llvm-svn: 79739 
							
						 
						
							2009-08-22 10:13:24 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								38728fe481 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Move more logic for writing the Mach-O file into the writer  
							
							 
							
							... 
							
							
							
							class, and kill off MCSectionData::FileOffset.
llvm-svn: 79735 
							
						 
						
							2009-08-22 08:28:27 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								fef19ffe3a 
								
							 
						 
						
							
							
								
								llvm-mc: Rename / redefine MCFragment::FileOffset to MCFragment::Offset (the  
							
							 
							
							... 
							
							
							
							section offset).
llvm-svn: 79734 
							
						 
						
							2009-08-22 08:27:54 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								b1068e4fe3 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Support .o emission for .org and .align.  
							
							 
							
							... 
							
							
							
							llvm-svn: 79684 
							
						 
						
							2009-08-21 23:07:38 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								4ef7fb9530 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Support byte and fill value emission.  
							
							 
							
							... 
							
							
							
							llvm-svn: 79652 
							
						 
						
							2009-08-21 18:29:01 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								3016db39dd 
								
							 
						 
						
							
							
								
								llvm-mc: Start MCAssembler and MCMachOStreamer.  
							
							 
							
							... 
							
							
							
							- Together these form the (Mach-O) back end of the assembler.
 - MCAssembler is the actual assembler backend, which is designed to have a
   reasonable API. This will eventually grow to support multiple object file
   implementations, but for now its Mach-O/i386 only.
 - MCMachOStreamer adapts the MCStreamer "actions" API to the MCAssembler API,
   e.g. converting the various directives into fragments, managing state like
   the current section, and so on.
 - llvm-mc will use the new backend via '-filetype=obj', which may eventually
   be, but is not yet, since I hear that people like assemblers which actually
   assemble.
 - The only thing that works at the moment is changing sections. For the time
   being I have a Python Mach-O dumping tool in test/scripts so this stuff can
   be easily tested, eventually I expect to replace this with a real LLVM tool.
 - More doxyments to come.
I assume that since this stuff doesn't touch any of the things which are part of
2.6 that it is ok to put this in not so long before the freeze, but if someone
objects let me know, I can pull it.
llvm-svn: 79612 
							
						 
						
							2009-08-21 09:11:24 +00:00