小编Per*_*ytt的帖子

使用 binutils 在目标文件之间复制 ELF 部分

由于错误,ld我需要将 ELF 部分从一个目标文件复制到另一个目标文件。我可以将所需的部分转储到文件中,但问题是该objcopy选项--add-section需要二进制文件,因此部分类型信息会丢失。据我所知,我无法使用 binutils 设置部分的类型,但我希望我错了:)

我可以手动编辑二进制文件以设置节类型并解决根本问题,但我很好奇是否有基于标准工具的解决方案。

对于好奇的人来说,潜在的问题是,当 GNUld链接没有该部分的 ARM 目标文件.ARM.attributes(例如在其自己的部分中只有一个二进制 blob 的文件)时,它会选择一些默认值,导致它甚至为 RAM 函数生成无效的胶合板当包含调用的文件有好的.ARM.attributes 部分时。我能想到的唯一解决方案(待定 https://sourceware.org/bugzilla/show_bug.cgi?id=11897.ARM.attributes )是向二进制 blob 对象文件添加一个部分。.ARM.attributes但是,只有当该部分的类型为时,这才有效ARM_ATTRIBUTES

linker elf binutils

6
推荐指数
0
解决办法
725
查看次数

获取 make 中所有依赖项的列表

我正在尝试根据 gcc 生成的依赖信息在 make 中编写 etags 目标。有没有某种方法可以一次性获取所有依赖项?或者,如果做不到这一点,我将如何编写一个仅在创建“tags”目标时执行并将所有源文件和头文件传递给 etags 的规则?我只想索引实际编译的文件(包括标头)。我知道我可以自己在 .d 文件中查找,但我正在尝试找到一个更优雅且更不易损坏的解决方案。

我有以下内容(摘录)

DEPFILES = $(OBJFILES:.o=.d)

%.o : %.c
    @echo "Compiling $<"
    $(NO_ECHO) $(CC) $(CFLAGS) -MMD -MF $(@:.o=.d) -o $@ -c $<

%.o : %.S
    @echo "Compiling $<"
    $(NO_ECHO) $(CC) $(ASFLAGS) -MMD -MF $(@:.o=.d) -o $@ -c $<

$(TARGET) : $(OBJFILES)
    @echo "Linking $@"
    $(NO_ECHO) $(LD) $(LDFLAGS) -o $@ $(OBJFILES) $(LIBS:%=-l%)

.PHONY: clean

# Order-only dependency to make Dep/obj-directories if they are not
# present
$(OBJFILES) : | $(ALLPATHS)

$(ALLPATHS):
    $(NO_ECHO) …
Run Code Online (Sandbox Code Playgroud)

etag makefile

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

binutils ×1

elf ×1

etag ×1

linker ×1

makefile ×1