• LLVM异常实现五 总结回顾

    整个异常处理的过程中,涉及到各种层级之间相互调用,同时还有一些函数还会负责处理不同的功能(比如说personality会同时处理search以及clean),这都导致了整个过程相对复杂,因此在这里选择将异常抛出的整个过程再次用文字整理一遍,省略去庞大...
  • LLVM异常实现四 personality

    前面libunwind的过程中多次和personality进行交互,这部分是由语言提供和语言相关的内容。libunwind的两个阶段对应到这一个函数之中,personality部分根据libunwind扫描到的平台相关的信息,在ehframe中扫描到...
  • LLVM异常实现三 libunwind

    上期提到的__cxa_xxx相关函数的实现离不开libunwind的相关接口,libunwind专门用于平台无关的堆栈展开和错误处理,内部做了很多平台相关的兼容工作,这期我们主要来介绍一下libunwind相关接口的具体实现。 _Unwind_Rai...
  • LLVM异常实现二 libcxxabi

    在之前的博客提到带有异常相关的C++代码编译成llvm ir后,会插入libcxxabi的__cxa_xxx函数,这期则是来了解这些函数的实现。 接口libcxxabi中的部分包含了exception,array的分配与释放,virtual相关,de...
  • LLVM异常实现一 LLVM IR

    这一期我们通过编译C++到LLVM代码来查看这部分的实现。在此之前我们需要了解一些简单的基础知识,之后我们将从一个最小抛出异常的代码开始,逐渐复杂化这个例子,查看生成不同的LLVM IR来理解整个过程。 函数调用首先一个编译一个函数调用的过程中,LL...
  • LLVM异常实现零 异常的多层结构与实现方式

    本系列的博客的内容是LLVM异常实现的整个过程,从C++生成LLVM IR开始,到运行时实际调用的库函数,会从抛出异常的过程开始结合llvm相关的代码进行讲解。这一期主要内容是讲解异常相关的结构、底层实现方式等基础信息,之后从顶向下逐层分解其中的实现...
  • 参加婚礼

    昨天我参加了同学的婚礼,他是高中为数不多和我有往来的人,结婚的对象同样也是班里的同学,其实在高中就有在谈恋爱,这么多年来分分合合不知道多少次,现在总算是结了婚。 为避免和别人说不上话的尴尬,我选择了十一点才到。在外面教堂风格的露天拍摄场地看到了新郎,...
  • 养猫

    前段时间我带了一只可爱的猫咪回家,给她起名为露露。由于是妹妹因此想要用甜品来命名,在到处查看甜品的时候看到各种xxx露,又觉得aa的这种名称形式喊起来比较方便,因此起了这样的名字。她到家的第一天有些怕生,几乎不肯出来,出来的时候路过饭碗也不肯吃东西,...
  • 从热辣滚烫到励志故事

    回北京之前表姐喊我吃了个饭顺便拉我去看了热辣滚烫,这部电影最近的热度很高,很大一方面是由于贾玲的变化,一年减下一百斤,对于众多需要减肥的人来说这是非常励志的故事。而我对这部电影的评价是这比起电影更像是另一种形式讲述的个人秀,这是一部爆火的电影,但只是...
  • 再读某书的联想

    因为之前的一条推文,我又想起了阿德勒的 被讨厌的勇气 ,上一次看大概还在两年前,当时的我觉得醍醐灌顶,但只是读过书中的内容,自己并没有什么观念上的变化,只对几个少数几个观点有深刻印象。 现在的我再回头看,依然觉得这些内容很有道理,但发现自己在很多事情...