问题标签 [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.
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
?我们如何解决它?
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 的建议清除缓存会导致:
cmake - 检测 Sun Studio 编译器并在 CMakeList.txt 中添加平台库?
Solaris 11.3 上的 Sun Studio 12.5。解决一个问题并转到下一个问题...使用 CMake 构建我们的项目会导致以下链接错误。
我相信检测 SunCC 并添加-lnsl -lsocket
到LDLIBS
. 但是,检测 SunCC 编译器的方法让我无法理解。我发现了一篇 2006 年的旧帖子(来自Error detection sun studio compiler under linux):
我正在尝试在 linux 下使用 sun studio 编译器,但我很难通过 cmake 编译器测试。
AFAIK 之前没有人尝试过使用此编译器进行 CMake ...... CMake 正在调用编译器,假设它接受其他 Linux 编译器(如 GNU 和 Intel)接受的标志......你必须设置一个平台文件来配置这个编译器。
我尝试使用SunPro
from CMake Compiler IDs,但它会导致如下所示的相同错误。
我的问题是,如何在 CMakeList.txt 中检测 Sun Studio 编译器?或者我如何检测 Solaris?
这是 CMakeList.tx 文件。它还没有被签入,所以我必须在这里转储它:
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 上接受它?
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)"。
如何解决不合时宜的警告?
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
,则会生成不同的错误:
结果:
c++ - gcc可以将未初始化的指针初始化为NULL吗?或者什么可以解释这种行为?
可以gcc
以某种方式初始化未初始化的指针NULL
吗?
在工作中,我们在gcc 4.1.2和Sun Studio 12上构建我们的软件。在 Red Hat Enterprise Linux 上运行的 gcc 版本已经运行了好几个月,每周运行 5 天。
不过,我们刚刚推出了我们的 Solaris 版本,它每天都会在启动时崩溃。
堆栈跟踪将我们带到这样的代码:
我们已经确定_timer
没有在任何地方初始化。所以我们认为_timer
必须设置为垃圾数据,与 比较失败NULL
,然后在StartTimer
没有构建计时器的情况下被 'ed。
这项工作实际上已分配给我的同事,他正在验证这一点。但与此同时,我很好奇:为什么我们的 Linux (gcc) 构建从来没有崩溃过?我可以向你保证这是相同的代码——我们使用 Perforce 和严格的标签。我读到编译器不会初始化未初始化的指针,所以我很困惑。
确认gcc 4.1.2
绝对不能自动初始化未初始化的指针,将回答这个问题。或者,它可能的方式。
c++ - 约束“+x”不允许操作数类型“__m128i_”
我正在使用 Sun Studio 12.2 在 Solaris 11.3 上进行测试。我无法让 SSE shuffle 编译:
接着:
pshufb
是一个 SSSE3 指令,但我无法确定 Sun Studio 12.2 是否支持它(搜索过程中有太多不相关的噪音)。我相信 Sun Studio 支持它。Sun Studio 12.3 及更高版本使用内联程序集。
为什么我会收到错误,我该如何解决?
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。它产生了同样的错误。
solaris - 是什么导致 bfd_asm.c 中的 SunCC 崩溃?
我正在尝试追查 SunCC 编译器崩溃的原因。它从早期的 SunCC 12.x 时代就已经存在,并且存在于最新的 SunCC 12.6 中。尝试在 x86 系统上乘以多项式时会发生崩溃。下面的代码是 GCM 算法的一部分:
和:
我无法找到有关由于bfd_asm.c:2602
. 我相信这与使用时导致 g3mangler.cc 中的 SunCC 崩溃的原因相同-std=XXX
?,但它只是移动了。
迄今为止,我们的策略是在等待修复时禁用代码路径。它看起来不会很快得到修复,因此我们希望找到一种解决方法并重新启用代码。
是什么导致了崩溃,我该如何解决?
我认为这是 MCVE,虽然它不是很有用: