我将两个模块链接在一起(在 KLEE 中,但我认为这并不重要)并且 llvm 抱怨,因为它们似乎具有不同的数据布局:
警告:链接不同数据布局的两个模块!
我看了一下,结果发现第一个libkleeRuntimeIntrinsic.bca
布局如下
e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64
而我自己client.bc
的
e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-f128:128:128-n8:16:32:64
我比较了这些和后者有f128:128:128
太多,根据文档表明支持 128 位浮点数。
这些构建在具有相同版本并使用/llvm-gcc
链接/归档的相同系统上。所有 llvm 版本 2.9(我的 llvm 配置为模式)。llvm-ld
llvm-ar
Debug+Asserts
这是什么原因,我怎样才能让第二个 ( client.bc
) 具有相同的 daya 布局(即没有f128:128:128
)?