Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | 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 | |||||
* | Add support for .cfi_lsda. | Rafael Espindola | 2010-12-27 | 1 | -2/+3 | |
| | | | | llvm-svn: 122584 | |||||
* | Add support for the same encodings of the personality function that gnu as | Rafael Espindola | 2010-12-27 | 1 | -1/+3 | |
| | | | | | | supports. llvm-svn: 122577 | |||||
* | Rename NeedsSetToChangeDiffSize to HasAggressiveSymbolFolding which is a much | Rafael Espindola | 2010-12-22 | 1 | -1/+1 | |
| | | | | | | better name and matches what is used in the MachO writer. llvm-svn: 122443 | |||||
* | Better fix for opt build | Matt Beaumont-Gay | 2010-12-15 | 1 | -3/+2 | |
| | | | | llvm-svn: 121910 | |||||
* | Fix opt -Werror build | Matt Beaumont-Gay | 2010-12-15 | 1 | -0/+1 | |
| | | | | llvm-svn: 121904 | |||||
* | Generalize an assert. | Rafael Espindola | 2010-12-15 | 1 | -1/+2 | |
| | | | | llvm-svn: 121851 | |||||
* | Fixed version of 121434 with no new memory leaks. | Rafael Espindola | 2010-12-10 | 1 | -1/+57 | |
| | | | | llvm-svn: 121471 |