swift - 我可以通过 llvm opt 工具快速加载我的 llvm 通行证吗?
问题描述
我想快速加载我的通行证。我现在正在 Linux 上进行测试。首先我使用 swiftc 生成 llvm IR 代码
swiftc -emit-ir test.swift -o test.ll
llvm-as-10 test.ll
其次,我使用 opt 加载 mypass.so。
opt-10 -load /pass/to/libmypass.so -mypass test.bc -o test.bc
然后生成obj文件
llc-10 -filetype=obj test.bc
下一个链接 swift 的基本库
clang -m64 test.o -L ./lib/swift/linux -lswiftCore -lswiftSwiftOnoneSupport -o test
上次运行测试 LD_LIBRARY_PATH=/home/xxx/swift-5.4.1-RELEASE-ubuntu20.04/usr/lib/swift/linux/ ./test
但是我发现swift代码是否像print(“aa”)一样有标准输出,发生分段错误(核心转储),如果只有标准输入就像readLine()一样,发生总线错误(核心转储)。我试图通过这个过程没有加载mypass,还是错误的。如果代码中没有标准输出和标准输入,似乎没有问题。
解决方案
推荐阅读
- java - 找不到 com.google.firebase:firebase-database:16.0.0。在以下位置搜索 android app
- json - 将 Groovy Json 解析为键值
- python - 我如何通过原始张量操作构建的 PyTorch LSTM 反向传播(例如,不是`nn.LSTM`)
- racket - 在 Racket 中,是否有可能在 big-bang 中拥有多个事件处理程序?
- android - 是否可以在 Android Studio 预览窗口中禁用编辑布局?
- jquery - 为什么选项卡导航失败并在控制台中产生错误
- json - 正确地将 Blob 转换为 JSON
- java - java-提交事务后可以调用回滚函数吗?
- ios - 具有委托的多个容器视图
- ios - 阻止呼叫套件中的电话号码