0
点赞
收藏
分享

微信扫一扫

根据连接文件得到相关信息

有态度的萌狮子 2022-07-27 阅读 62


目的: 依赖链接文件得到某一个段的地址

1首先分析一下 elf格式的文件

readelf -S android_server   使用 readelf -S 看一下有哪些段,  显示的地址 是运行地址

一般 flash 上的有效字节就是 text data rodata

SECTIONS
{
. = 0x30000000;

__code_start = .;

. = ALIGN(4);
.text :
{
*(.text)
}

. = ALIGN(4);
.rodata : { *(.rodata) }

. = ALIGN(4);
.data : { *(.data) }

. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) *(.COMMON) }
_end = .;
}

void clean_bss(void)
{
/* 要从lds文件中获得 __bss_start, _end
*/
extern int _end, __bss_start;

volatile unsigned int *start = (volatile unsigned int *)&__bss_start;
volatile unsigned int *end = (volatile unsigned int *)&_end;
//此时的start 和 end 都是地址
//如何得到段的大小
//printf("size is %d\n",end-start+1); size*4
while (start <= end)
{
*start++ = 0;
}
}


举报

相关推荐

0 条评论