非x86体系结构上的Z3
我正在使用Z3(2012-12-21 git版本,最新的“主”版本)检查工具的可移植性,因此尝试在Sparc64上编译Z3。我不得不摆弄非x86体系结构上的Z3,z3,bus-error,Z3,Bus Error,我正在使用Z3(2012-12-21 git版本,最新的“主”版本)检查工具的可移植性,因此尝试在Sparc64上编译Z3。我不得不摆弄src/util/hwf.cpp,这样它就可以将Sparc64而不仅仅是IA64视为缺少SIMD内部函数和emmintrin.h。汇编成功了 不幸的是,由于prime\u generator::prime\u generator()。我不知道为什么 Program received signal SIGBUS, Bus error. 0x009b1dac in
src/util/hwf.cpp
,这样它就可以将Sparc64而不仅仅是IA64视为缺少SIMD内部函数和emmintrin.h
。汇编成功了
不幸的是,由于prime\u generator::prime\u generator()。我不知道为什么
Program received signal SIGBUS, Bus error.
0x009b1dac in global constructors keyed to _ZN15prime_generatorC2Ev ()
(gdb) bt
#0 0x009b1dac in global constructors keyed to _ZN15prime_generatorC2Ev ()
这对我来说不是很重要(我们的机器是x86或x86-64),但可能与某些嵌入式应用程序相关。我认为在非x86机器上运行Z3没有任何兴趣,因此您很可能会发现一些问题
特别是SPARC,不允许像x86那样进行未点亮的内存访问。
通过快速查看,我可以看到未对齐的部分可能来自几个方面。
例如,memory::allocate()将malloc返回的指针按sizeof(size\u t)释放。如果不是64位,那么它将崩溃(因为svector数据)。
然后,svector分配也会在数据之前保留2*sizeof(未签名)。如果2*sizeof(unsigned)不是sizeof(uint64)的倍数,则会发生崩溃
等等。关键是,没有更多的信息,就不可能帮助你。您需要使用-g进行编译,如果需要,可以在程序崩溃的地方打印程序集代码,以帮助确定确切的位置
另外,请不要使用主分支。那很老了。请考虑使用不稳定的分支(它并不像名字听起来那么糟糕)这对于堆栈溢出似乎不是一个问题。你是不是想把这个贴在那个项目的问题页面上?这个问题似乎离题了,因为它不是一个问题,而是一个bug报告。