链接器如何在没有 SONAME 的情况下找到共享库
如果我创建一个没有像这样的 SONAME 的共享库 gcc -shared libfoo.o -o libfoo.so 并链接到它, 链接器如何找到我的共享库? 文件名 libfoo.so 是否被…
64 位平台上的 ELF 目标文件大小限制是多少?
假设x86 64和linux平台。 如果你查看 ELF 头,偏移量都是 64 位。 因此,通过重定位 R_X86_64_64 可以轻松创建大于 4G 的目标文件。这意味着静态 .o …
声明为“const”的全局初始化变量转到文本段,而那些声明为“静态”的则转到文本段。转到数据段。为什么?
#include <stdio.h> const int str[1000] = {0} int main(void) { printf("arr is %d\n", str[0]) return 0 } 具有以下输出: [-exercises/adam/s…
在哪里可以找到有关 ELF 文件格式的良好参考?
我正在编写一个编译器,它将为 i386 平台生成 ELF 可执行文件。 但是,我需要文件格式的良好参考(有关标头、重定位等的信息)。 有这样的参考吗?…
如何将 libc6 中的函数导入 ELF 可执行文件?
我正在创建一个 i386 ELF 可执行文件,需要从 libc6 导入函数。 (顺便说一句,它是 printf。) 我创建了一个非常小的 ELF 可执行文件,可以打印“Hel…
如何重新映射符号以调用不同的函数
我有一个 ELF 共享对象,我想修改它,以便对系统函数 memcpy 的调用实际上路由到 memcpy 的自定义版本代码>. 我一直在研究并阅读了有关 PLT 重定向…
如何获取C函数指针的函数名
我遇到以下问题:当我使用 backtrace(3) 函数在 C 中获得回溯时,返回的符号可以使用 dwarf 库和 dladdr(3) 轻松确定函数名称。 问题是,如果我有一个…
objdump ELF 和 Windows
我对这个主题相当陌生,即 ELF 和任何与 Linux 相关的东西。我正在尝试编写 ELF 文件,并且更喜欢在 WinXP 上执行此操作。 我的问题是,这可以用 MS V…
如何取消删除目标文件?
如何取消剥离已剥离的目标文件? eu-unstrip from elfutils 可以为我做这个吗? 我需要它来将 zImage 内核转换为 vmlinux,而无需重新编译。 这是我的…
我的交叉编译器总是编译同一个文件
我正在测试以确保我的交叉编译器正常工作。当我编译 hello world 时,它似乎编译得很好,但是当我将 hello.cpp 更改为循环 1000 次的同一程序时,生成…
BDM elf 文件与普通 elf 文件
就内存使用而言,BDM ELF 文件比普通 ELF 文件有什么优势? 我对两者都了解以下几点: BDM ELF 文件可用于通过任何调试器工具进行调试 类似于 Trace32…