我一直试图让我的固件版本在运行时显示。 我已经尝试使用示例中的gcc 是否有任何选项可以在 ELF 二进制文件中添加版本信息? 但没有运气。 这是我到目前为止所拥有的。 在 STM32CubeIDE (MacOS) 上使用 STM32L462 内部源文件: 在我的应用程序文件夹 ...
我一直试图让我的固件版本在运行时显示。 我已经尝试使用示例中的gcc 是否有任何选项可以在 ELF 二进制文件中添加版本信息? 但没有运气。 这是我到目前为止所拥有的。 在 STM32CubeIDE (MacOS) 上使用 STM32L462 内部源文件: 在我的应用程序文件夹 ...
我想阅读 systemd efi 存根的 .cmdline 部分(插入了 initramfs、内核和 cmdline)。 我认为第一个选项是最优雅的选项,但遗憾的是它修改了原始文件,从而破坏了安全启动。 第二个选项创建一个不需要的输出文件。 使用 /dev/null 作为文件中断 /dev/nu ...
我有 ao object 文件,其中有一个 function 同一文件中的其他函数正在调用。 function 在它自己的部分中,没有导出。 我需要用我自己的实现替换这个 function。 我自己的实现也需要外部符号。 我考虑简单地修补该部分,以便它调用放置在某个位置的地址(因此旧的 func ...
我试图找到一种方法,从程序中检查一个或多个“.c”文件的存在并加载它的一个或多个函数。 基本上,我会有一个“主”程序,它将检查“script.c”文件是否存在,并将启动(如果存在)这个程序的 main() function。 这是编译前我的“主要”程序的内容: 他是我的“script.c”文件的内容 ...
我试图在不修改源代码的情况下模拟 static function 。 这是因为我们有大量的遗留代码库,我们想添加测试代码而不需要开发人员通过 go 并更改一堆原始代码。 使用 objcopy,我可以玩 object 文件之间的函数,但我不能影响内部链接。 换句话说,在下面的代码中,我可以让 mai ...
我尝试使用--remove-section选项通过objcopy减小二进制大小。 删除节后,在删除节的原始位置还留有一些空白。 有没有办法调整部分的偏移量以避免这些空白空间? 对于 emxaple,我删除了.eh_frame_hdr部分,并且在剥离的二进制文件中从 0x0764 开始有 0x03c ...
我使用objcopy -S -g -O binary test.elf test.bin从.elf获取.bin文件。 test.bin的大小显然大于test.elf本和数据的test.elf 。 为什么会有如此巨大的差异? objcopy哪些部分从.elf复制到.bin ? ...
我需要从共享库 (.so) 文件中更改某些符号,如下例所示:我需要将 .so 文件中的符号abc<\/code>重命名为符号xyz<\/code> 。 我有一个工具可以在头文件中替换它,这只是我在 .so 共享库中更改所面临的挑战。 对于共享库,是否有任何工具或命令可以帮助我 ...
当我在任何 rust 程序中执行 objcopy --strip-all 时,它们的大小减半。 例如,如果我使用 cargo build --release 编译一个普通的 hello world 应用程序,它以一个 3 mb 的可执行文件(在 linux 中)结束。 然后,当我在可执行文件上运行 ...
当我们将 arm-gcc 工具链生成的 .elf 文件转换为 .bin 文件时,其大小从 40kB 增加到 1.1Gb。 对于转换,我们使用: ./arm-none-eabi-objcopy -O binary test.elf test.bin 这可能是因为不连续的 memory map 和 me ...
我正在尝试使用 gcc 在 64 位模式下为 UEFI 制作 UEFI 可引导 PE32+ 文件。 首先,我正在编译源代码。 然后我将丢弃除 .text 和 .data 部分之外的所有内容并重命名文件。 这会生成一个几乎完美的文件。 除了 PE header 特性标志设置错误。 ( https:/ ...
问题如标题所述:是否可以将 ELF 二进制文件hello_world转换为 object 文件hello_world.o ,该文件可用于生成新的二进制hello_world_2 ,它是hello_world的副本? 所以从我的搜索来看,这似乎有点困难。 我找到了一种最接近的方法: 使用objcopy ...
我正在尝试使用 LLVM libFuzzer 对一段特定的代码进行模糊测试,该代码仅在外部公开其main() function。 我可以访问目标代码的源代码,但无法更改它。 如果我尝试直接包含 object 文件,它会与-fsanitize=fuzzer提供的main定义冲突。 我想我可以通过重命 ...
我正在尝试实现类似于 objcopy 的功能,其中将使用open()和read()打印出二进制文件的字节(特别是 .text 部分read() 。 我将如何设置缓冲区大小并迭代到.text部分的末尾,以便我不会读取比我需要的更多的字节以避免错误? ...
我正在为自己的教育目的构建 Risk-V CPU 的模拟器。 我有小型 POC 工作,想构建示例程序并在模拟器上测试它们。 我正在尝试在 Rust 中构建示例程序,并且似乎取得了一些不错的进展,但是当我必须将已编译的程序加载到我的模拟器的 memory 并将 CPU 执行转移到该程序时,我陷入了困 ...
我有一个包含以下部分的 elf 文件: 我正在使用一个将此精灵作为输入的工具,但最多只能使用 16 个部分。 如您所见,其中一些部分是相邻的。 有没有办法在链接时或在使用其他工具之前合并这些部分? ...
使用 GNU Binutils 声明汇编代码时,例如: 在进行十六进制转储时,即使操作码和其他信息在地址空间中将它们分开,也可以无错误地组装,但始终如一地 map 将 32 位字符串清零。 我正在编译: 并转储我的二进制文件: 我的汇编代码中缺少什么? ...
我已经安装了新的 glib 库 2.6 版,创建后我试图使用objcopy命令重命名 glib 库中的一些符号。 为了我们的项目支持,重命名符号是必要的。 它失败并出现以下错误 glibrename是一个文件,其中定义了所有 glib 原始符号并重命名了我想做的符号。 示例文件内容将是: 这是我的 ...
对于具有嵌入式位码的二进制文件(即,使用-fembed-bitcode编译)。 我怎样才能提取该部分,以便我可以像使用任何其他位码文件一样使用该位码文件,例如,运行opt或llvm-dis 作为一个测试用例,我有这个 hello-world 程序: 编译: clang++ -O2 test.cpp ...
我正在 Linux 上工作,我刚刚听说有一个命令objcopy ,我在我的 x86_64 PC 上找到了相关命令: x86_64-linux-gnu-objcopy 。 在它的帮助下,我可以将文件转换为 obj 文件: x86_64-linux-gnu-objcopy -I binary -O e ...