发布库时,作者通常会提供 Maven/Gradle 依赖项。 如果库需要着色,他们也会为着色插件指定相关的 package: 但如果他们不这样做呢? 对于许多依赖项,我不得不在 github 页面中搜索顶部的 package,这当然可能是错误的。 在这种情况下我该怎么办? 如果帖子中不清楚,我需要 ...
发布库时,作者通常会提供 Maven/Gradle 依赖项。 如果库需要着色,他们也会为着色插件指定相关的 package: 但如果他们不这样做呢? 对于许多依赖项,我不得不在 github 页面中搜索顶部的 package,这当然可能是错误的。 在这种情况下我该怎么办? 如果帖子中不清楚,我需要 ...
RISC-V 指令auipc执行rd = (imm << 12) + PC ,作为rd目标寄存器和imm 12 位带符号立即数。 上述指令的结果将根据二进制文件运行的地址而有所不同。 假设系统使用引导加载程序来引导固件映像。 在这种情况下,固件映像的初始 PC 将不同于 0x0。 这 ...
我正在使用没有任何框架的香草节点,我似乎无法重定向到另一个页面。到目前为止我已经尝试过 我也用过 301 但无济于事。 我可以很容易地从文件中读取并显示它的内容,就像这样 }); 但我不想要那样。 我已经看到在快递的帮助下可以轻松完成。 香草节点不是正确的路由工具吗? “登录”是一个简单的 ht ...
我正在使用 clang 13.1.6 和 MacOS Monterey 12.5 在 ARM64 M1 Pro 笔记本电脑上编写程序集。 如果我尝试在.text部分中使用.dword / .xword的地址作为其值,我的程序在启动时会因bus error而崩溃。 最小的可重现示例: .tex ...
问题是关于将可移植的可执行映像加载到随机地址。 我们以 kernel32.dll 为例,加载在 0x75A00000。 我可以看到,在图像的偏移量 0x10e15 处,有一条汇编指令,这取决于图像所在的位置。 地址:75A10E13 字节:8B 35 18 03 AE 75 命令:MOV ESI, ...
我正在为一个开源项目开发链接器。 目标架构是AMD_X86_X64 。 在AMD_X86_X64规范中声明了 ELF 的重定位类型的计算,例如, R_X86_64_64计算为S + A 。 如何在 COFF 中进行这些计算我无法在网上找到它们? ...
在探索 ELF 结构时,我看到了这一点(这是与包含ml_func的 PIC.so 链接的二进制文件的objdump -d和readelf -r ): .rela.plt 不是多余的吗? 它似乎存储了已在ml_func@plt计算的相同偏移量 601018。 或者它对一些更复杂的情况有用,比如不同 ...
我找到了很多R_386_GOT32的文档,但不是R_386_GOT32X 。 我能够找到https://github.com/hjl-tools/x86-psABI/wiki/intel386-psABI-draft.pdf ,它显示了R_386_GOT32X的计算,但它看起来与R_386_GOT3 ...
前言 已经存在像这样的问题,但到目前为止我发现的问题要么特定于给定的工具链( 该解决方案适用于 GCC,但不适用于 Clang),或者特定于给定的格式( 这个特定于 Mach- ○)。 我只是出于熟悉而在这个问题中标记了 ELF,但我试图为其他平台找出尽可能合理的“便携式”解决方案。 使用 GCC ...
我试图在 C 中重新创建命令nm的行为,虽然我成功获取了符号和部分的名称,但我发现我的版本中出现了一些额外的名称。 $>./my_nm -a obj.o $> nm -a obj.o 我对它们做了一些研究,发现它们是对某个部分或符号的某种引用。 我想知道他们有没有什么特别之处。 如果是 ...
每当我尝试使用-mcmodel=large时都会出现此错误,有人知道这是为什么吗? 我在 Windows 10 使用 gcc 10.2.0 ...
背景我正在研究 2015 CS61C(伯克利)课程项目,编写 linker 以链接从 MIPS 指令集的以下子集生成的 object 文件。 从这个指令子集中,我认为需要重定位的是j , bne , beq指令( blt是伪指令),如果 label 不存在于同一文件中,则后两个需要重定位。 执行指 ...
据我所知,两种方式的重定位计算是相同的,即:S + A,但对于R_386_32,这里的“A”代表固定memory位置上的存储值。 而对于R_X86_64_64,它代表的是相应符号上的加数,这样理解对吗? ...
赏金将在 5 小时后到期。 此问题的答案有资格获得+50声望赏金。 digito_evo希望引起对这个问题的更多关注。 我需要知道在 GCC (g++) 中使用-s是否会对 PIE 产生任何影响。 我还想知道它对位置相关可执行文件的影响。 据我所知,不使用任何链接选项(如-pie和-fpie ) ...
我有这个汇编文件 prog.S: 这三个函数位于相同的文本部分中,并且 main 调用全局 function 然后调用本地函数。 当我用 clang 编译这个文件时: 这是我得到的部分: 重定位部分“.rel.text”: 符号表: 和.text部分的反汇编代码 从反汇编代码中可以看出,本地 fu ...
https://docs.oracle.com/cd/E23824_01/html/819-0690/chapter6-54839.html#chapter7-2状态: 64 位 SPARC 和 64 位 x86 仅使用 Elf64_Rela 重定位条目。 因此,r_addend 成员用作重定 ...
我在 IDA 中反汇编了一个 MS-DOS 可执行文件(16 位),入口点的第一条指令是mov ax, 0x1000 ; B8 00 10 但是,当转储原始十六进制时,相应的字段是mov ax, 0x0000 ; B8 00 00 加载程序后是否发生动态重定位? ...
我最近在 android 10: relocation R_AARCH64_ADR_PREL_PG_HI21 out of range: 8589967360 is not in [-4294967296, 4294967295]中遇到了重定位问题。 并且我尝试在android.bp中添加cfla ...
我正在写一个 kernel,我需要自我重定位到 0x7FFFFFFF 以上。 为此,我需要使用绝对寻址来引用我的 kernel 的开头和结尾以及一个符号,在重定位后继续执行。 我一直想不出任何办法来做到这一点。 可以做到吗? 有解决方法吗? ...
我目前正在开发一个用 C 编写的旧程序,它由一个共享库和一些实用程序组成。 该库的构建首先将每个子项目构建为 static c 库,然后将它们链接到一个共享库中。 该项目的布局与此问题中的项目非常相似。 以前,我通过将每个 object 构建链接在一起来构建我的 C 程序。 在这种情况下,使用 s ...