Tag: objcopy

编辑ELF文件中的变量值?

我需要在已编译的ELF文件中更改几个变量。 试图清楚地解释这一点,我将使用一个简单的C结构作为例子。 单个源文件从MyFile.c编译并链接(@ 0x1000)到MyFile.elf: typedef struct { uint32_t SerialNumber; /* Increments for every time it’s programmed */ uint32_t PartNumber; /* Always the same */ char ProdDateTime[32]; /* “YYYY-MM-DD HH:MM:SS” date/time when programmed */ uint32_t CalcCrc32; /* Checksum of the above data */ } MyData_T; const MyData_T MyData = { /* SerialNumber */ 0x11111111, /* PartNumber […]

objcopy将目录路径名添加到符号名称之前

我想使用objcopy将二进制forms的文本文件包含到可执行文件中。 (在运行时我需要将文件作为字符串)。 这工作正常,直到链接器需要从符号名称中查找引用。 问题是objcopy在符号名称objcopy加上文件的路径名。 由于我使用GNU Autotools发送包,这个前置路径名发生了变化,我不知道在C / C ++程序中使用什么外部链接器符号。 nm libtest.a |grep textfile textfile.o: 00001d21 D _binary__home_git_textfile_end 00001d21 A _binary__home_git_textfile_size 00000000 D _binary__home_git_textfile_start libtest.a是用(从Makefile.am中提取)生成的: SUFFIXES = .txt .txt.$(OBJEXT): objcopy –input binary –output elf32-i386 –binary-architecture i386 $< $@ 我怎样才能告诉objcopy只将文件名的词干作为链接符号? 或者还有另一种解决问题的方法吗?

带有objcopy的巨大二进制文件

我在ARM9处理器的基本C程序中定义全局变量时遇到问题。 我正在使用EABI GNU编译器,12KB精灵生成的二进制文件是4GB! 我假设问题出在我的分散文件中,但我无法理解它。 我有256KB的ROM(基地址0xFFFF0000)和32KB的RAM(基地0x01000000) SECTIONS { . = 0xFFFF0000; .text : { * (vectors); * (.text); } .rodata : { *(.rodata) } . = 0x01000000; sbss = .; .data : { *(.data) } .bss : { *(.bss) } ebss = .; bssSize = ebss – sbss; } 我的计划如下: int a=10; int main() { int […]