问题标签 [lld]

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 投票
2 回答
5073 浏览

llvm-clang - lld 未定义符号:mainCRTStartup

我的cpp代码:

我使用以下命令来编译和链接它:

我错过了什么?

0 投票
2 回答
121 浏览

c++ - 使用 lldb 进行调试时,较高的行号未解析为断点

我正在尝试在计算 Brainfsck 中的 Mandelbrot 集的 MIPS32r6 程序中设置断点。程序本身是用 C++ 编写的,用 Clang 编译,我正在用 LLDB 进行调试。

我遇到的问题是,在 LLDB 中,我可以设置某些断点,主要是在较低的行号上,没有问题。但是,在 Main.cpp 中的第 70 行之后,断点出现为“未解决”(即使执行断点列表显示它们具有完全合理的地址)。也就是说,我尝试在第 70 行之后设置的所有断点都将出现为未解决,并且在第 70 行之前所有合理的断点都可以毫无问题地解决。

我已经放置了我在这里链接的二进制文件的副本:http: //filebin.ca/2tJzo2LLBJWO/MipsTest.bin

以及此处的 Main.cpp 副本:https ://paste.ee/p/WYs8Y

我正在使用以下选项进行构建:

在这一点上,我不确定是什么导致了这个问题。

0 投票
2 回答
4114 浏览

clang - 完整且独立的 LLVM/musl 工具链

我想要实现的是使用musl as编译一个独立于 GNU 且隔离的LLVM 工具链。clib

最近LLVM 4.0发布了许多新的酷特性,包括生产就绪LLD,因此链接步骤也可以由 LLVM 处理。

堆栈或多或少是:

  • llvm
  • lld
  • 编译器-rt
  • libcxx
  • libcxxabi
  • 肌肉

之后,实际上可以在没有太多补丁或类似的情况下这样做(除了编译musl),但遗憾的是,没有关于此的好的文档。

有什么建议么?

0 投票
2 回答
2028 浏览

c++ - LLD - 未知参数:-arch

尝试在 Mac OS Sierra 上使用 LLVM 4.0.0 版本(Clang,LLD)链接一个简单的程序。请注意,这在 Linux 中完全可以实现。

我当前的路径以 LLVM 的bin目录为前缀(即/opt/LLVM/4.0.0/bin:$PATH.

程序 ( main.cpp) 是最简单的 C++ 应用程序:

发出的 shell 命令是:clang -fuse-ld=lld.
这失败并出现以下错误:

使用-v开关,我看到了这个链接器命令(格式化):

有谁知道这个平台的正确开关?

0 投票
2 回答
2175 浏览

c++ - 如何使用 llvm lld 链接 libstdc++

我想链接test.lllibstdc++.a在窗口操作系统中。

我有这样的简单测试 IR 代码。

我成功编译test.lltest.objllc

现在我想test.exelld用不是 gcc, cl

我已经尝试过这个命令,但不工作......

lld -flavor link /entry:main /implib:libstdc++.a test.obj

它返回这个。

我的 LLVM 版本是 4.0.0,lld 版本是 4.0.0

我应该使用 GCC 吗?请帮帮我。谢谢你。

0 投票
0 回答
857 浏览

c - 原始二进制入口点

我在为我的爱好操作系统内核指定入口点时遇到问题。

有一个简单的引导加载程序可以加载内核代码以0x6400000寻址并跳转到那里。

然后我有这个链接器命令,它输出带有起始地址的内核:

main.cc入口点功能:

只要kmain()是第一个定义的函数,一切都可以正常工作。如果不是:

然后ld(and lld) 忽略-e kmain参数,并创建do_smth()一个入口点。

我怎么能强制ld创建kmain()一个地址为的入口点0x6400000

0 投票
1 回答
1231 浏览

cmake - Emitting a single IR bitcode File with LLVM LLD using CMake

I'm using Ubuntu 16.04 x86_64 and LLVM 5.0 and would like to compile a project to a single LLVM IR bitcode file using CMake. I know there is a way to do this using the GOLD Linker with the LLVM Plugin and add the CMake linker flags "-fuse-ld=gold -Wl,-plugin-opt=emit-llvm" and the CXX flag "-flto".

But when I try to compile the project with the LLVM LLD linker and the "-fuse-ld=lld -Wl,-plugin-opt=emit-llvm" respectively "-flto" Flag, the linker is generating a native executable and no LLVM IR file. I was searching for other LLD options to emit a LLVM IR file but found nothing.

Is there a way (or option) to generate a single LLVM IR file using LLD?

0 投票
1 回答
479 浏览

elf - objdump 显示错误的函数开始和结束地址

出于测试目的,我修改了由 llvm 链接器lld生成的 PLT 存根。

之前的存根是:

将程序与此(原始)存根链接并检查它会objdump产生如下内容:

我通过在末尾添加一个 NOP 来修改 PLT 存根:

我确保修改PltEntrySize变量以使其反映大小的变化。使用此修改链接和运行程序似乎工作得很好。

但是,当我尝试使用 来检查链接程序的反汇编时objdump,我看到了一些奇怪的东西:

PLT 存根的地址被解释objdump为 at 0x2012d0,但真正的printf@plt地址是 at 0x2012d8!这得到了证实readelf -s

从哪里objdump得到它的信息?很可能是我忘记修改链接器中的某些内容。

0 投票
0 回答
588 浏览

c - LLVM LD 选项“-rpath-link”

当使用 GNU LD for Linux 使用“-rpath-link”选项链接一些 C 代码时,它运行良好且符合预期。

但是,当使用 Mac OS X 的 LLVM LD 版本 3.7.1 使用“-rpath-link”选项链接相同的 C 代码时,LD 会给出错误(“未知选项”)。

我的问题是:LLVM LD 中“-rpath-link”选项的等价物是什么?

0 投票
1 回答
1146 浏览

c++ - 与 LLVM LLD 链接不起作用 [macos]

以下用 clang6.0 编译命令:

给出:

我不明白为什么它不能加载/usr/local/opt/myllvm6.0rc1/lib/libLTO.dylib(它存在于这个位置!)任何想法?