问题标签 [sunstudio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
245 浏览

solaris - 使用 `-std=XXX` 时导致 SunCC 在 g3mangler.cc 中崩溃的原因是什么?

我正在尝试确定导致 SunCC 5.11 - 5.13 死机的../lnk/g3mangler.cc, line 825原因(来自 SunCC 5.13 的消息)。这是编译期间的样子。该机器是第 4 代 Core i5,因此它具有与宏相对应的功能。

我知道-std=c++03所有编译器和-std=c++11较新的编译器都会出现问题。如果我省略-std=XXX,那么问题就消失了。告诉用户他们不能使用 C++03 或 C++11 是不可行的。

这里是gcm.cpp:408。由于努力隔离,它现在基本上被注释掉了。事实上,删除所有代码并留下一个空函数也证明了这一点:

MAYBE_INLINE是我用来inline打开和关闭编译器的宏。

我能在网上找到的唯一报告来自我们的错误跟踪器。我已经没有想法了,因为我已经用尽了函数中的所有代码。

是什么原因导致 SunCC 编译器在g3mangler.cc使用时崩溃-std=XXX?我们如何解决它?

0 投票
1 回答
376 浏览

command-line - CMake 无法使用 Sun Studio 12.5 生成 Makefile

我正在使用 Sun Studio 12.5 开发 Solaris 11.3。当我尝试使用 Cmake out-of-tree 进行配置时,Cmake 会出现配置错误并且不会生成 makefile。In-tree 也可能被破坏。但是我们的程序说要在树外构建,所以;' 我所做的。

我几乎没有 Cmake 经验。其他人贡献了 CMake 文件,而我则为与它们相关的任务而苦苦挣扎。我不确定我是否做错了什么,我们的 Cmake 文件是否损坏,或者 Cmake 在 Solaris 下是否经过良好测试。

CMake 发生了什么,我该如何解决?


以下是 Cmake 文件的链接。我可以复制/粘贴它们,但它只占用大量空间。这些文件托管在 GitHub 上,因此它们应该始终可用。

这是 Solaris 的 Cmake 版本,在我安装 3.6.2 之前:


以下来自 Solaris Cmake 版本 2.8.6。

和:


我从源代码构建了 Cmake 3.6.2 并安装了/usr/local以解决该CXX compiler identification is unknown问题,但它似乎遇到了一些麻烦。正如我之前所说,我不是 Cmake 专家(而且我不确定如何搞砸 a make && sudo make install)。


按照@AndrewHenle 的建议清除缓存会导致:

0 投票
0 回答
360 浏览

cmake - 检测 Sun Studio 编译器并在 CMakeList.txt 中添加平台库?

Solaris 11.3 上的 Sun Studio 12.5。解决一个问题并转到下一个问题...使用 CMake 构建我们的项目会导致以下链接错误。

我相信检测 SunCC 并添加-lnsl -lsocketLDLIBS. 但是,检测 SunCC 编译器的方法让我无法理解。我发现了一篇 2006 年的旧帖子(来自Error detection sun studio compiler under linux):

我正在尝试在 linux 下使用 sun studio 编译器,但我很难通过 cmake 编译器测试。

AFAIK 之前没有人尝试过使用此编译器进行 CMake ...... CMake 正在调用编译器,假设它接受其他 Linux 编译器(如 GNU 和 Intel)接受的标志......你必须设置一个平台文件来配置这个编译器。

我尝试使用SunProfrom CMake Compiler IDs,但它会导致如下所示的相同错误。

我的问题是,如何在 CMakeList.txt 中检测 Sun Studio 编译器?或者我如何检测 Solaris?



这是 CMakeList.tx 文件。它还没有被签入,所以我必须在这里转储它:

0 投票
1 回答
748 浏览

c++ - SunCC 5.12 到 5.14 和“不能在匿名联合中声明类型”

我们在 SunCC 5.12 到 5.14 下发现了一个编译警告。其他编译器,如 Clang、GCC、ICC 和 MSVC 不会抱怨。我不确定诊断,因为我以前没有遇到过。

有问题的代码是针对一个BigInteger的,然后是有问题的联合。该类试图找到最大的机器字,它可以容纳可以使用硬件(如umulx.

这是警告:

根据匿名工会的微软:

简单地省略语法的类名部分不会使联合成为匿名联合。对于有资格作为匿名联合的联合,声明不能声明对象。

如果我理解正确,我们确实有一个匿名结构,因为没有人可以struct {...} m_halfs从第 325 行开始实例化私有成员。然后,SunCC 抱怨匿名联合拥有该成员struct {...} m_halfs。那是对的吗?

如果struct {...} m_halfs是问题所在,那么我们如何以便携式方式清除它?

如果不是问题,那么 SunCC 在抱怨什么?


我必须小心这个问题是如何解决的。性能是重中之重,代码在关键路径上。此外,我们支持现代编译器的 GCC 3 和 VC++ 6.0;和 C++03、C++11、C++14 和 C++17。

最后一个问题是,我们是否应该“什么都不做”并在 Solaris 上接受它?

0 投票
2 回答
607 浏览

c++ - 警告(不合时宜):将 void(*)(int) 分配给 extern "C" void(*)(int)

我在使用 Sun 的 C++ 编译器时遇到问题。我读过 Oracle 的Working with Pointers to Functions [from C++]。这是一本很好的读物,我觉得 SunCC 在该领域的所有编译器中是最兼容的(尽管它给我带来了麻烦)。

测试代码如下,第 24 行是new_handler.sa_handler = (pfn ? pfn : &SignalHandler::NullHandler);. 展开三元运算符表明这是问题所在:new_handler.sa_handler = pfn;.

SunCC 5.11

SunCC 5.12

SunCC 5.13

SunCC 5.14

我并不完全清楚问题是什么。这是 Oracle 板上的类似问题,但 OP 基本上被告知 RTFM:Sun Studio 11 "Warning (Anachronism)"

如何解决不合时宜的警告?


0 投票
1 回答
65 浏览

c++ - 在 GASM 内联中对参数“N”的无效引用

我正在使用 Developer Studio 12.5 附带的 SunCC 编译器在 Solaris 11.3 上构建Botan 。我对库或 Solaris 不太熟悉,我需要一些努力才能找到问题。

编译在一个名为divide.cpp. 我已将其简化为以下测试用例。根据Sun Studio 12 编译器中 Oracle 的 GCC 风格的 asm 内联支持,ASM 格式良​​好。Clang、GCC 和 ICC 愉快地使用代码。

我找不到有关错误字符串的有用信息Invalid reference to argument 'N' in GASM Inlining。我在 Oracle 板上的内联汇编器上发现了 sunCC 扼流圈。但答案是 UBE 有问题并购买支持合同以了解更多信息。

我有三个问题:

  • 错误信息表示什么?

  • 如何让 SunCC 提供源文件和行号?

  • 我该如何解决这个问题?


如果我将b参数更改为 just =m,则会产生相同的错误。如果我将b参数更改为 just =r,则会生成不同的错误:

结果:

0 投票
0 回答
484 浏览

c++ - gcc可以将未初始化的指针初始化为NULL吗?或者什么可以解释这种行为?

可以gcc以某种方式初始化未初始化的指针NULL吗?

在工作中,我们在gcc 4.1.2Sun Studio 12上构建我们的软件。在 Red Hat Enterprise Linux 上运行的 gcc 版本已经运行了好几个月,每周运行 5 天。

不过,我们刚刚推出了我们的 Solaris 版本,它每天都会在启动时崩溃。

堆栈跟踪将我们带到这样的代码:

我们已经确定_timer没有在任何地方初始化。所以我们认为_timer必须设置为垃圾数据,与 比较失败NULL,然后在StartTimer没有构建计时器的情况下被 'ed。

这项工作实际上已分配给我的同事,他正在验证这一点。但与此同时,我很好奇:为什么我们的 Linux (gcc) 构建从来没有崩溃过?我可以向你保证这是相同的代码——我们使用 Perforce 和严格的标签。我读到编译器不会初始化未初始化的指针,所以我很困惑。

确认gcc 4.1.2绝对不能自动初始化未初始化的指针,将回答这个问题。或者,它可能的方式。

0 投票
0 回答
60 浏览

c++ - 约束“+x”不允许操作数类型“__m128i_”

我正在使用 Sun Studio 12.2 在 Solaris 11.3 上进行测试。我无法让 SSE shuffle 编译:

接着:

pshufb是一个 SSSE3 指令,但我无法确定 Sun Studio 12.2 是否支持它(搜索过程中有太多不相关的噪音)。我相信 Sun Studio 支持它。Sun Studio 12.3 及更高版本使用内联程序集。

为什么我会收到错误,我该如何解决?

0 投票
2 回答
1174 浏览

shell - 使用 shell 函数时缺少分隔符?

我正在开发完全修补的 Solaris 11。我试图通过在 ISA 下转储预处理器宏来确定编译器是否支持 ISA。

由于Missing Separator. Missing Separator与 GNU make 的shell function一起使用时,我无法找到有关错误的信息。

这是简化的情况。没有空格,所以它不是像Make error: missing separator and friends 中那样的空格/制表符问题。

上面的想法是,SunCC 不为 ISA 提供宏,例如__AES____SHA__. 但是,如果不支持 ISA,SunCC 将出错,例如-xarch=sha在 SunCC 12.4 上。如果我没有收到错误,那么我知道编译器支持 ISA,就像-xarch=aes在 SunCC 12.4 上一样。如果有错误,我可以从.SHELLSTATUS. (SunCC 在这方面不像 Clang、GCC、Intel ICC 或 MSVC)。

结果如下:

缺少的分隔符在哪里?或者, make没有报告的真正错误是什么?也许还有别的?


鉴于之前被问过多少次,我很抱歉问这个问题。

我添加了标签以试图安抚make。它产生了同样的错误。

0 投票
1 回答
69 浏览

solaris - 是什么导致 bfd_asm.c 中的 SunCC 崩溃?

我正在尝试追查 SunCC 编译器崩溃的原因。它从早期的 SunCC 12.x 时代就已经存在,并且存在于最新的 SunCC 12.6 中。尝试在 x86 系统上乘以多项式时会发生崩溃。下面的代码是 GCM 算法的一部分:

和:

我无法找到有关由于bfd_asm.c:2602. 我相信这与使用时导致 g3mangler.cc 中的 SunCC 崩溃的原因相同-std=XXX,但它只是移动了。

迄今为止,我们的策略是在等待修复时禁用代码路径。它看起来不会很快得到修复,因此我们希望找到一种解决方法并重新启用代码。

是什么导致了崩溃,我该如何解决?


我认为这是 MCVE,虽然它不是很有用: