b76df22a2e 
								
							 
						 
						
							
							
								
								MC: Move MCAlignFragment::EmitNops value out of the constructor.  
							
							... 
							
							
							
							llvm-svn: 103665 
							
						 
						
							2010-05-12 22:56:23 +00:00  
				
					
						
							
							
								 
						
							
								4405ffc688 
								
							 
						 
						
							
							
								
								MC: Eliminate MCZeroFillFragment, it is no longer needed.  
							
							... 
							
							
							
							llvm-svn: 103664 
							
						 
						
							2010-05-12 22:51:38 +00:00  
				
					
						
							
							
								 
						
							
								51402b79e4 
								
							 
						 
						
							
							
								
								MC: Drop support for alignment in ZeroFill fragment, we can just use  
							
							... 
							
							
							
							MCAlignFragments for this.
llvm-svn: 103661 
							
						 
						
							2010-05-12 22:51:27 +00:00  
				
					
						
							
							
								 
						
							
								aadb2cac49 
								
							 
						 
						
							
							
								
								MC/Mach-O: Explicitly track atoms, as represented by their defining symbol, for each fragment (not yet used).  
							
							... 
							
							
							
							llvm-svn: 103438 
							
						 
						
							2010-05-10 22:45:09 +00:00  
				
					
						
							
							
								 
						
							
								72afa956db 
								
							 
						 
						
							
							
								
								break coff symbol definition stuff out into proper MCStreamer callbacks,  
							
							... 
							
							
							
							patch by Nathan Jeffords!
llvm-svn: 103346 
							
						 
						
							2010-05-08 19:54:22 +00:00  
				
					
						
							
							
								 
						
							
								51bed9c870 
								
							 
						 
						
							
							
								
								Fix i386 relocations to Weak Definitions.  The relocation entries should be  
							
							... 
							
							
							
							external and the item to be relocated should not have the address of the
symbol added in.
llvm-svn: 103302 
							
						 
						
							2010-05-07 21:44:23 +00:00  
				
					
						
							
							
								 
						
							
								f3a53baf00 
								
							 
						 
						
							
							
								
								MC/Mach-O: Mark absolute variable's appropriately, and add Mach-O support for  
							
							... 
							
							
							
							writing them.
 - <rdar://problem/7885351> integrated assembler broken for i386 objc code
