永发信息网

GNU 汇编链接中的非标准段是什么东西?比如UBOOT中就有。got的非标准段

答案:1  悬赏:80  手机版
解决时间 2021-04-26 21:40
  • 提问者网友:咪咪
  • 2021-04-25 22:20
GNU 汇编链接中的非标准段是什么东西?比如UBOOT中就有。got的非标准段
最佳答案
  • 五星知识达人网友:玩家
  • 2021-04-25 23:12
这些都是自定义段。gnu中的非标准段,就是gnu组织自定义的段。用来debug用,统计信息,以及注释使用。

这些都是在一个叫做linker script的文件中定义的。一般后缀为 .lds,也就是说,文件名为 xxx.lds

参考手册:http://sourceware.org/binutils/docs-2.21/ld/Scripts.html#Scripts

一个更为详细的例子: http://wiki.osdev.org/Linker_Scripts追问那如UBOOT中定义的一个自定义段:
.got : { *(.got) } ;指定 got 段, got 段式是 uboot 自定义的一个段, 非标准段

*(.data)是数据段....
但*(.got)是什么东西????????????????追答.got : { *(.got) } ;

表明 凡是 xxx.got,比如 aaa.got, bbb.got, ccc.got 段都属于 .got段。*就是通配符。

.got 段的具体作用,因为是用户自定义的,只能参见具体使用它的代码,或者相关说明书。

这些段的作用,主要是在编译的时候,让某些内容放在同一块内存位置,便于特定的使用场景。

详细的使用方法,参见手册 http://sourceware.org/binutils/docs-2.21/ld/Scripts.html#Scripts追问但问题是,这个.got 段到底是在那里定义的,这个段的数据不是编译器生成的?
如果不是编译器生成的,那我们怎么定义这个段的内容????追答你看看你目录下面有 *.lds 吗。

没有的话,它使用的就是默认的 lds.

你一点都不了解ld script。怎么能明白。搜索ld script看看相关文档。追问还以为非标准段是什么呢?
我只是想验证一下,这个非标准段是指不是由c编译器生成的吧
但是是汇编中可以用.section来定义一个段,以下的内容就是属于这个段的。。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