ELF文件之七——使用链接脚本-2个函数-data-bss-temp-call

main.c

int enable;
int test = 1;

int main()
{
    int temp;
    
    add();
    return 0;
}

int add()
{
    return 0;
}
View Code

o反汇编的地址都是0起始,elf的地址都是映射后的地址。

ELF文件之七——使用链接脚本-2个函数-data-bss-temp-call_第1张图片ELF文件之七——使用链接脚本-2个函数-data-bss-temp-call_第2张图片

多了一个.rela.text,大小为12字节

ELF文件之七——使用链接脚本-2个函数-data-bss-temp-call_第3张图片

偏移为4,什么意思?

info的次高8位为重定位目标所在节符号表的索引为9,即为add,其数值为0x0000 0020,即第4列Sym.Value的数值。

低8位表示type,即R_SPARC_WDISP30(在ABI sparc supplement中有定义),表示( S + A - P ) > > 2

什么意思?推测,S为Sym.Value,A为Addend,P为?合起来即为0x0000 0000 + 0 - 0 = 0x0000 0020

为什么o文件的反汇编为call main+4呢?如果新加一个del函数,则是call main+c?不明白

难道o文件的调用关系不准确,需要看elf文件的?

ELF文件之七——使用链接脚本-2个函数-data-bss-temp-call_第4张图片

 

你可能感兴趣的:(ELF文件之七——使用链接脚本-2个函数-data-bss-temp-call)