exception - LLVM 异常抛出

标签 exception llvm

我已阅读 this blog post , this documentation pagethis example ,但我仍然不明白如何使用 LLVM 的 IRBuilder 为非面向 C++ 的语言抛出基本异常。

根据我的理解,我必须:

  • 创建一个 llvm::Value包含抛出的值。
  • 调用“函数”,将抛出的值传递给它。这个函数不会返回。

  • 该示例使用系统重绕函数 ( _Unwind_RaiseException ) 来抛出 C++ 异常,但我真的不明白如何使用我自己的提升函数(因为我只需要抛出一个对象指针)。我错过了什么?

    最佳答案

    简短的回答是 _Unwind_RaiseException不是特定于 C++ 的函数。它来自 libunwind 库,允许抛出任何类型的异常。

    更多详情请见 these blog posts .

    关于exception - LLVM 异常抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824906/

    相关文章:

    c++ - 未处理的异常在 0x00C87963 在 .... : 0xC0000005: Access violation reading location 0xCCCCCCE0

    c++ - iterator_traits<InIter>::value_type 的创建是否会在传递时触发遵从? (异常测试)

    iphone - 如何捕获 iphone 中的所有异常?

    c - 我的编译器如何找到 stat(文件状态)函数?

    iphone - 我应该在 ubuntu 上为 iphone-dev 构建 llvm 吗?

    android - Android 列表中的 ArrayIndexOutOFBoundsException

    gcc - 是否可以使用 lldb 调试 gcc 编译的程序,或使用 gdb 调试 clang 编译的程序?

    clang - 如何使用 LLVM 生成 SVE 向量

    llvm - 创建一个带有引用参数的 LLVM 函数(例如 double &x)

    debugging - 异常时无法正确获取调用堆栈