position-independent-code相关内容

NASM:在运行时从RIP(指令指针)获取重新定位的二进制的偏移量

我有一个适用于x86_64的兼容Multiboot2的ELF文件,其中开始符号在start.asm中定义,这是一个NASM程序集文件。Multiboot2标头包含relocatable标记。 由于GRUB不支持Multiboot2+a可重定位ELF(至少在2021年7月[3]),我希望自己解决一些重定位问题以解决此问题,并只加载静态ELF。 为此,我需要在运行时在我的第一个条目符号(在EL ..
发布时间:2022-04-06 11:10:48 其他开发

ARM 汇编中 ADRP 和 ADRL 指令的语义是什么?

ADRP PC 相对偏移处的 4KB 页面地址. ADRL 将相对于 PC 的地址加载到寄存器中.它类似于 ADR操作说明.ADRL 可以加载比 ADR 更广泛的地址,因为它会生成两条数据处理指令. 具体来说, ADRL 汇编成两条指令,一条是 ADRP,然后是 ADD.如果汇编器不能用两条指令构造地址,它产生重定位.然后链接器生成正确的偏移量.ADRL 产生与位置无 ..

gcc 和 ld 中与位置无关的可执行文件的 -fPIE 选项是什么?

它将如何更改代码,例如函数调用? 解决方案 PIE 是支持地址空间布局随机化(ASLR) 在可执行文件中. 在创建 PIE 模式之前,程序的可执行文件无法放置在内存中的随机地址,只能将位置无关代码 (PIC) 动态库重新定位到随机偏移量.它的工作方式与 PIC 为动态库所做的工作非常相似,不同之处在于没有创建过程链接表 (PLT),而是使用了与 PC 相关的重定位. 在 gcc ..
发布时间:2021-12-18 22:24:22 其他开发

ARM汇编中ADRP和ADRL指令的语义是什么?

ADRP 相对于 PC 偏移的 4KB 页地址. ADRL 将与 PC 相关的地址加载到寄存器中.它类似于 ADR操作说明.ADRL 可以加载比 ADR 更广泛的地址范围,因为它生成两个数据处理指令. 具体来说, ADRL 汇编为两条指令,一条 ADRP 后跟 ADD.如果汇编器不能用两条指令构造地址,它产生重定位.然后链接器生成正确的偏移量.ADRL 产生与位置无关 ..

ARM汇编中ADRP和ADRL指令的语义是什么?

ADRP 相对于 PC 偏移的 4KB 页地址. ADRL 将与 PC 相关的地址加载到寄存器中.它类似于 ADR操作说明.ADRL 可以加载比 ADR 更广泛的地址范围,因为它生成两个数据处理指令. 具体来说, ADRL 汇编为两条指令,一条 ADRP 后跟 ADD.如果汇编器不能用两条指令构造地址,它产生重定位.然后链接器生成正确的偏移量.ADRL 产生与位置无关 ..

为什么GCC根据文件创建共享对象而不是可执行二进制文件?

我有一个正在建立的图书馆.当我运行以下任一程序时,我的所有对象都会依次编译并链接: ar rcs lib/libryftts.a $^ gcc -shared $^ -o lib/libryftts.so 在我的Makefile中.我也能够成功将它们安装到/usr/local/lib 当我用nm测试文件时,所有功能都在那里. 我的问题是当我运行gcc testing/test.c -l ..