博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重定位细节[1]
阅读量:6962 次
发布时间:2019-06-27

本文共 514 字,大约阅读时间需要 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] 表示这个重定位表是代码段的重定位表

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

转载于:https://www.cnblogs.com/moonflow/archive/2012/08/04/2623428.html

你可能感兴趣的文章
单身税的时代就要来临,你还没有用Python帮你找一个女朋友吗?
查看>>
Kafka的底层实现原理
查看>>
CAS实现单点登录实例源码
查看>>
JEESZ-Zookeeper集群安装
查看>>
Dubbo背景和简介
查看>>
vue-router的HTML5 History 模式设置
查看>>
Neo 虚拟机
查看>>
Pycharm上Django的使用 Day10
查看>>
node上的redis调用优化示例
查看>>
Jenkinsfile
查看>>
CSS:父子元素浮动分析和清除浮动
查看>>
springboot配置Druid数据源
查看>>
IT兄弟连 JavaWeb教程 过滤器与监听器经典面试题
查看>>
[喵咪BELK实战(2)] elasticsearch+kibana搭建
查看>>
关于 SSHKey
查看>>
struts-ObjectFactory
查看>>
eclipse查看版本
查看>>
Hadoop面试45个题目及答案
查看>>
nagios的安装
查看>>
【GO 笔记】 20180907 golang GUI
查看>>