relocation相关内容

带有可重定位代码的静态局部变量的问题

我正在构建一个在裸机上具有可重定位代码的项目.它是 Cortex M3 嵌入式应用程序.我没有动态链接器,并且在我的启动代码中实现了所有重定位. 大多数情况下它都在工作,但我的本地静态变量似乎定位不正确.它们的地址被我的可执行文件在内存中的偏移量所抵消——即我编译我的代码就好像它是在内存位置 0 处加载的,但我实际上将它加载到位于 0x8000 的内存中.静态局部变量的内存地址偏移了 0x8 ..
发布时间:2021-11-17 22:28:39 其他开发

如何为裸机臂应用程序编写动态加载程序

我正在开发一个基于 arm9 处理器的项目.我们只使用没有任何操作系统的裸机,所以很遗憾我们还不支持共享库/动态加载器. 我希望能够从例如 SD 卡加载库,这也可以从主应用程序调用函数. 我的第一次尝试是使用链接器覆盖功能(将库放置在特定的绝对定位部分),但是正如我之前提到的,调用主应用程序函数存在问题 -> 随着主应用程序的每次更改,库必须重新编译才能回调. 根据这一点,我将不 ..
发布时间:2021-11-17 22:06:07 其他开发

重定位应该如何在静态 PIE 二进制文件中工作?

考虑这个用于 AMD64 Linux 的 GNU 汇编程序: .globl _start_开始:movl $59, %eax # SYS_execveleaq .pathname(%rip), %rdi # 位置无关寻址leaq .argv(%rip), %rsimovq (%rsp), %rdx泄漏 16(%rsp,%rdx,8), %rdx系统调用movl $60, %eax # SYS_e ..
发布时间:2021-08-30 18:34:49 其他开发

如何为裸机臂应用程序编写动态加载程序

我正在开发一个基于 arm9 处理器的项目.我们只使用没有任何操作系统的裸机,所以很遗憾我们还不支持共享库/动态加载器. 我希望能够从例如 SD 卡加载库,这也可以从主应用程序调用函数. 我的第一次尝试是使用链接器覆盖功能(将库放置在特定的绝对定位部分),但是正如我之前提到的,调用主应用程序函数存在问题 -> 随着主应用程序的每次更改,库必须重新编译才能回调. 根据这一点,我将不 ..
发布时间:2021-07-23 20:18:29 其他开发

NASM x86_64中的重新定位被截断以适应错误

我正在使用具有Intel Core 2 CPU和2GB RAM的计算机.我的操作系统是Ubuntu 9.04.当我尝试编译此代码时: ;每个PC上的模拟程序,以及ottizzuto utilizzando l'8250;在condizione di loopback中,cio Tx = Rx.code64部分.data节TXDATA EQU 03F8H ;TRASMETTITORERXDATA均 ..
发布时间:2021-05-29 21:22:25 其他开发

迁移后,Wordpress一直重定向到install-php

这是我的情况.我已按照Wordpress Codex页面上有关将站点移至另一台服务器的确切说明进行操作.这是我采取的步骤. 导出我的数据库副本 在新服务器中创建新数据库 导入我之前导出的数据库 通过ftp上传我的Wordpress文件的副本 使用此脚本来更改我所有的本地网址到新人的 根据新服务器对wp-config.php文件进行更改(我没有忘记表前缀.尽管其中包含一些大写字符) ..
发布时间:2021-05-16 19:00:41 其他开发

C编译:重定位被截断以适合R_X86_64_PC32针对符号

/*我的程序作者/日期:我/现在*/#include#定义XX 1000#定义YY 20000/*值1000可以*/#定义ZZ 6000/*全局变量声明*/int some_variable_this;int some_variable_that;双倍数据[XX] [YY] [ZZ];静态void some_procedure_this(void){}静态void some_p ..
发布时间:2021-04-23 19:57:03 其他开发

ELF搬迁逆向工程

我希望你们能帮助我理解重定位条目和ELF部分数据之间的关系,以及所有这些如何处理和生成. 我有一个古老的不受支持的工具,该工具需要一个ELF文件和一个相关的PLF文件(部分链接文件,在构建过程的早期生成),并根据该文件构建一个可自定义的可重定位文件,该文件可以在平台(PPC)上使用紧密内存限制.除包含大约一小段我们要在启动后卸载的初始化代码外,此方法工作正常.因此,我们将所有init代码放入 ..
发布时间:2020-07-05 21:21:43 其他开发

ld-linux动态链接器/解释器的相对可执行路径

我想运送和归档二进制文件(带有库的可执行文件),这些二进制文件应尽可能地与Linux发行版本向后和向前兼容,并且整个软件包都可重定位. 据我了解,像libc这样的系统库也需要交付,因为在libc的其他版本下,可执行文件将崩溃.同时libc似乎与ld-linux耦合 (例如,在Debian测试中编译的二进制文件已经无法在Ubuntu 18.04 LTS上运行),因此我也需要打包ld-linux. ..
发布时间:2020-07-05 21:21:40 其他开发

