GNU Compiler Section问题

win847 2013-01-15 09:57:13
大家好,有一个关于GNU编译器Section设置问题想请交一下大家。

比如把某些code放到同一个自定义的Section,可以用以下方式(Linux中已有的例子)来实现
#define __init __attribute__ ((__section__ (".init.text")))
#define __initdata __attribute__ ((__section__ (".init.data")))

static int setup_dmaspeed[MAXBOARDS] __initdata = { -1, -1, -1, -1 };
asmlinkage void __init start_kernel(void)

这个做法需要在每个函数定义的地方都加上__init 申明。

现在的问题是我想把某个C文件中的所有函数和变量都放到__section__ (".init.text")和__section__ (".init.data")中去,有没有办法不需要为每个函数和变量添加,而是在C文件的开头和结束部分加入某个申明就可以了,这样可以为节省很多时间,谢谢!

...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
samqsu_amba 2013-01-21
  • 打赏
  • 举报
回复
在lds文件里面做
samqsu_amba 2013-01-21
  • 打赏
  • 举报
回复
引用 4 楼 win847 的回复:
引用 3 楼 samqsu_amba 的回复:在lds文件里面做 请问在lds中怎么来做呢? 我之前有个想法,在link之前用objcopy rename的办法,把相关的.o文件中的text和rodata重命名为其他的section name,这样可能是有机会的,但是这样要写一个脚本把相关的.o文件做一下重命名的动作
搜索 lds 分散加载,其实就是在LDS文件里把相应的xxx.o (.text),xxx.o (.data)等放到合适的地方
win847 2013-01-21
  • 打赏
  • 举报
回复
引用 3 楼 samqsu_amba 的回复:
在lds文件里面做
请问在lds中怎么来做呢? 我之前有个想法,在link之前用objcopy rename的办法,把相关的.o文件中的text和rodata重命名为其他的section name,这样可能是有机会的,但是这样要写一个脚本把相关的.o文件做一下重命名的动作
win847 2013-01-17
  • 打赏
  • 举报
回复
大家有没有什么建议啊?
morris88 2013-01-15
  • 打赏
  • 举报
回复
貌似没有看到这种用法

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