llvm-svn: 103112 
							
						 
						
							2010-05-05 19:01:05 +00:00  
				
					
						
							
							
								 
						
							
								deb7ba9cc0 
								
							 
						 
						
							
							
								
								MC: Reject attempts to define a variable symbol.  
							
							... 
							
							
							
							llvm-svn: 103111 
							
						 
						
							2010-05-05 19:01:00 +00:00  
				
					
						
							
							
								 
						
							
								7a989da0af 
								
							 
						 
						
							
							
								
								MC: Rename MCSymbol::{g,s}etValue -> MCSymbol::{g,s}etVariableValue.  
							
							... 
							
							
							
							llvm-svn: 103095 
							
						 
						
							2010-05-05 17:41:00 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								b31c49a70d 
								
							 
						 
						
							
							
								
								MC: Add MCInstFragment, not used yet.  
							
							... 
							
							
							
							llvm-svn: 99229 
							
						 
						
							2010-03-22 23:16:48 +00:00  
				
					
						
							
							
								 
						
							
								f1f1827bfa 
								
							 
						 
						
							
							
								
								MC/Mach-O: Factor out getOrCreateDataFragment().  
							
							... 
							
							
							
							llvm-svn: 99204 
							
						 
						
							2010-03-22 20:35:46 +00:00  
				
					
						
							
							
								 
						
							
								1bd7171c95 
								
							 
						 
						
							
							
								
								MC: Sink code emitter into MCAssembler.  
							
							... 
							
							
							
							llvm-svn: 98953 
							
						 
						
							2010-03-19 10:43:18 +00:00  
				
					
						
							
							
								 
						
							
								aa8f95eb56 
								
							 
						 
						
							
							
								
								MC: Fix a crash on invalid, attempting to evaluate undefined symbols.  
							
							... 
							
							
							
							llvm-svn: 98464 
							
						 
						
							2010-03-14 03:10:40 +00:00  
				
					
						
							
							
								 
						
							
								921e79f5eb 
								
							 
						 
						
							
							
								
								MC: Add MCAssembler::addFixup, which enforces that fixups are added in order.  
							
							... 
							
							
							
							llvm-svn: 98379 
							
						 
						
							2010-03-12 21:00:38 +00:00  
				
					
						
							
							
								 
						
							
								c5ddbad237 
								
							 
						 
						
							
							
								
								MC: Provide MCAssembler with a TargetAsmBackend.  
							
							... 
							
							
							
							llvm-svn: 98222 
							
						 
						
							2010-03-11 01:34:27 +00:00  
				
					
						
							
							
								 
						
							
								6eab721011 
								
							 
						 
						
							
							
								
								MC: Move the backend section and symbol data maps to MCAssembler.  
							
							... 
							
							
							
							llvm-svn: 98186 
							
						 
						
							2010-03-10 20:58:29 +00:00  
				
					
						
							
							
								 
						
							
								7e3283c055 
								
							 
						 
						
							
							
								
								Remove unneeded includes.  
							
							... 
							
							
							
							llvm-svn: 98167 
							
						 
						
							2010-03-10 17:56:05 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								5fe3129a5d 
								
							 
						 
						
							
							
								
								MC/Mach-O: Remove non-sensical comment, and add a missing AddValueSymbols call.  
							
							... 
							
							
							
							llvm-svn: 96809 
							
						 
						
							2010-02-22 22:08:57 +00:00  
				
					
						
							
							
								 
						
							
								1e2fad3de8 
								
							 
						 
						
							
							
								
								MC/Mach-O: Start emitting fixups/relocations for instructions.  
							
							... 
							
							
							
							llvm-svn: 96095 
							
						 
						
							2010-02-13 09:29:02 +00:00  
				
					
						
							
							
								 
						
							
								3374835b46 
								
							 
						 
						
							
							
								
								MCAssembler: Switch MCAsmFixup to storing MCFixupKind instead of just a size.  
							
							... 
							
							
							
							llvm-svn: 96094 
							
						 
						
							2010-02-13 09:28:54 +00:00  
				
					
						
							
							
								 
						
							
								1a1fbb50fc 
								
							 
						 
						
							
							
								
								MC/Mach-O: Implement EmitValue using data fragments + fixups instead of fill fragment.  
							
							... 
							
							
							
							llvm-svn: 96091 
							
						 
						
							2010-02-13 09:28:22 +00:00  
				
					
						
							
							
								 
						
							
								b311a6b3ae 
								
							 
						 
						
							
							
								
								MC: First cut at MCFixup, for getting fixup/relocation information out of an MCCodeEmitter.  
							
							... 
							
							
							
							llvm-svn: 95708 
							
						 
						
							2010-02-09 22:59:55 +00:00  
				
					
						
							
							
								 
						
							
								38d022efe9 
								
							 
						 
						
							
							
								
								add scaffolding for target-specific MCExprs.  
							
							... 
							
							
							
							llvm-svn: 95559 
							
						 
						
							2010-02-08 19:41:07 +00:00  
				
					
						
							
							
								 
						
							
								255a8c8b13 
								
							 
						 
						
							
							
								
								MC/Mach-O: Set SOME_INSTRUCTIONS bit for sections.  
							
							... 
							
							
							
							llvm-svn: 95135 
							
						 
						
							2010-02-02 21:44:01 +00:00  
				
					
						
							
							
								 
						
							
								3cde760023 
								
							 
						 
						
							
							
								
								mcstreamerize gprel32 emission.  
							
							... 
							
							
							
							llvm-svn: 94452 
							
						 
						
							2010-01-25 21:28:50 +00:00  
				
					
						
							
							
								 
						
							
								601ef33c77 
								
							 
						 
						
							
							
								
								mcstreamerize .file and .file.  This also fixes an issue where the  
							
							... 
							
							
							
							normal form of .file would fail if the filename had a weird character
in it.
llvm-svn: 94437 
							
						 
						
							2010-01-25 18:58:59 +00:00  
				
					
						
							
							
								 
						
							
								bc8f638531 
								
							 
						 
						
							
							
								
								add symbol attribute support for the ELF .type directive.  
							
							... 
							
							
							
							llvm-svn: 94435 
							
						 
						
							2010-01-25 18:30:45 +00:00  
				
					
						
							
							
								 
						
							
								91dac6d570 
								
							 
						 
						
							
							
								
								emit the .size directive for global variables on ELF through  
							
							... 
							
							
							
							mcstreamer.
