]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
LoongArch: Add support for OUTPUT_FORMAT("binary")
authormengqinggang <mengqinggang@loongson.cn>
Fri, 28 Jun 2024 06:24:19 +0000 (14:24 +0800)
committerliuzhensong <liuzhensong@loongson.cn>
Mon, 5 Aug 2024 09:38:49 +0000 (17:38 +0800)
commit3a83f0342e545a638aba06f27bba76938ef251ab
tree3294c44e3e3c412d5521271ab5893f88eb83e009
parent0c817e7c1058de7efbb47f253d7df9278587dead
LoongArch: Add support for OUTPUT_FORMAT("binary")

In binary output format, loongarch_elf_hash_table return NULL and result
in segment fault.

When ld output binary file, it seems that elf related functions should
not be called. But loongarch_elf_relax_section be called and
loongarch_elf_hash_table cause segment fault.

Just redefined loongarch_elf_hash_table and always return
link_info->hash.

The tests of binutils, glibc and gcc is ok.

0  loongarch_elf_relax_section ()
1  0x000055555557ab28 in lang_size_sections_1 ()
2  0x000055555557a16c in lang_size_sections_1 ()
3  0x000055555557b0a8 in one_lang_size_sections_pass ()
4  0x000055555557b478 in lang_size_sections ()
5  0x000055555557e65c in lang_relax_sections ()
6  0x000055555559f9c8 in ldelf_map_segments ()
7  0x000055555559783c in gldelf64loongarch_after_allocation ()
8  0x000055555558dac0 in ldemul_after_allocation ()
9  0x000055555557f6c0 in lang_process ()
10 0x0000555555585314 in main ()
bfd/elfnn-loongarch.c
ld/emultempl/loongarchelf.em
ld/testsuite/ld-loongarch-elf/binary.ld [new file with mode: 0644]
ld/testsuite/ld-loongarch-elf/binary.s [new file with mode: 0644]
ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp