linux - 我可以在汇编源代码和 ld 脚本中声明自己的部分吗?

标签 linux assembly linker elf

我知道

  • 在汇编语言源代码中,我可以使用指令 .text.data.rodata 来声明节。
  • 在链接器脚本中,我可以使用以下命令将部分生成到 ELF 文件中
.text : { *(.text) }
.data : { *(.data) }
  • 如果使用 readelf,我可以看到 .text.data 等部分。

我的问题是:

  • 我可以通过 asm 代码和 ld 脚本向 ELF 添加自定义节 .mysection 吗?
  • 如果我添加自定义部分并将项目构建为共享库,Linux 动态链接器/加载器可以正确处理我的共享库吗?或者我必须修改 dyn-linker/loader?

感谢任何建议。

最佳答案

我总结了@Jester @Ross Ridge 对问题的评论供引用

是的,您可以添加自定义部分(无需更改内核动态加载程序,因为它将确定 ELF header 中的部分) 您应该使用 .section 指令来避免错误“reset.S:汇编器消息:reset.S:8:错误:未知伪操作:`.mysection”。

关于linux - 我可以在汇编源代码和 ld 脚本中声明自己的部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31690709/

相关文章:

linux - 使用 im2dcm 进行 Bash 脚本图像处理

c - 尝试与线程之间的套接字建立内部连接并连接失败

linux - 为什么 grep 找不到整数 * 2?

c++ - 运行时检查失败 #0。不知道如何使用 CDECL

android - Android 上的链接错误

linux - 加载的 ELF 段的重叠映射

c - X86 汇编 - 处理 IDIV 指令

algorithm - 目的是通过内存操作将 MMIX 汇编中的最低有效位设置为 0?

我可以让 gcc 在链接共享库时忽略静态库吗?

c++ - C++ 和 C 使用同一种链接器吗?