zoukankan      html  css  js  c++  java
  • 重定位细节[1]

    ELF里面重定位项的结构
    struct elf32_rel {
    Elf32_Addr r_offset;
    Elf32_Word r_info; //SYMBOL=r_info>>8 TYPE=r_info&0xff.
    } ;
    r_offset是需要进行重定位的地址;
    SYMBOL是重定位以后需要指向的符号;
    TYPE是重定位的类型。


    绝对地址指令
    c7 44 24 04 00 00 00 00 movl $0x0,0x4(%esp)
    相对地址指令
    e8 fc ff ff ff call 27<main+0x27>

    编译器把这两个地址部分暂时用0x00000000和0xfffffffc代替着
    真正的地址计算工作留给了链接器

    链接器在完成地址和空间分配之后就已经可以确定所有符号的虚拟地址了,那么链接器就可以根据符号的地址对每个需要重定位的指令进行地址修正

    RELOCATION RECORDS FOR [.text] 表示这个重定位表是代码段的重定位表

    注意绝对寻址修正和相对寻址修正

  • 相关阅读:
    centos7安装kde桌面
    centos7安装NVIDIA驱动
    15日报
    11日报
    14日报
    奖励加分
    课程建议
    13日报
    12日报
    每日总结1213
  • 原文地址:https://www.cnblogs.com/moonflow/p/2623428.html
Copyright © 2011-2022 走看看