使用 Apple clang 重建 opt 修改后的位码文件
Rebuild opt modified bitcode files using Apple clang
我使用开源 LLVM 工具链的 opt 和 运行 我自己的 LLVM pass 修改了一个启用位码的 IPA。
修改后尝试使用Apple的LLVM toolchain's clang重建bitcode文件获取binary但是出现如下错误
ld: Invalid record (Producer: 'LLVM13.0.0' Reader: 'LLVM APPLE_1_1300.0.29.30_0') for architecture arm64
看来我不能混合搭配来自两个工具链的工具?我在网上读到可以直接将 clang 用于 运行 LLVM Pass(编译为 dylib),所以我尝试使用 Apple 的 clang 来做到这一点,但 LLVM Pass 似乎没有 运行 和输出来自 Apple 的 clang 没有提到 LLVM Pass 是否成功。
如果我想让 clang 运行 我的 LLVM Pass 进行优化,正确的命令行是什么?在为 LLVM Pass (dylib) 编写代码时,我正在使用新的 LLVM Pass Manager。
只要转换了 LLVM,您就可以混合搭配; bitcode format is kept compatible 很久了。
但是:首先,任何编译器都可能添加附加要求,例如“所有满足要求 x 的函数必须在点 z 调用运行时函数 y”。其次,您的通行证可能会创建无效的 LLVM 文件。我发现在更改代码时保持 DWARF 调试信息有效和连贯特别棘手尝试在每次通过后调用 verifyModule()。
我使用开源 LLVM 工具链的 opt 和 运行 我自己的 LLVM pass 修改了一个启用位码的 IPA。
修改后尝试使用Apple的LLVM toolchain's clang重建bitcode文件获取binary但是出现如下错误
ld: Invalid record (Producer: 'LLVM13.0.0' Reader: 'LLVM APPLE_1_1300.0.29.30_0') for architecture arm64
看来我不能混合搭配来自两个工具链的工具?我在网上读到可以直接将 clang 用于 运行 LLVM Pass(编译为 dylib),所以我尝试使用 Apple 的 clang 来做到这一点,但 LLVM Pass 似乎没有 运行 和输出来自 Apple 的 clang 没有提到 LLVM Pass 是否成功。
如果我想让 clang 运行 我的 LLVM Pass 进行优化,正确的命令行是什么?在为 LLVM Pass (dylib) 编写代码时,我正在使用新的 LLVM Pass Manager。
只要转换了 LLVM,您就可以混合搭配; bitcode format is kept compatible 很久了。
但是:首先,任何编译器都可能添加附加要求,例如“所有满足要求 x 的函数必须在点 z 调用运行时函数 y”。其次,您的通行证可能会创建无效的 LLVM 文件。我发现在更改代码时保持 DWARF 调试信息有效和连贯特别棘手尝试在每次通过后调用 verifyModule()。