ILD

Linkers and Loaders 初学笔记
2017-5-20
1 编译过程对于源文件a.c,编译为目标文件a.o要经过预处理、编译和汇编3个步骤。多个目标文件生成可执行文件要经过链接处理。1.1 预处理 Preprocess源文件a.c的源码如下:12345#define NUM_2 2int double_num(int num){ return n

Linkers. Part 1. Introduction and Shared Libraries
2017-5-21
1 前言这个Linkers的学习系列,来自Ian Lance Taylor大神的博客。想深入了解的可以直接阅读参考资料里面的链接。2 Shared library and Linker共享库(shared libraries)是为了优化虚拟内存系统而设计的。在没有共享库之前,一些公用函数在每个进程中

GOLD链接器作者Ian的Linkers系列文章
2017-11-20
http://a3f.at/lists/linkersBy Ian Lance TaylorLinkers part 1: IntroLinkers part 2: Intro IILinkers part 3: Intro IIILinkers part 4: Shared librariesLi

重定向与符号解析
2017-11-22
本文学习386架构的可重定向目标文件中的重定向条目,以及符号解析。x86重定向类型有2种:R_386_PC32:指令使用PC相对地址访问对象,所以链接器应该计算PC相对地址,填充到重定向处。R_386_32:指令使用绝对地址访问对象,所以链接器应该计算绝对地址,填充到重定向处。1 重定向目标文件与链

共享库与位置无关代码
2017-11-27
共享库的一个要求是代码应该可以在不同的进程中共享,这就要求在重定向时不能修改代码段的内容。共享库也实现成可加载到任何地址执行。对于同一个共享库,不同进程,其运行地址可能不同。1 位置无关代码位置无关代码,就是访问对象时,不使用对象的绝对地址,而是使用相对地址,通常是相对PC的地址,通过例子分析:代码

ELF重定向分析(1):无共享库依赖的可执行文件
2018-1-1
通过分析各种不同elf文件的elf和反汇编信息来学习重定向。这里使用x86架构。1 工具通过make来编译可重定向目标文件、可执行文件和共享库。并调用readelf和objdump将elf信息和反汇编信息输出到相应文件。Makefile文件如下:CC := ccREADELF := readelfO

ELF重定向分析(2):依赖共享库的可执行文件
2019-8-17
本系列第二篇,分析依赖共享库时可执行文件的重定向方式。4 依赖共享库的可执行文件源代码如下:访问全局变量,全局函数,静态变量,静态函数,共享库中的变量,共享库中的函数。为了简化,一个函数访问一种变量。exe_lib.c12345678910111213141516171819202122232425

Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.