search for: ehstreamer

Displaying 10 results from an estimated 10 matches for "ehstreamer".

2018 May 29
2
getting code ranges of multiple blocks and prevent reordering?
Hi. I'm very new to LLVM. For reasons to do with custom exception handling, we have a need to check IP/PC at runtime against code ranges. This can encompass multiple logically adjacent blocks. How to do this? I'm guessing:   insert a label at end of every block, takes it address, store that somewhere in our data; preferably as an offset from module or function start, but full address
2018 Jan 06
2
LLVM EH tables much larger than GCC's
...s 2 bytes. Increasing the .uleb128 directive to 2 bytes could reduce the (.ttbase - .start) difference to 0x7F, though, which can be represented with a 1-byte uleb128. (The LLVM assembler apparently alternates between these two encodings forever -- https://bugs.llvm.org/show_bug.cgi?id=35809.) The EHStreamer::emitExceptionTable code currently avoids this complication by calculating the size of everything in the EH table before-hand, and then aligning type infos using extra-large ULEB128 values (e.g. by encoding 0x20 as A0 80 00). Calculating the size of the EH table like this, though, requires using ud...
2015 Jan 29
4
[LLVMdev] RFC: Native Windows C++ exception handling
...h documentation I can make that seem sensible. My thinking is that the "eh.actions" list can be transformed into a compact xdata table later, after we've done machine basic block layout. I think the algorithm will be something like 1. Input: already laid out MachineFunction 2. Call EHStreamer::computeCallSiteTable to populate a LandingPadInfo vector sorted by ascending PC values 4. Iterate the LandingPadInfos, comparing the action list of each landing pad with the previous landing pad, assuming an empty action list at function start and end. 5. Model the action list as a stack, and comp...
2015 Jan 27
2
[LLVMdev] RFC: Native Windows C++ exception handling
Thanks, Reid. These are good points. So I guess that does take us back to something more like my original proposal. I like your suggestion of having some kind of “eh.actions” intrinsic to represent the outlining rather than the extension to landingpad that I had proposed. I was just working on something like that in conjunction with my second alternative idea. What I’d really like is to have
2014 Nov 10
2
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...R by: > 1. changing the personality function to __C_specific_handler, > __except_handler4, or in the future something provided by LLVM > 2. replacing the type_info globals we currently put in landing pads with > pointers to filter functions > > Then, in llvm/lib/CodeGen/AsmPrinter/EHStreamer.cpp where we currently > emit the LSDA for Itanium exceptions, we can emit something else keyed off > which kind of personality function we're using. > > --- > > SEH also allows implementing cleanups with __finally, but cleanups in > general are implemented with a fundament...
2015 Feb 11
2
[LLVMdev] RFC: Native Windows C++ exception handling
...inking is that the "eh.actions" list can be transformed into a > compact xdata table later, after we've done machine basic block layout. > > > > I think the algorithm will be something like > > > > 1. Input: already laid out MachineFunction > > 2. Call EHStreamer::computeCallSiteTable to populate a LandingPadInfo > vector sorted by ascending PC values > > 4. Iterate the LandingPadInfos, comparing the action list of each landing > pad with the previous landing pad, assuming an empty action list at > function start and end. > > 5. Model t...
2015 Jan 29
0
[LLVMdev] RFC: Native Windows C++ exception handling
...inking is that the "eh.actions" list can be transformed into a > compact xdata table later, after we've done machine basic block layout. > > > > I think the algorithm will be something like > > > > 1. Input: already laid out MachineFunction > > 2. Call EHStreamer::computeCallSiteTable to populate a LandingPadInfo > vector sorted by ascending PC values > > 4. Iterate the LandingPadInfos, comparing the action list of each landing > pad with the previous landing pad, assuming an empty action list at > function start and end. > > 5. Model t...
2015 Feb 11
2
[LLVMdev] RFC: Native Windows C++ exception handling
...h documentation I can make that seem sensible. My thinking is that the "eh.actions" list can be transformed into a compact xdata table later, after we've done machine basic block layout. I think the algorithm will be something like 1. Input: already laid out MachineFunction 2. Call EHStreamer::computeCallSiteTable to populate a LandingPadInfo vector sorted by ascending PC values 4. Iterate the LandingPadInfos, comparing the action list of each landing pad with the previous landing pad, assuming an empty action list at function start and end. 5. Model the action list as a stack, and comp...
2014 Nov 13
2
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...ropose we represent this in IR by: 1. changing the personality function to __C_specific_handler, __except_handler4, or in the future something provided by LLVM 2. replacing the type_info globals we currently put in landing pads with pointers to filter functions Then, in llvm/lib/CodeGen/AsmPrinter/EHStreamer.cpp where we currently emit the LSDA for Itanium exceptions, we can emit something else keyed off which kind of personality function we're using. --- SEH also allows implementing cleanups with __finally, but cleanups in general are implemented with a fundamentally different approach. During...
2015 Jul 29
1
[LLVMdev] Error when i am using command make -j4 command in cygwin to compile safecode
...ase+Asserts build llvm[4]: Compiling X86InstComments.cpp for Release+Asserts build llvm[3]: Compiling MemCpyOptimizer.cpp for Release+Asserts build llvm[4]: Compiling X86IntelInstPrinter.cpp for Release+Asserts build llvm[3]: Compiling InstCombinePHI.cpp for Release+Asserts build llvm[3]: Compiling EHStreamer.cpp for Release+Asserts build llvm[4]: Building Release+Asserts Archive Library libLLVMX86AsmPrinter.a make[4]: Leaving directory '/home/NIKHILREDDY/WORK/LLVM_OBJ/lib/Target/X86/InstPrinter' make[4]: Entering directory '/home/NIKHILREDDY/WORK/LLVM_OBJ/lib/Target/X86/AsmParser' llvm[...