llvm学习(十三):0202年的混淆——llvm8/9/10的变更

2020年3月24日,llvm10终于release了,当天就体验了一下。前段时间想看看是否会对混淆有影响,发现变化还是挺大的,本文以ollvm/armariris/hikari为例,总结一下 llvm8、9、10的更替过程中,变了哪些 API,以及如何去适配它们。

继续阅读“llvm学习(十三):0202年的混淆——llvm8/9/10的变更”

llvm学习(十一):史上最优雅的NDK加载pass方案

本文首发于先知社区:https://xz.aliyun.com/t/6643,转载到自己的博客作为系列的一篇文章,二者内容是一致的,推荐大家去先知看,因为 wordpress 排版太恶心了。

毫不夸张地称之为史上最优雅的 NDK 加载 pass 方案,强烈建议仔细阅读。关键词:

  • 不需要编译llvm
  • 仅依赖NDK,不需要额外的其他环境
  • 不会遇到配置引起的符号NotFound问题
  • 不污染NDK

继续阅读“llvm学习(十一):史上最优雅的NDK加载pass方案”

llvm学习(十):修复 macOS Catalina 缺失 /usr/include 导致的clang无法使用

今天升了macOS10.15,发现自己编译的llvm和clang坏掉了,重新编译也没用,而自带的/usr/clang是没有问题的,发现是 /usr/include 缺失。

继续阅读“llvm学习(十):修复 macOS Catalina 缺失 /usr/include 导致的clang无法使用”

llvm学习(九):再启程,llvm-8.0.0+ndkr19的环境搭建

ndkr19默认用的是llvm-8.0.2,而今天才发布的llvm-8.0.0,之前是用7.0.0将就的,今天终于不用将就了,重新搭建了一下环境,对 ndk 使用 llvm 的理解更加深刻。本文介绍一下开发环境的搭建。

继续阅读“llvm学习(九):再启程,llvm-8.0.0+ndkr19的环境搭建”

llvm学习(六):说说发现的其他几个项目的 Bug

最近开发参考了几个项目,仔细阅读源码的过程中,看到一些不大理解的地方。本来准备先写点基础知识的,看到hikari的作者在自己的 blog 里列举了其他人的 bug,作为后辈我也列举一下前人的 bug 好了。本文包括一个ollvm的 bug,多个hikari的bug。(不代表 Armariris 没 bug,因为写的太挫了,没忍心看。。。)

2020年01月20日,又发现一个ollvm的 bug,然后发现hikari 作者在 2019.1.1已将其修复,点赞。

继续阅读“llvm学习(六):说说发现的其他几个项目的 Bug”

llvm学习(四):移植到 Android,让 NDK 加载我们的 Pass

emmmmm 搞了一天的移植和交叉编译,是真真的脑阔疼,本来想把这部分内容放在后面,但好不容易折腾出来,趁热写掉吧。不出意外的话,全网首发?突然感觉高大上了起来有木有!

继续阅读“llvm学习(四):移植到 Android,让 NDK 加载我们的 Pass”