gcc 如何处理.debug_info重新定位R_X86_64_32超出范围:4295935474不在[0,429496729]中

gc0ot86w  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(152)

我正在构建一个cpp项目,但是链接失败了,因为.debug_info段太大,超过了2^32-1。是否有工具可以定位代码的哪一部分有更大的.debug_info段,或者是否有方法可以消除这个限制?
编译器版本:

g++ (GCC) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.

错误:

ld.lld: error: thread.cc:(.debug_info+0x90A0): relocation R_X86_64_32 out of range: 4306390516 is not in [0, 4294967295]; consider recompiling with -fdebug-types-section to reduce size of debug sections
wgx48brx

wgx48brx1#

-mcmodel=medium添加到编译器标志中,这样就不会假设符号可以用32位偏移量寻址,它们可以使用整个64位地址空间。

相关问题