llvm-svn: 94416 
							
						 
						
							2010-01-25 07:52:13 +00:00  
				
					
						
							
							
								 
						
							
								b1301f7bce 
								
							 
						 
						
							
							
								
								mcize lcomm, simplify .comm, extend both to support 64-bit sizes.  
							
							... 
							
							
							
							llvm-svn: 94299 
							
						 
						
							2010-01-23 07:47:02 +00:00  
				
					
						
							
							
								 
						
							
								685508cf49 
								
							 
						 
						
							
							
								
								move the various directive enums out of the MCStreamer class  
							
							... 
							
							
							
							into a new MCDirectives.h file.
llvm-svn: 94294 
							
						 
						
							2010-01-23 06:39:22 +00:00  
				
					
						
							
							
								 
						
							
								1deb09c28d 
								
							 
						 
						
							
							
								
								mcstreamerize .no_dead_strip and .reference for static ctors/dtors.  
							
							... 
							
							
							
							llvm-svn: 94290 
							
						 
						
							2010-01-23 05:51:36 +00:00  
				
					
						
							
							
								 
						
							
								c35681b298 
								
							 
						 
						
							
							
								
								Generalize mcasmstreamer data emission APIs to take an address space  
							
							... 
							
							
							
							identifier.  There is no way to work around it.
llvm-svn: 93896 
							
						 
						
							2010-01-19 19:46:13 +00:00  
				
					
						
							
							
								 
						
							
								660d979ad9 
								
							 
						 
						
							
							
								
								Add a note for the macho streamer and remove a used of the mangler from the soon to be defunct machowriter pass.  
							
							... 
							
							
							
							llvm-svn: 93670 
							
						 
						
							2010-01-17 03:49:01 +00:00  
				
					
						
							
							
								 
						
							
								ad36e8aceb 
								
							 
						 
						
							
							
								
								Pass StringRef by value.  
							
							... 
							
							
							
							llvm-svn: 86251 
							
						 
						
							2009-11-06 10:58:06 +00:00  
				
					
						
							
							
								 
						
							
								5d9134747b 
								
							 
						 
						
							
							
								
								MC: Set symbol values in MachO MCStreamer.  
							
							... 
							
							
							
							llvm-svn: 84236 
							
						 
						
							2009-10-16 01:58:23 +00:00  
				
					
						
							
							
								 
						
							
								8e6d889d4c 
								
							 
						 
						
							
							
								
								MC: Switch assembler API to using MCExpr instead of MCValue.  
							
							... 
							
							
							
							llvm-svn: 84234 
							
						 
						
							2009-10-16 01:58:03 +00:00  
				
					
						
							
							
								 
						
							
								c3bd60e393 
								
							 
						 
						
							
							
								
								MC: Remove unneeded context argument to MCExpr::Evaluate*.  
							
							... 
							
							
							
							llvm-svn: 84233 
							
						 
						
							2009-10-16 01:57:52 +00:00  
				
					
						
							
							
								 
						
							
								897ffadd2d 
								
							 
						 
						
							
							
								
								llvm-mc: Pass values to MCStreamer as MCExprs, not MCValues.  
							
							... 
							
							
							
							llvm-svn: 80578 
							
						 
						
							2009-08-31 08:09:28 +00:00  
				
					
						
							
							
								 
						
							
								b7b2097aac 
								
							 
						 
						
							
							
								
								llvm-mc: Simplify EmitAssignment ('.set' is identical to '=').  
							
							... 
							
							
							
							llvm-svn: 80577 
							
						 
						
							2009-08-31 08:09:09 +00:00  
				
					
						
							
							
								 
						
							
								73da11ebda 
								
							 
						 
						
							
							
								
								llvm-mc: Switch MCInst to storing an MCExpr* instead of an MCValue.  
							
							... 
							
							
							
							Also, use MCInst::print instead of custom code in MCAsmPrinter.
llvm-svn: 80575 
							
						 
						
							2009-08-31 08:08:38 +00:00  
				
					
						
							
							
								 
						
							
								945e257e99 
								
							 
						 
						
							
							
								
								llvm-mc: Make MCSymbolData symbol member const.  
							
							... 
							
							
							
							llvm-svn: 80573 
							
						 
						
							2009-08-31 08:08:06 +00:00  
				
					
						
							
							
								 
						
							
								02c7254f6d 
								
							 
						 
						
							
							
								
								llvm-mc: Add MCContext to MCAssembler.  
							
							... 
							
							
							
							llvm-svn: 80572 
							
						 
						
							2009-08-31 08:07:55 +00:00  
				
					
						
							
							
								 
						
							
								6a715dccdf 
								
							 
						 
						
							
							
								
								llvm-mc: MCStreamer cleanups. - Remove EmitLocalSymbol, this is unsupported for now.  
							
							... 
							
							
							
							- Switch Emit{CommonSymbol,Zerofill} to take alignment in bytes (for consistency).
