summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCAssembler.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Prune some includes and forward declarations.Craig Topper2012-03-261-1/+1
| | | | llvm-svn: 153429
* ARM BL/BLX instruction fixups should use relocations.Jim Grosbach2012-02-271-2/+4
| | | | | | | | | | | | | We on the linker to resolve calls to the appropriate BL/BLX instruction to make interworking function correctly. It uses the symbol in the relocation to do that, so we need to be careful about being too clever. To enable this for ARM mode, split the BL/BLX fixup kind off from the unconditional-branch fixups. rdar://10927209 llvm-svn: 151571
* Convert assert(0) to llvm_unreachableCraig Topper2012-02-071-8/+4
| | | | llvm-svn: 149967
* Source information in 'expected relocatable expression' diagnostic.Jim Grosbach2012-01-271-1/+1
| | | | llvm-svn: 149105
* Tidy up. MCAsmBackend naming conventions.Jim Grosbach2012-01-181-5/+5
| | | | llvm-svn: 148400
* Move some ARM specific MCAssmebler bits into the ARMAsmBackend.Jim Grosbach2012-01-181-9/+2
| | | | llvm-svn: 148364
* Unweaken vtables as per ↵David Blaikie2011-12-201-0/+10
| | | | | | http://llvm.org/docs/CodingStandards.html#ll_virtual_anch llvm-svn: 146960
* Move target-specific logic out of generic MCAssembler.Jim Grosbach2011-12-061-5/+2
| | | | | | | | Whether a fixup needs relaxation for the associated instruction is a target-specific function, as the FIXME indicated. Create a hook for that and use it. llvm-svn: 145881
* Tidy up. Hard tabs.Jim Grosbach2011-12-061-1/+1
| | | | llvm-svn: 145878
* Switch MCAssembler to method names starting w/ lower-case.Jim Grosbach2011-12-061-31/+31
| | | | | | per http://llvm.org/docs/CodingStandards.html#ll_naming llvm-svn: 145873
* Better fix for ARM MOVT relocation encoding of thumb bit.Jim Grosbach2011-11-291-8/+8
| | | | | | Replaces r145318 with a more targetted fix for the relocation handling. llvm-svn: 145346
* Thumb2 only force the fixup thumb bit for data relocations.Jim Grosbach2011-11-281-8/+8
| | | | | | rdar://10493453 llvm-svn: 145318
* Trailing whitespace.Jim Grosbach2011-10-261-2/+2
| | | | llvm-svn: 143071
* Move TargetRegistry and TargetSelect from Target to Support where they belong.Evan Cheng2011-08-241-1/+1
| | | | | | These are strictly utilities for registering targets and components. llvm-svn: 138450
* Rename TargetAsmBackend to MCAsmBackend; rename createAsmBackend to ↵Evan Cheng2011-07-251-2/+2
| | | | | | createMCAsmBackend. llvm-svn: 136010
* Move TargetAsmParser.h TargetAsmBackend.h and TargetAsmLexer.h to MC where ↵Evan Cheng2011-07-231-1/+1
| | | | | | they belong. llvm-svn: 135833
* Don't force relaxation of AdvanceLoc instructions on OS X. gdb is happy withRafael Espindola2011-05-081-2/+1
| | | | | | | the smaller encoding and this cuts 270336 bytes from a release version of clang and 1246272 bytes from a debug build. llvm-svn: 131067
* MCAsmLayout: Add support for computing the symbol offset of variables. NotDaniel Dunbar2011-04-291-0/+27
| | | | | | currently used, because variables don't get reported as being "defined". llvm-svn: 130524
* Add a small temporary hack for producing identical eh_frame sections on OS X.Rafael Espindola2011-04-281-1/+2
| | | | | | | 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
* No relocation produces a SLEB or ULEB, make sure they are handled in MC.Rafael Espindola2011-04-261-1/+3
| | | | llvm-svn: 130181
* Remove unused STL header includes.Jay Foad2011-04-231-1/+0
| | | | llvm-svn: 130068
* Gas is very inconsistent about when a relaxation/relocation is needed. DoRafael Espindola2011-02-161-2/+4
| | | | | | the right thing and stop trying to copy it. Fixes PR8944. llvm-svn: 125648
* Add support for the --noexecstack option.Rafael Espindola2011-01-231-1/+1
| | | | llvm-svn: 124077
* Relax address updates in the eh_frame section.Rafael Espindola2010-12-281-3/+37
| | | | llvm-svn: 122591
* Merge IsFixupFullyResolved and IsSymbolRefDifferenceFullyResolved. We nowRafael Espindola2010-12-241-12/+24
| | | | | | have a single point where targets test if a relocation is needed. llvm-svn: 122549
* Assert that the AddrDelta expression is really constant and wrap it in a setRafael Espindola2010-12-221-1/+3
| | | | | | if we have a lame assembler. llvm-svn: 122446
* Use references and simplify.Rafael Espindola2010-12-221-1/+1
| | | | llvm-svn: 122405
* Don't relax org or align. They change size as the relaxation happens, but theyRafael Espindola2010-12-211-42/+27
| | | | | | | are not actually relaxed. For example, a section with only alignments will never needs relaxation. llvm-svn: 122356
* Layout one section until no relaxations are done and then move to the nextRafael Espindola2010-12-211-34/+41
| | | | | | | | | | section. This helps because in practice sections form a dag with debug sections pointing to text sections. Finishing up the text sections first makes the debug section relaxation trivial. llvm-svn: 122314
* Thumb's forced-PC-alignment requirement applies to the _total_ displacement, ↵Owen Anderson2010-12-171-2/+2
| | | | | | | | | not just to the fragment relative portion. While the fragment boundary is usually already aligned, it is possible for it not to be, which would lead to a non-aligned final displacement. llvm-svn: 122091
* MC/Assembler: Strip out object writer arguments, now that it is always availableDaniel Dunbar2010-12-171-49/+36
| | | | | | -- and remove FIXME asking for the same! llvm-svn: 122032
* MC/Assembler: Make the MCObjectWriter available through the lifetime of theDaniel Dunbar2010-12-171-21/+11
| | | | | | assembler. llvm-svn: 122031
* MC: Move target specific fixup info descriptors to TargetAsmBackend instead ofDaniel Dunbar2010-12-161-2/+2
| | | | | | | the MCCodeEmitter, which seems like a better organization. - Also, cleaned up some magic constants while in the area. llvm-svn: 121953
* Fix typo in r121875.Owen Anderson2010-12-151-1/+1
| | | | llvm-svn: 121880
* Implement cleanups suggested by Daniel.Owen Anderson2010-12-151-7/+11
| | | | llvm-svn: 121875
* Relax alignment fragments.Rafael Espindola2010-12-151-29/+26
| | | | | | | | | | | With this we don't need the EffectiveSize field anymore. Without that field LayoutFragment only updates offsets and we don't need to invalidate the current fragment when it is relaxed (only the ones following it). This is also a very small improvement in the accuracy of the layout info as we now use the after relaxation size immediately. llvm-svn: 121857
* Patch by David Meyer to avoid a O(N^2) behaviour when relaxing fragments.Rafael Espindola2010-12-151-2/+5
| | | | | | | Since we now don't update addresses so early, we might relax a bit more than we need to. This is simillar to the issue in PR8467. llvm-svn: 121856
* ARM Fixups relative to thumb functions need to have the low bit of the valueJim Grosbach2010-12-141-0/+10
| | | | | | set for interworking to work properly. rdar://8755956 llvm-svn: 121778
* Fix an issue in some Thumb fixups, where the effective PC address needs to ↵Owen Anderson2010-12-091-2/+9
| | | | | | | | | | be 4-byte aligned when calculating the offset. Add a new fixup flag to represent this, and use it for the one fixups that I have a testcase for needing this. It's quite likely that the other Thumb fixups will need this too, and to have their fixup encoding logic adjusted accordingly. llvm-svn: 121408
* Layout each section independently. With the testcase in PR8711:Rafael Espindola2010-12-071-58/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | before: 4 assembler - Number of assembler layout and relaxation steps 78563 assembler - Number of emitted assembler fragments 8693904 assembler - Number of emitted object file bytes 271223 assembler - Number of evaluated fixups 330771677 assembler - Number of fragment layouts 5958 assembler - Number of relaxed instructions 2508361 mcexpr - Number of MCExpr evaluations real 0m26.123s user 0m25.694s sys 0m0.388s after: 4 assembler - Number of assembler layout and relaxation steps 78563 assembler - Number of emitted assembler fragments 8693904 assembler - Number of emitted object file bytes 271223 assembler - Number of evaluated fixups 231507 assembler - Number of fragment layouts 5958 assembler - Number of relaxed instructions 2508361 mcexpr - Number of MCExpr evaluations real 0m2.500s user 0m2.113s sys 0m0.273s And yes, the outputs are identical :-) llvm-svn: 121207
* Sorry for such a large commit. The summary is that only MachO cares about theRafael Espindola2010-12-071-107/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | actuall addresses in a .o file, so it is better to let the MachO writer compute it. This is good for two reasons. First, areas that shouldn't care about addresses now don't have access to it. Second, the layout of each section is independent. I should use this in a subsequent commit to speed it up. Most of the patch is just removing the section address computation. The two interesting parts are the change on how we handle padding in the end of sections and how MachO can get the address of a-b when a and b are in different sections. Since now the expression evaluation normally doesn't know the section address, it will think that a-b needs relocation and let the MachO writer know. Once it has computed the section addresses, it calls back the expression evaluation with the section addresses to resolve these expressions. The remaining problem is the handling of padding. Currently it will create a special alignment fragment at the end. Since that fragment doesn't update the alignment of the section, it needs the real address to be computed. Since now the layout will not compute a-b with a and b in different sections, the only effect that the special alignment fragment has is update the address size of the section. This can also be done by the MachO writer. llvm-svn: 121076
* Use references to simplify the code a bit.Rafael Espindola2010-12-061-3/+3
| | | | llvm-svn: 121050
* Remove the instruction fragment to data fragment lowering since it was causingRafael Espindola2010-12-061-98/+38
| | | | | | freed data to be read. I will open a bug to track it being reenabled. llvm-svn: 121028
* Remove the getAddress getter, initialize Ordinal in the constructor and useRafael Espindola2010-12-061-0/+1
| | | | | | that on the ELF writer to detect a section we created. llvm-svn: 120981
* Add a getSymbolOffset method and use it in the ELF writer.Rafael Espindola2010-12-061-0/+5
| | | | llvm-svn: 120977
* Once the layout is done we don't need to keep updating which fragments areRafael Espindola2010-12-041-13/+5
| | | | | | valid. Addresses will not change. llvm-svn: 120921
* Remember the contents of leb and dwarfline fragments when relaxing. This avoidsRafael Espindola2010-12-041-35/+19
| | | | | | having to evaluate the expression again when writing. llvm-svn: 120920
* The sections that the ELF object writer has to create are very simple andRafael Espindola2010-12-021-20/+0
| | | | | | | | contain only data. Handle them specially instead of using AddSectionToTheEnd. This moves a hack from the generic assembler to the elf writer. It is also a bit faster and should make other improvements easier. llvm-svn: 120683
* Remove unused argument.Rafael Espindola2010-12-011-3/+2
| | | | llvm-svn: 120621
* Invalidate the layout on any relaxation, not just Instructions. Bug found by ↵Rafael Espindola2010-11-231-9/+11
| | | | | | | | David Meyer. While here, remove unused argument and rename UpdateForSlide to Invalidate. llvm-svn: 120009
OpenPOWER on IntegriCloud