问题标签 [gold-linker]
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.
c++ - gcc 9.2:虚假-Wuninitialized
我正在尝试使用 gcc 9.2.0 构建我们的代码库,但是在使用 -flto 时,我收到了十几个缺少信息的警告。gcc6.3 没有出现这些问题。
不幸的是,提到的行实际上是空的,并且警告消息缺少未初始化的标识符。
我很想用一个较小的测试用例来重现,但我不知道它涉及哪个变量。提到的两个文件没有提及任何具体内容。它实际上抱怨编译器生成的函数(__ct_base)。
有什么方法可以从 gcc 获取有关警告的更多信息?
ubuntu - 在安装 LLVM 和 gold-plugin 期间遇到致命错误:无法分配内存
做我展示clang-cfi机制的项目。因此,需要 LLVM 黄金插件。根据帖子的描述,当我在执行第 6 步时,在输入 make -j8 后(这里我也尝试使用 make -j1、-j2、-j4),它总是告诉我以下错误:无法分配记忆。我已经将 ubuntu 的基本内存设置为最大值,不能再增加了。 错误信息
https://github.com/SVF-tools/SVF/wiki/Install-LLVM-Gold-Plugin-on-Ubuntu
谁能告诉我如何解决这个问题?非常感谢你。
linux - ld 解释由黄金链接的可执行文件是否安全?
取一个简单的hello world程序,编译如下:
检查生成的二进制文件:
请注意,使用的解释器是ld
. 虽然该程序恰好可以工作,但我无法找到任何有关这是否安全的信息。据我所知,gold
以一种微妙不同且不兼容的方式解释 ELF 规范,需要不同的解释器。
我已尽我所能对此进行研究,但找不到任何可以回答我问题的东西。我发现最接近的是gold
链接 Linux 内核(或者很困难,因为时间已经过去并且它可能已经修复)。
c++ - 链接错误:在废弃部分中定义的构造 vtable
最初的问题分布在来自不同项目的数十万个 LoC 中。它包含很多成分:内联汇编、虚拟继承、间接级别、不同的编译器和编译器选项。(这就像一部惊悚片。)我很难简化为这个 SSCCE:
使用这些命令行构建:
链接器输出是:
我相信 gcc、clang 或 gold 都存在错误。我的问题是它在哪里?(我想这是黄金,但我想在报告错误之前确定。)
FWIW:正如我所说,所有的成分都很重要,例如,如果asm
删除了,问题就会消失。使问题消失的更显着的变化是:
- 对所有 TU 使用相同的编译器,(无论是 g++ 还是 clang++。)
- 与 ld 链接(即删除
-fuse-ld=gold
) - 编译
main.cpp
不带-O3
. - 编译
main.cpp
不带-fPIC
. - 在链接器命令行中交换
a.o
和。main.o
cmake - 如何在 CMakeLists.txt 中将链接器设置为“gold”
运行 cmake 时,您可以通过-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=gold
选择黄金链接器而不是 ld。
我想CMakeLists.txt
默认在文件中启用它。但我无法找到如何!?
将此添加到 CMakeLists.txt 没有帮助:
bazel-rules - Bazel/sandboxfs/ld.gold:中断链接步骤时损坏的二进制文件
我正在将一个巨大的 C++ 代码库迁移到 Bazel。
由于我们无法一次完成所有操作,因此每次编译都依赖于 30k 多个头文件。因此,无论我们使用 processwrapper 还是 linux-sandbox,创建沙箱都需要很长时间。(也许这与我们必须使用的旧 Linux 3.10 内核有关?)Sandboxfs 已被证明是一个好处。使用它可以减少大约 30% 的构建时间。这就是为什么我们要继续使用它。
但是,有时我使用 Ctrl-C 中止构建,有时 Bazel 在遇到错误时中止构建。似乎无论何时cc_binary
中止构建步骤,我都会得到一个大小合适的二进制文件(就像我没有中止构建一样)但只包含 nul 字节。
仅当我使用 ld.gold (默认值)时才会发生这种情况。测试版本 2.35 和HEAD
.
回顾一下:
- 仅在使用 sandboxfs 时才会发生。
- 仅在使用(和打断)金币时才会发生。
你对如何研究这个问题有任何想法吗?甚至:如何解决?
更新
gold打开输出文件,然后它是输出文件fallocate
的最终大小(不使用临时文件)。然后它写入数据。
如果打开文件后出现错误,gold不会删除无效的输出文件。对于构建工具来说有点不常见,不是吗?
cmake - 在 CMake 中使用非默认链接器(lld、mold、gold)
我必须向我的 CMake 命令添加哪些标志,才能使用非默认链接器可执行文件,如 lld、mold 或 gold?它应该独立于实际程序,纯 CMake。