Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Add a method to set compact unwind encoding information in a frame. | Bill Wendling | 2011-07-19 | 1 | -0/+6 |
| | | | | llvm-svn: 135449 | ||||
* | Move some parts of TargetAsmInfo down to MCAsmInfo. This is not the greatest | Evan Cheng | 2011-07-15 | 1 | -2/+1 |
| | | | | | | | solution but it is a small step towards removing the horror that is TargetAsmInfo. llvm-svn: 135237 | ||||
* | Make EmitIntValue() work properly on big-endian targets. | Roman Divacky | 2011-06-07 | 1 | -3/+6 |
| | | | | llvm-svn: 132715 | ||||
* | Start keeping track of where the various unwind instructions are in the prolog. | Charles Davis | 2011-05-27 | 1 | -6/+16 |
| | | | | | | | Use them to calculate the offset inside the prolog. Emit this value when emitting the unwind codes. llvm-svn: 132177 | ||||
* | My attempt at fixing the leak reported by the valgrind buildbots. Valgrind will | Charles Davis | 2011-05-27 | 1 | -2/+4 |
| | | | | | | | | still report leaks, but they're spurious now. Valgrind cannot peer into std::vector objects--or any dynamic array, for that matter--because it doesn't know how big the array is. llvm-svn: 132174 | ||||
* | Fix inverted conditional in SaveReg and SaveXMM. Err when the frame pointer is | Charles Davis | 2011-05-27 | 1 | -3/+7 |
| | | | | | | | already defined, and err when the PushMachFrame operation isn't the first operation (if specified at all). llvm-svn: 132173 | ||||
* | Test .seh_startchained and .seh_endchained parsing. | Charles Davis | 2011-05-26 | 1 | -13/+13 |
| | | | | | | | | | | | Rework how the MCWin64EHUnwindInfo instances are stored. Fix issues with chained unwind areas exposed by the test that were related to this. The ChainedParent field had the wrong address, because when the chained unwind info was added, the addresses shifted around. Now we store the pointers to the structures, which are now allocated from the MC heap. llvm-svn: 132106 | ||||
* | Test basic SEH directive-parsing functionality. Fix a latent bug exposed by | Charles Davis | 2011-05-24 | 1 | -1/+2 |
| | | | | | | this test. llvm-svn: 132004 | ||||
* | Add methods to parse the SEH directives to the COFFAsmParser. Implement some | Charles Davis | 2011-05-22 | 1 | -1/+1 |
| | | | | | | | of them, particularly the ones that don't take arguments. Also implement .seh_proc and .seh_handler. llvm-svn: 131866 | ||||
* | Implement emission of all Win64 exception tables. Make the COFF streamer emit | Charles Davis | 2011-05-22 | 1 | -0/+7 |
| | | | | | | these tables. llvm-svn: 131833 | ||||
* | Don't allow unaligned offsets and sizes in the Win64 EH directives. | Charles Davis | 2011-05-22 | 1 | -2/+10 |
| | | | | | | Also, fix threshold for 'Big' register saves. llvm-svn: 131830 | ||||
* | Don't allow .seh_handler and .seh_handlerdata directives inside chained | Charles Davis | 2011-05-21 | 1 | -0/+5 |
| | | | | | | unwind areas. llvm-svn: 131795 | ||||
* | A handler for a function in the Win64 EH scheme can be both an unwind handler | Charles Davis | 2011-05-21 | 1 | -3/+5 |
| | | | | | | | | | and an exception handler. Handle that case. Also, add an 'Emitted' member to the MCWin64EHUnwindInfo struct. It will be needed later. llvm-svn: 131791 | ||||
* | Set the "LastFrameInst" field when streaming a .seh_setframe directive. This | Charles Davis | 2011-05-21 | 1 | -0/+1 |
| | | | | | | is needed for an upcoming patch. llvm-svn: 131772 | ||||
* | "Implement" the HandlerData Win64 EH method in the base MCStreamer. | Charles Davis | 2011-05-20 | 1 | -2/+1 |
| | | | | | | | | There's really nothing to implement. All this really does is swap to a pseudo-section that later gets written to the unwind info struct. That needs to be implemented in the object streamers. llvm-svn: 131734 | ||||
* | Looks like OS X assemblers (including MC) don't like | Rafael Espindola | 2011-05-19 | 1 | -1/+2 |
| | | | | | | | | | | foo: bar = foo .quad bar Avoid producing it. Fixes PR9951. llvm-svn: 131687 | ||||
* | Misc code refactorings: | Rafael Espindola | 2011-05-19 | 1 | -14/+8 |
| | | | | | | | * Remove unnecessary arguments now that ForceExpAbs is a method. * Use ForceExpAbs in EmitAbsValue. llvm-svn: 131683 | ||||
* | Implement the EndProlog Win64 EH method on the base MCStreamer. | Charles Davis | 2011-05-19 | 1 | -2/+4 |
| | | | | llvm-svn: 131679 | ||||
* | Implement the Win64 EH prolog instruction methods on the base MCStreamer. | Charles Davis | 2011-05-19 | 1 | -17/+33 |
| | | | | | | I had to change the API slightly to avoid overloading issues. llvm-svn: 131666 | ||||
* | Turns out GAS does have Win64 EH directives. (It also supports WinCE EH.) Make | Charles Davis | 2011-05-19 | 1 | -22/+22 |
| | | | | | | | | | ours compatible with GAS. In retrospect, I should have emailed binutils about this earlier. Thanks to Kai Tietz for pointing out that GAS already had SEH directives. llvm-svn: 131652 | ||||
* | Implement the StartChained and EndChained Win64 EH methods on MCStreamer. | Charles Davis | 2011-05-19 | 1 | -13/+23 |
| | | | | llvm-svn: 131629 | ||||
* | Implement the StartProc and EndProc Win64 EH methods on the base MCStreamer. | Charles Davis | 2011-05-19 | 1 | -8/+29 |
| | | | | | | Based largely on Rafael Espindola's work on CFI. Other methods soon to follow. llvm-svn: 131623 | ||||
* | Add some more Win64 EH directives: | Charles Davis | 2011-05-18 | 1 | -0/+24 |
| | | | | | | | | | | | | | - StartChained and EndChained delimit a chained unwind area, which can contain additional operations to be undone if an exception occurs inside of it. - UnwindOnly declares that this function doesn't handle any exceptions. If it has a handler, it's an unwind handler instead of an exception handler. - Lsda declares the location and size of the LSDA, which in the Win64 EH scheme is kept inside the UNWIND_INFO struct. Windows itself ignores the LSDA; it's used by the Language-Specific Handler (the "Personality Function" from DWARF). llvm-svn: 131572 | ||||
* | While thinking about how to know where the functions' boundaries are for | Charles Davis | 2011-05-18 | 1 | -2/+8 |
| | | | | | | | | | the purposes of the Win64 EH tables, I realized we had no way to tell where the function ends. (MASM bounds functions with PROC and ENDP keywords.) Add a directive to delimit the end of the function, and rename the 'frame' directive to more accurately reflect its duality with the new directive. llvm-svn: 131522 | ||||
* | Add a method I forgot in the last commit. Don't worry, this one passed | Charles Davis | 2011-05-16 | 1 | -0/+6 |
| | | | | | | self-host :). llvm-svn: 131421 | ||||
* | Fix copy-pasto. | Charles Davis | 2011-05-15 | 1 | -1/+1 |
| | | | | llvm-svn: 131384 | ||||
* | Add stub methods to MCStreamer for emitting Win64 exception-handling | Charles Davis | 2011-05-15 | 1 | -0/+36 |
| | | | | | | information. llvm-svn: 131382 | ||||
* | Add CFIStartSections to the asm printer. Add an assert that at least | Rafael Espindola | 2011-05-10 | 1 | -0/+1 |
| | | | | | | one of the sections is created. llvm-svn: 131124 | ||||
* | Add support for producing .deubg_frame sections. | Rafael Espindola | 2011-05-10 | 1 | -1/+4 |
| | | | | llvm-svn: 131121 | ||||
* | Factor some code into a new EmitFrames method. | Rafael Espindola | 2011-05-10 | 1 | -0/+8 |
| | | | | llvm-svn: 131119 | ||||
* | Parsing and plumbing for .cfi_sections. | Rafael Espindola | 2011-05-10 | 1 | -1/+7 |
| | | | | llvm-svn: 131117 | ||||
* | Simplify the handling of pcrel relocations on ELF. Now we do the right thing | Rafael Espindola | 2011-05-01 | 1 | -18/+3 |
| | | | | | | | | | | for all symbol differences and can drop the old EmitPCRelSymbolValue method. This also make getExprForFDESymbol on ELF equal to the one on MachO, and it can be made non-virtual. llvm-svn: 130634 | ||||
* | Implement MCAsmStreamer::EmitDwarfAdvanceFrameAddr. | Rafael Espindola | 2011-04-30 | 1 | -0/+23 |
| | | | | llvm-svn: 130585 | ||||
* | Mark the EH symbol global or weak if the corresponding function is. | Rafael Espindola | 2011-04-28 | 1 | -0/+4 |
| | | | | llvm-svn: 130397 | ||||
* | Factor a bit of code to MCStreamer::EmitLabel. Keep track of the last | Rafael Espindola | 2011-04-27 | 1 | -0/+12 |
| | | | | | | | | | | | | non private symbol. This will be use for handling foo: .cfi_startproc ... On OS X where we have to create a foo.eh symbol. llvm-svn: 130305 | ||||
* | Reduce clutter in asm output. Do not emit source location as comment for ↵ | Devang Patel | 2011-04-18 | 1 | -1/+2 |
| | | | | | | each instruction. llvm-svn: 129715 | ||||
* | Be consistent about being virtual and returning void in the cfi methods. | Rafael Espindola | 2011-04-12 | 1 | -23/+11 |
| | | | | | | Implement the ones that were missing in the asm streamer. llvm-svn: 129413 | ||||
* | Remove LastOffset from the asm parser. | Rafael Espindola | 2011-04-12 | 1 | -0/+11 |
| | | | | llvm-svn: 129378 | ||||
* | Fix the case of a .cfi_rel_offset before any .cfi_def_cfa_offset. | Rafael Espindola | 2011-04-12 | 1 | -0/+11 |
| | | | | llvm-svn: 129362 | ||||
* | Implement .cfi_same_value. | Rafael Espindola | 2011-04-12 | 1 | -0/+9 |
| | | | | llvm-svn: 129361 | ||||
* | Preliminary support for ARM frame save directives emission via MI flags. | Anton Korobeynikov | 2011-03-05 | 1 | -0/+15 |
| | | | | | | | This is just very first approximation how the stuff should be done (e.g. ARM-only for now). More to follow. llvm-svn: 127101 | ||||
* | Some first rudimentary support for ARM EHABI: print exception table in "text ↵ | Anton Korobeynikov | 2011-03-05 | 1 | -0/+25 |
| | | | | | | mode". llvm-svn: 127099 | ||||
* | Use a vector of pairs to implement the section stack, not two | Joerg Sonnenberger | 2011-02-21 | 1 | -2/+2 |
| | | | | | | independent vectors. llvm-svn: 126099 | ||||
* | Add support for pushsection and popsection. Patch by Joerg Sonnenberger. | Rafael Espindola | 2011-02-16 | 1 | -2/+3 |
| | | | | llvm-svn: 125629 | ||||
* | Remove second return. | Rafael Espindola | 2010-12-29 | 1 | -1/+0 |
| | | | | llvm-svn: 122616 | ||||
* | Implement cfi_def_cfa. Also don't convert to dwarf reg numbers twice. Looks | Rafael Espindola | 2010-12-29 | 1 | -0/+12 |
| | | | | | | like 6 is a fixed point of that and so the previous tests were OK :-) llvm-svn: 122614 | ||||
* | Implement cfi_def_cfa_register. | Rafael Espindola | 2010-12-29 | 1 | -0/+8 |
| | | | | llvm-svn: 122612 | ||||
* | Initial .cfi_offset implementation. | Rafael Espindola | 2010-12-29 | 1 | -0/+7 |
| | | | | llvm-svn: 122611 | ||||
* | Implement .cfi_remember_state and .cfi_restore_state. | Rafael Espindola | 2010-12-28 | 1 | -2/+23 |
| | | | | llvm-svn: 122602 | ||||
* | Start adding basic support for emitting the call frame instructions. | Rafael Espindola | 2010-12-28 | 1 | -1/+8 |
| | | | | llvm-svn: 122590 |