diff options
Diffstat (limited to 'bfd/elf32-mips.c')
-rw-r--r-- | bfd/elf32-mips.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 9585291..50d2f23 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -2788,6 +2788,23 @@ _bfd_mips_elf_fake_sections (abfd, hdr, sec) hdr->sh_entsize = 8; } + /* The generic elf_fake_sections will set up REL_HDR using the + default kind of relocations. But, we may actually need both + kinds of relocations, so we set up the second header here. */ + if ((sec->flags & SEC_RELOC) != 0) + { + struct bfd_elf_section_data *esd; + + esd = elf_section_data (sec); + BFD_ASSERT (esd->rel_hdr2 == NULL); + esd->rel_hdr2 + = (Elf_Internal_Shdr *) bfd_zalloc (abfd, sizeof (Elf_Internal_Shdr)); + if (!esd->rel_hdr2) + return false; + _bfd_elf_init_reloc_shdr (abfd, esd->rel_hdr2, sec, + !elf_section_data (sec)->use_rela_p); + } + return true; } |