llvm-svn: 80484 
							
						 
						
							2009-08-30 06:17:16 +00:00  
				
					
						
							
							
								 
						
							
								2a2459a291 
								
							 
						 
						
							
							
								
								llvm-mc: .lsym is more unsupported than unimplemented, pending a use case appearing.  
							
							... 
							
							
							
							Also, all one of the file level flags are implemented.
llvm-svn: 80352 
							
						 
						
							2009-08-28 07:08:47 +00:00  
				
					
						
							
							
								 
						
							
								2701eee0ad 
								
							 
						 
						
							
							
								
								llvm-mc: Support .comm emission.  
							
							... 
							
							
							
							llvm-svn: 80351 
							
						 
						
							2009-08-28 07:08:35 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								d82ef0e923 
								
							 
						 
						
							
							
								
								llvm-mc: Factor getSectionData out of SwitchSection.  
							
							... 
							
							
							
							llvm-svn: 80344 
							
						 
						
							2009-08-28 05:48:54 +00:00  
				
					
						
							
							
								 
						
							
								96abad185d 
								
							 
						 
						
							
							
								
								llvm-mc: Emit .lcomm as .zerofill.  
							
							... 
							
							
							
							llvm-svn: 80343 
							
						 
						
							2009-08-28 05:48:46 +00:00  
				
					
						
							
							
								 
						
							
								cf72e1c03e 
								
							 
						 
						
							
							
								
								llvm-mc: Add const to EmitZeroFill section argument.  
							
							... 
							
							
							
							llvm-svn: 80341 
							
						 
						
							2009-08-28 05:48:22 +00:00  
				
					
						
							
							
								 
						
							
								c7c5f9fa86 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Add MCCodeEmitter support, for encoding instructions.  
							
							... 
							
							
							
							- No relocations yet, of course.
llvm-svn: 80235 
							
						 
						
							2009-08-27 08:17:51 +00:00  
				
					
						
							
							
								 
						
							
								e2697738a4 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Set .subsections_via_symbols flag properly.  
							
							... 
							
							
							
							llvm-svn: 80144 
							
						 
						
							2009-08-26 21:22:22 +00:00  
				
					
						
							
							
								 
						
							
								c1710a04ba 
								
							 
						 
						
							
							
								
								llvm-mc: Add symbol entries for undefined symbols used in .fill and .org.  
							
							... 
							
							
							
							llvm-svn: 80086 
							
						 
						
							2009-08-26 13:57:37 +00:00  
				
					
						
							
							
								 
						
							
								aef5317edd 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Set addresses for symbols.  
							
							... 
							
							
							
							llvm-svn: 80065 
							
						 
						
							2009-08-26 02:48:04 +00:00  
				
					
						
							
							
								 
						
							
								c2c0bf961f 
								
							 
						 
						
							
							
								
								llvm-mc: Improve indirect symbol support (add the indirect index table).  
							
							... 
							
							
							
							llvm-svn: 80059 
							
						 
						
							2009-08-26 00:18:21 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								ca098517a3 
								
							 
						 
						
							
							
								
								prune some redundant #includes.  
							
							... 
							
							
							
							llvm-svn: 79746 
							
						 
						
							2009-08-22 19:35:08 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								6860ac7375 
								
							 
						 
						
							
							
								
								llvm-mc: Clean up some handling of symbol/section association to be more correct  
							
							... 
							
							
							
							(external was really undefined and there wasn't an explicit representation for
absolute symbols).
 - This still needs some cleanup to how the absolute "pseudo" section is dealt
   with, but I haven't figured out the nicest approach yet.
llvm-svn: 79733 
							
						 
						
							2009-08-22 07:22:36 +00:00  
				
					
						
							
							
								 
						
							
								b1068e4fe3 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Support .o emission for .org and .align.  
							
							... 
							
							
							
							llvm-svn: 79684 
							
						 
						
							2009-08-21 23:07:38 +00:00  
				
					
						
							
							
								 
						
							
								4ef7fb9530 
								
							 
						 
						
							
							
								
								llvm-mc/Mach-O: Support byte and fill value emission.  
							
							... 
							
							
							
							llvm-svn: 79652 
							
						 
						
							2009-08-21 18:29:01 +00:00  
				
					
						
							
							
								 
						
							
								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