summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MachObjectWriter.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* On ELF we need to know which symbols are used in relocations to decide ifRafael Espindola2010-10-051-1/+1
| | | | | | | they should be in the symbol table or not. Instead of "guessing", just compute the symbol table after the relocations are known. llvm-svn: 115619
* This adds a Darwin x86_64 relocation encoding for a subtraction expressionKevin Enderby2010-10-021-13/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | where both symbols are "local", that is non-external symbols, and there is no "base" for the symbols used in the expression, that is the section has no non-temporary symbols. This case looks like this: % cat local_reloc_A-B.s .long 0 LB: .long 1 .long LA - LB - 4 .long 2 LA: .long 3 which llvm-mc will not encode without this patch, generates a "unsupported local relocations in difference" error, but the Darwin assembler will encode with relocation entries like this: % otool -rv a.out l.out a.out: Relocation information (__TEXT,__text) 2 entries address pcrel length extern type scattered symbolnum/value 00000008 False long False SUB False 1 (__TEXT,__text) 00000008 False long False UNSIGND False 1 (__TEXT,__text) which is very similar to what is encoded when the symbols don't have the leading 'L' and they are not temporary symbols. Which llvm-mc and the Darwin assembler will encoded like this: Relocation information (__TEXT,__text) 2 entries address pcrel length extern type scattered symbolnum/value 00000008 False long True SUB False B 00000008 False long True UNSIGND False A This is the missing relocation encoding needed to allow the Mach-O x86 Dwarf file and line table to be emitted. So this patch also removes the TODO from the if() statement in MCMachOStreamer::Finish() that didn't call MCDwarfFileTable::Emit() for 64-bit targets. llvm-svn: 115389
* Correctly produce R_X86_64_32 or R_X86_64_32S.Rafael Espindola2010-09-301-0/+2
| | | | | | | | | | | | | With this patch in movq $foo, foo(%rip) foo: .long foo We produce a R_X86_64_32S for the first relocation and R_X86_64_32 for the second one. llvm-svn: 115134
* Make it possible for the MCObjectWriter to decide if a given fixup is fullyRafael Espindola2010-09-301-0/+118
| | | | | | | | | | | resolved or not. Different object files have different restrictions and different native assemblers have different idiosyncrasies we want to emulate for now. Move the existing MachO logic to the new place and implement an ELF one that gets fixups to globals right. llvm-svn: 115131
* Remove unused argument.Rafael Espindola2010-09-271-3/+3
| | | | llvm-svn: 114852
* MC/Mach-O/i386: Fix a crash in relocation handling.Daniel Dunbar2010-09-171-1/+2
| | | | llvm-svn: 114176
* silence a vc2010 warning: " result of 32-bit shift implicitly converted toChris Lattner2010-08-161-1/+1
| | | | | | 64 bits (was 64-bit shift intended?)", pointed out by 'nobled' on llvmdev llvm-svn: 111148
* Revert "MC/MachO: Fix possible null pointer dereference."Michael J. Spencer2010-08-101-1/+1
| | | | | | | | This reverts commit 110575. Target.isAbsolute() is true if SD would be null. llvm-svn: 110683
* MC/MachO: Fix possible null pointer dereference.Michael J. Spencer2010-08-091-1/+1
| | | | | | Discovered by Microsoft Visual Studio 2010 Code Analysis. llvm-svn: 110575
* finish up support for callw: PR7195Chris Lattner2010-07-071-0/+2
| | | | llvm-svn: 107826
* The variable "Value" is carefully set to Layout.getSymbolAddress,Duncan Sands2010-06-291-4/+0
| | | | | | but then not actually used - maybe a bug? Remove the variable. llvm-svn: 107137
* Get the addend correct for i386 pic.Eric Christopher2010-06-221-1/+7
| | | | | | Thanks Daniel! llvm-svn: 106608
* Update comment.Eric Christopher2010-06-171-1/+2
| | | | llvm-svn: 106191
* In progress on 32-bit addends.Eric Christopher2010-06-161-1/+7
| | | | llvm-svn: 106154
* MC: Simplify MCAssembler::isSymbolLinkerVisible to only take an MCSymbol.Daniel Dunbar2010-06-161-2/+2
| | | | llvm-svn: 106142
* Fix indentation.Eric Christopher2010-06-161-4/+4
| | | | llvm-svn: 106072
* Some more work on mach-o TLV relocations.Eric Christopher2010-06-151-0/+38
| | | | llvm-svn: 106062
* Rearrange conditionals so we don't get caught with the correct type as wrong.Eric Christopher2010-05-271-3/+3
| | | | llvm-svn: 104793
* MC: Eliminate MCAsmFixup, replace with MCFixup.Daniel Dunbar2010-05-261-4/+4
| | | | llvm-svn: 104699
* MC: Use accessors for access to MCAsmFixup.Daniel Dunbar2010-05-261-12/+14
| | | | llvm-svn: 104697
* Start adding mach-o tls reloc support.Eric Christopher2010-05-261-2/+8
| | | | llvm-svn: 104651
* Reduce string trashing.Benjamin Kramer2010-05-201-2/+2
| | | | llvm-svn: 104223
* MC/Mach-O: Implement support for setting indirect symbol table offset in ↵Daniel Dunbar2010-05-181-3/+14
| | | | | | | | section header. Also, create symbol data for LHS of assignment, to match 'as' symbol ordering better. llvm-svn: 104033
* MC/Mach-O: Remove some FIXMEs.Daniel Dunbar2010-05-181-7/+3
| | | | llvm-svn: 104032
* MC/Mach-O/x86_64: Darwin's special "signed_N" relocation types should only beDaniel Dunbar2010-05-141-23/+23
| | | | | | used to replace a normal relocation, not a reference to a GOT entry. llvm-svn: 103789
* MC/Mach-O/x86_64: Fix PCrel adjustment for x86_64, which was using the fixupDaniel Dunbar2010-05-111-1/+2
| | | | | | offset instead of the fixup address as intended. llvm-svn: 103527
* MC/Mach-O: As Kevin pointed out, 'Address' is really an offset -- rename to ↵Daniel Dunbar2010-05-111-11/+11
| | | | | | clarify. llvm-svn: 103526
* MC/Mach-O: Fix a crash on invalid.Daniel Dunbar2010-05-111-1/+4
| | | | llvm-svn: 103525
* MC/Mach-O: Fix another mismatch with .weak_definition, we shouldn't use aDaniel Dunbar2010-05-101-9/+15
| | | | | | scattered relocation entry with a .weak_definition. llvm-svn: 103443
* MC/Mach-O: Factor out doesSymbolRequireExternRelocation.Daniel Dunbar2010-05-101-10/+20
| | | | llvm-svn: 103442
* Fix i386 relocations to Weak Definitions. The relocation entries should beKevin Enderby2010-05-071-1/+12
| | | | | | | external and the item to be relocated should not have the address of the symbol added in. llvm-svn: 103302
* MC/Mach-O: Mark absolute variable's appropriately, and add Mach-O support forDaniel Dunbar2010-05-051-2/+2
| | | | | | | writing them. - <rdar://problem/7885351> integrated assembler broken for i386 objc code llvm-svn: 103112
* MC/Mach-O/x86_64: Relocations in debug sections should use local relocationsDaniel Dunbar2010-05-051-0/+11
| | | | | | | when possible. - <rdar://problem/7934873> llvm-svn: 103092
* Various MSVC warning fixes about truncated 64 bit shifts and const pointers ↵Benjamin Kramer2010-04-081-2/+2
| | | | | | passed to free. llvm-svn: 100767
* rename llvm::llvm_report_error -> llvm::report_fatal_errorChris Lattner2010-04-071-10/+10
| | | | llvm-svn: 100709
* MC/Mach-O/x86_64: Support @GOTPCREL on symbols, even for non-PCrel relocations!Daniel Dunbar2010-03-291-2/+9
| | | | llvm-svn: 99853
* MC/Mach-O: Switch to MCSectionData::getOrdinal.Daniel Dunbar2010-03-251-18/+4
| | | | llvm-svn: 99504
* Fix -Asserts warning.Daniel Dunbar2010-03-251-2/+1
| | | | llvm-svn: 99499
* MC: Route access to SectionData offset and file size through MCAsmLayout.Daniel Dunbar2010-03-251-7/+11
| | | | llvm-svn: 99474
* MC: Route access to Fragment offset and effective size through MCAsmLayout.Daniel Dunbar2010-03-251-4/+4
| | | | llvm-svn: 99473
* MC: Direct all {fragment,section,symbol} address access through the ↵Daniel Dunbar2010-03-241-36/+40
| | | | | | MCAsmLayout object. llvm-svn: 99380
* Add a FIXME.Daniel Dunbar2010-03-221-0/+14
| | | | llvm-svn: 99228
* MC: Change MCObjectWriter::RecordRelocation to take an MCFragment (instead ↵Daniel Dunbar2010-03-221-12/+12
| | | | | | of a MCDataFragment). Object files should only need the generic MCFragment features. llvm-svn: 99205
* Better fix for r98994, MachObjectWriterImpl wasn't intended to be virtual.Daniel Dunbar2010-03-201-8/+5
| | | | llvm-svn: 99031
* Fix -Wnon-virtual-dtor warning.Rafael Espindola2010-03-191-0/+2
| | | | llvm-svn: 98994
* MC/Mach-O/x86_64: Add relocation support.Daniel Dunbar2010-03-191-0/+213
| | | | | | | | - This is "extraordinarily" Darwin 'as' compatible. See the litany of FIXMEs littered about for more information. - There are a few cases which seem to clearly be 'as' bugs which I have left unsupported, and there is one cases where we diverge but should fix if it blocks diffing .o files (Darwin 'as' ends up widening a jump unnecessarily). - 403.gcc build, runs, and diffs equivalently to the 'as' built version now (using llvm-mc). However, it builds so slowly that I wouldn't recommend trying it quite yet. :) llvm-svn: 98974
* MC/Mach-O: Move to MachObjectWriter.{h,cpp}.Daniel Dunbar2010-03-191-0/+897
llvm-svn: 98952
OpenPOWER on IntegriCloud