首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >objcopy:未能复制特定部分(`.rodata‘必需但不存在[.])

objcopy:未能复制特定部分(`.rodata‘必需但不存在[.])
EN

Stack Overflow用户
提问于 2014-06-15 20:50:48
回答 1查看 1.8K关注 0票数 1

我编译了一个Hello文件,只需要其中的一个部分(只有hello函数)。

编译后的文件格式为elf32-i 386,包含4个部分:.rodata.text.hello.comment.eh_frame

我尝试使用objcopy只提取.text.hello部分:http://www.thegeekstuff.com/2013/01/objcopy-examples/示例3。

它失败了,报告:

代码语言:javascript
复制
BFD: hello_new: symbol `.rodata' required but not present
objcopy:hello_new: No symbols

如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-09 07:57:07

首先,您提到您只需要.text部分-用于运行时执行?这是不对的:如果hello函数中包含硬编码的字符串,那么所有这些字符串都将位于.rodata部分中,那么您将忽略这个部分吗?

.eh_frame用于调试器,我认为不需要.comment,但也需要.data

另一件事是重定位表-如果要动态地将函数加载到任意内存区域,那么函数中的许多区域可能需要是ELF的patched.....check objdump -r,以确定是否存在任何重定位条目。如果没有,你就安全了。

此外,函数中声明为"const“的任何内容也将进入.rodata部分--当然是全局数据。函数的局部变量或常量在堆栈上。并且所有的全局数据都位于.data部分。

但是回到原来的错误,原因是原始URL中的示例3没有交叉引用( .interp部分),因此objdump -s不会有错误。在您的情况下,.text确实具有与.rodata节的交叉引用,但是在您只提取出.text部分之后就不可用了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24234001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档