在Solaris上生成z3的代码更改

在Solaris上生成z3的代码更改,z3,Z3,我需要在Solaris 8上建立z3。我看了一下文件scoped_timer.cpp,它是唯一使用-D_LINUX_的地方,我想我可以在那里获得适用于Solaris的正确代码,并用-D_Solaris_保护它。此外,还需要修改src/util/hwf.cpp,以提供在Solaris 8上未定义的fma()和nearbyint()的定义。这也可以通过将fma(x,y,z)定义为x*y+z来实现,但这样就有两个舍入,而不是IEEE 754所要求的一个舍入。就z3而言,这会造成问题吗?我还需要更改mk

我需要在Solaris 8上建立z3。我看了一下文件scoped_timer.cpp,它是唯一使用-D_LINUX_的地方,我想我可以在那里获得适用于Solaris的正确代码,并用-D_Solaris_保护它。此外,还需要修改src/util/hwf.cpp,以提供在Solaris 8上未定义的fma()和nearbyint()的定义。这也可以通过将fma(x,y,z)定义为x*y+z来实现,但这样就有两个舍入,而不是IEEE 754所要求的一个舍入。就z3而言,这会造成问题吗?我还需要更改mk_util.py以设置Solaris的编译和链接选项。在Solaris上使用g++时,这似乎也是相当可行的,因此编译选项将是类似的。链接选项可能需要额外的库。我愿意做一些腿部工作,但我可能需要帮助。有人愿意和我一起工作吗?这是一个受欢迎的补充吗

这是一个受欢迎的补充吗

我想我们可以在拉取请求准备就绪(并且不影响其他设置)并且至少有两个用户的情况下接受拉取请求。 通常的条件适用于获取拉取请求。 当然,您可以拥有自己的fork,而无需重新合并更改

另一个问题可能是您的机器和 内存对齐的限制可能会暴露出更多的可移植性问题。
您应该能够通过在z3test存储库下运行回归测试(以及单元测试)来发现问题。我们最近修复了一些与ARM/PowerPC终端相关的问题

你的硬件是什么?x86还是SPARC?较旧的硬件往往没有真正的FMA指令——SPARC在2007年得到了它,2011年AMD才得到x86,2013年英特尔才得到。另外,如果您可以为您的硬件获得Solaris Studio的副本。在安装目录的…/prod/lib目录下查找所有
math.il
文件。这些文件是内联数学例程的汇编指令。在我安装的Solaris Studio 12.3的x86中有一个
nearbyint()
实现。当我尝试在OpenBSD/SPARC上编译Z3时,遇到了以下问题:对于一些较旧的版本,内存管理器可能会错误地认为,由于您没有使用AMD64,您的处理器是32位的,因此内存分配器可以4字节对齐所有内容。在SPARC64上,情况并非如此,需要8字节对齐;小心。我们正在使用SPARC Solaris 8构建32位应用程序。我厌倦了使用Sun Studio 11进行构建,因为Solaris不支持版本12,但有很多编译器错误。我确实可以访问Solaris 10 box和Sun Studio 12,因此我可以尝试使用它,但我不愿意这样做,因为我们的一些用户仍然使用Solaris 8。好的,请记住这一点。现在我刚刚升级了FreeBSD配置,但我会清理一下,以便对Solaris进行特定的配置/代码更改。我有一个关于endianess对齐问题的堆栈跟踪,但我想我将不得不发表一篇新文章,因为堆栈跟踪需要很长时间才能获得评论。