Cmake:将子项目目标导出到主项目

我目前有一个名为 LIBS 的项目,其结构如下: ├── Lib1 │ ├── CMakeLists.txt │ ├── lib1-class.cpp │ └── lib1-class.h ├── lib2 │ └── CMakeLists.txt │ ├── lib2-class.cpp │ ├── lib2-class.h ├── cmake │ └── LI ..
发布时间:2020-07-05 21:21:38 其他开发

那么大多数二进制文件是由reloc表组成的吗?

我只是用objdump -x ...检查PE文件的各个部分. 大约有90,000行重定位条目: reloc 92 offset bc0 [524bc0] HIGHLOW reloc 93 offset bc4 [524bc4] HIGHLOW .... 大多数PE文件的大部分空间是否都由上述重定位条目组成,这是否成立? 这些条目是做什么用的? 更新 ..
发布时间:2020-07-05 21:21:36 其他开发

SVN开关重定位-不是存储库的根

我正在尝试将工作副本文件夹从旧的专用svn服务器移动到新的svn服务器,该文件包含在子文件夹中.使用以下重新定位命令: svn switch --relocate https://oldserver/svn/repos https://newserver/some/directory 我得到: svn: 'https://newserver/some/directory ' is ..
发布时间:2020-07-05 21:21:28 其他开发

AArch64重定位前缀

我注意到用于ARM 64位汇编的GNU asm 重定位语法.那些像#:abs_g0_nc:和:pg_hi21:的东西是什么?他们在哪里解释?他们有模式吗?还是在忙碌中弥补它们?在哪里可以了解更多信息? 解决方案 简介 ELF64 定义了两种类型的重定位条目,称为 REL 和 RELA : typedef struct { Elf64_Addr r_offset; ..
发布时间:2020-07-05 21:16:00 其他开发

PE基础迁移如何建立?

我目前在了解如何建立PE Base重定位方面遇到困难. 我知道可能会有一个以上的重定位,我也知道为什么这样做以及如何进行,但我只是不以编程方式了解它: 以下哪一项是正确的(在WinNT.h中为IMAGE_BASE_RELOCATION)? // Base relocation #1 DWORD VirtualAddress; DWORD SizeOfBlock; // s ..
发布时间:2020-05-29 01:44:32 其他开发

用-fPIC重新编译

我的计算机上安装了 MPICH 3.0.4 (Ubuntu 12.04).我正在尝试安装一个名为 Qthreads 的库,该库我之前已经使用并成功安装了(除非已安装MPICH2软件包).配置工作正常: ./configure --prefix=/usr/local/qthreads --enable-multinode --with-multinode-runtime=mpi --with- ..
发布时间:2020-05-05 11:58:46 其他开发

什么是绝对符号,以及如何在C中定义它?

在nm的手册页中.它说 "A"该符号的值为绝对值,不会通过进一步的链接进行更改. 但是,我不知道这意味着什么.如何在C中定义变量或其他使变量的值绝对为 ? 如果我在test.c的文件范围内声明了一个变量 int a; 然后在nm的输出中,a的条目将在我的计算机上显示以下内容 0000000000000004 C a 所以我想知道如何使变量的nm输出"A".而 ..
发布时间:2020-04-30 08:33:17 其他开发

解决部分链接中的相对重定位

我注意到,使用-r进行部分链接实际上并没有解决任何重定位问题,即使它们可以通过相对寻址来解决.例如,考虑f.o和g.o,其中f.o包含f(),这会在g.o中调用g().在链接之前,拆卸和重定位是按预期进行的.但是,在部分链接到新文件h.o之后(通过ld -r -o h.o f.o g.o),即使在理论上可以用相对地址解析,但仍需要重新放置对g()的调用. 这是h.o(objdump -d h ..
发布时间:2020-04-30 08:33:11 其他开发

动态重定位代码部分

只是出于好奇,我想知道是否有可能在此期间重新定位一段代码 程序的执行.例如,我有一个函数,这个函数应该 每次执行后都将其替换在内存中.一个想法浮现在我们的脑海 是使用自我修改的代码来做到这一点.根据一些在线资源,自我修改 代码可以在Linux上执行,但是我仍然不确定是否可以进行这样的动态重定位.有人有经验吗? 解决方案 是的,动态重定位肯定是可能的.但是,您必须确保代码完全独立,或通过绝对 ..
发布时间:2020-04-23 10:43:48 其他开发

GCC-组件错误:将R_X86_64_32S重新定位为'.data'

情况 环境 GCC GCC(GCC)5.2.0 命令 gcc -Wall -g -o asm_printf asm_printf .s 错误 / usr / bin / ld:/tmp/cct4fa.o:重定位R_X86_64_32S针对'.data'时无法使用制作一个共享对象;使用-fPIC 重新编译/tmp/cct4f ..
发布时间:2018-04-21 11:27:11 其他开发