问题标签 [elf]

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 投票
8 回答
148053 浏览

linux - 执行二进制文件时出现“没有这样的文件或目录”错误

我在 Ubuntu 9.10 x86_64 上安装了一个二进制 Linux 应用程序。该应用程序附带旧版本的 gzip (1.2.4),它是为更旧的内核编译的:

我无法执行这个程序。如果我尝试过,就会发生这种情况:

ldd 对这个二进制文件同样不满意:

我很好奇:这个问题最可能的根源是什么?损坏的文件?还是由于为更旧的 {kernel,libc,...} 构建而导致的二进制不兼容?

根据 nos 的建议,这是以下输出strace ./gzip

这是输出readelf -a ./gzip

0 投票
2 回答
385 浏览

linux - 为什么在 x86 Linux 中为 elf 可执行文件加载对齐地址的函数?

我一直在研究 x86 上的 Linux elf 可执行文件,主要使用 IDA,但也使用 gdb。我注意到的一件事是函数总是在字对齐的地址处加载?有谁知道其中的原因?我不知道 x86 指令从对齐地址开始的任何要求。并且不能由于页面对齐导致页面边界仍然可以在函数内的任何位置。

我将不胜感激。

谢谢。

0 投票
2 回答
3619 浏览

binary - 将文件打包到 ELF 可执行文件中

我目前正在寻找一种将数据添加到已编译的 ELF 可执行文件的方法,即将文件嵌入到可执行文件中而不重新编译它。

我可以通过使用轻松做到这一点cat myexe mydata > myexe_with_mydata,但我无法访问可执行文件中的数据,因为我不知道原始可执行文件的大小。

有谁知道我如何实现这一点?我想在可执行文件中添加一个部分或使用特殊标记(0xBADBEEFC0FFEE例如)来检测可执行文件中数据的开头,但我不知道是否有更漂亮的方法来做到这一点。

提前致谢。

0 投票
5 回答
5731 浏览

ruby - libxml-ruby 在 x86_64 加载失败

我们在服务器端遇到 libxml-ruby gem 问题可能是因为它使用 x86_64 架构:

$ uname -a Linux ip-10-228-171-64 2.6.21.7-2.fc8xen-ec2-v1.0 #1 SMP Tue Sep 1 10:25:30 EDT 2009 x86_64 GNU/Linux

宝石版本 1.1.4

重新安装 gem 没有帮助 有人可以建议做什么吗?

0 投票
1 回答
376 浏览

linux - 库初始化后从 RAM 中刷新 ELF 部分

我在 ELF 共享库中有很多代码,这些代码仅在库初始化期间使用(它从静态初始化程序中调用)。如果我把这段代码放在它自己的部分(或者它可以放在 .init 部分),我可以使用__attribute__((section(".mysection"))),有没有办法在库加载后强制这个部分被分页?

这个问题是相关的,但结论是内核会在内存不足时分页出未使用的页面,因此无需明确这样做。但是,我在嵌入式环境中工作,内存非常宝贵,从磁盘(慢速 USB 闪存驱动器)中分页代码的成本很高。因此,我宁愿明确地刷新这段代码,我知道它永远不会再次被使用,而不是让内核可能决定刷新一些最终可能需要重新分页的其他代码。

我确定我记得读过有关系统调用要求内核分页或分页某些内存区域的信息,尽管我在任何地方都找不到对此的任何引用,所以也许是我想象的。这样的事情存在吗?

0 投票
3 回答
5657 浏览

c - 访问 ELF 字符串表节标题

假设如下:

为什么以下内容不指向关联的字符串表部分标题?

strTabSectionHeader->type == SHT_STRTAB等于假

我应该如何指向关联的字符串表部分标题?

0 投票
0 回答
1698 浏览

eclipse - 在 Windows 中的 Eclipse 中构建 elf

我在 Windows 中的 Eclipse 中构建 Elf 文件时遇到问题。似乎每次我构建时,都会创建一个用于 Windows 的 PE / 可移植可执行文件。我已经进入 Binary Parser 部分并检查了 Elf Parser,同时确保其他所有内容都未选中。但是,我继续得到一个无法在 Linux 上运行的 PE。

为澄清起见,我在 Eclipse 中使用 Linux GCC 工具链。

我尝试重新安装 Cygwin - 仍然遇到同样的问题。

有任何想法吗?

谢谢

0 投票
1 回答
4809 浏览

linux - 为什么 Linux 二进制文件的虚拟内存地址从 0x8048000 开始?

在 Ubuntu x86 系统上反汇编 ELF 二进制文件我不禁注意到代码(.text)部分从虚拟地址 0x8048000 开始,并且所有较低的内存地址似乎都未使用。

这似乎相当浪费,所有谷歌出现的要么是涉及 STACK_TOP 的民间传说,要么是针对空指针取消引用的保护。后一种情况看起来可以通过使用单个页面而不是留下 128MB 的间隙来修复。

所以我的问题是——对于为什么布局被固定为这些值或者它只是一个任意的选择,有一个明确的答案吗?

0 投票
6 回答
13610 浏览

linux - 如何找到带有标题信息的 ELF 文件/图像的大小?

我需要找到一个精灵图像的大小来进行一些计算。我已经尝试使用 linux 上的 readelf 实用程序,它提供了有关标题和部分的信息。我需要有精灵的确切文件大小(整体上)。

如何从标头信息中找到 ELF 的大小,或者是否有其他方法可以在不读取完整图像的情况下找到 elf 的大小。

0 投票
1 回答
3342 浏览

c - 为什么 objdump 不显示 .symtab 部分而 readelf 显示?

我用 gcc 编译了一个简单的程序,如果我看到使用 objdump 的部分标题,它不会显示部分.symtab。对于同一个a.out文件,readelf 显示以下部分:

为什么?

在默认链接器脚本中,我没有找到.symtab节的定义。如果我像在链接器脚本中那样自己添加定义:

__start_sym和的地址的 b/w 差__end_sym为零,这意味着输出文件中没有添加这样的部分。

但是 readelf 能够读取该部分并转储该部分的内容..如何?为什么 ?