【问题标题】:What does "readelf error: LEB value too large" mean?“readelf 错误:LEB 值太大”是什么意思?
【发布时间】:2020-07-02 23:50:37
【问题描述】:

这个错误到底是什么意思?是什么原因导致的?

readelf: Error: LEB value too large

LEB 代表什么?下(st)估计边界(ary)?

我见过很多次,尤其是在构建 Archlinux 包时。

【问题讨论】:

  • 你在什么文件上运行readelf?它来自 Arch Linux 软件包吗?还是带有一些选项的编译器输出?我不知道那个错误是什么意思,但是有了更多信息,我可能会找到更多。 Google 发现 github.com/golang/go/issues/39048 与 binutils 解析 go 工具链的输出时有相同的错误消息。
  • 在您链接的问题中,这些消息似乎来自 GNU binutils'objdump 的输出,其中readelf 似乎是其中的一部分。我已经多次看到这个错误,这个特定的建筑物 tdlib 来自 AUR。
  • 是的,这是一个 binutils 错误消息,但我的问题是它到底是什么类型的文件,包括它是如何构建的。和/或可能包括readelf 所说的其余内容。 (这意味着深入研究在幕后运行 readelf 的构建脚本,找出它们在运行它的内容并保存完整的输出。)
  • 这发生在 makepkg 的tidying install 阶段的stripping unneeded symbols from binaries and libraries 任务中。这是full log

标签: g++ objdump binutils readelf pacman-package-manager


【解决方案1】:

在 DWARF 格式上下文中,LEB128 代表“Little Endian Base 128”。 如果数字很小,LEB128 是一种节省空间的整数编码(参见 DWARF 规范:http://dwarfstd.org/doc/DWARF4.pdf,附录 4)

您遇到的错误似乎是由 binutils 的错误引起的 “尝试读取时来自 DWARF LEB128 解码器的虚假错误消息 一个有符号的 LEB128 值,包含最大可能的有符号负整数 价值。”

https://www.mail-archive.com/bug-binutils@gnu.org/msg35315.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2012-11-26
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多