Jon Harrop wrote:> > Is it? I was just reading the documentation about LLVM's exception > handling > and it sounded ideal for my needs. How much of it does not work as the > docs > imply? >Jon, I ran into this issue in September and re-ignited this discussion in another thread, here: http://www.nabble.com/Unwinds-Gone-Wild-td18747589.html http://www.nabble.com/Unwinds-Gone-Wild-td18747589.html I too had been quite excited by reading the documentation. Unfortunately, it seems "unwind" does nothing at all - it compiles into a no-op. So you have to use the lower-level functions in libgcc. I've never figured out how to get it working, sorry. But there may be helpful information in that thread. Matt -- View this message in context: http://www.nabble.com/Unwinds-gone-missing-tp21087203p21175147.html Sent from the LLVM - Dev mailing list archive at Nabble.com.
From what I understand, the unwind instruction is implemented only for the interpreter: there is a -lowerunwind pass for compiling to other systems which will either lower unwind and invoke to setjmp/ longjmp (slow) or turn invokes into calls and unwinds into abort()s. On 26 Dec 2008, at 15:19, Matt Giuca wrote:> > > Jon Harrop wrote: >> >> Is it? I was just reading the documentation about LLVM's exception >> handling >> and it sounded ideal for my needs. How much of it does not work as >> the >> docs >> imply? >> > > Jon, I ran into this issue in September and re-ignited this > discussion in > another thread, here: > http://www.nabble.com/Unwinds-Gone-Wild-td18747589.html > http://www.nabble.com/Unwinds-Gone-Wild-td18747589.html > > I too had been quite excited by reading the documentation. > Unfortunately, it > seems "unwind" does nothing at all - it compiles into a no-op. So > you have > to use the lower-level functions in libgcc. I've never figured out > how to > get it working, sorry. But there may be helpful information in that > thread. > > Matt > -- > View this message in context: http://www.nabble.com/Unwinds-gone-missing-tp21087203p21175147.html > Sent from the LLVM - Dev mailing list archive at Nabble.com. > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 3912 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081226/72efc798/attachment.bin>
Alastair Lynn wrote:> > From what I understand, the unwind instruction is implemented only > for the interpreter: there is a -lowerunwind pass for compiling to > other systems which will either lower unwind and invoke to setjmp/ > longjmp (slow) or turn invokes into calls and unwinds into abort()s. >Ah cheers, Alastair. That could be very useful (at least for me personally, I don't mind the slow so much as long as it behaves correctly!) I did a bit of research. Looks like it's -lowerinvoke, not -lowerunwind. http://llvm.org/docs/Passes.html#lowerinvoke That provides the two options you describe. Now this question is perhaps getting a bit off-topic, but I can't find a tool which accepts the -lower* arguments. Is there a tool for running such passes? Or can it only be accessed from the C++ API side of LLVM? Thanks Matt -- View this message in context: http://www.nabble.com/Unwinds-gone-missing-tp21087203p21175379.html Sent from the LLVM - Dev mailing list archive at Nabble.com.