diff options
author | Alan Modra <amodra@gmail.com> | 2021-02-15 09:48:50 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2021-02-15 13:34:08 +1030 |
commit | 1781a9d0f3d0319abeeae73b1f1f78fbf3778739 (patch) | |
tree | 9284cb96c03408b02e12dfb7c006f251a43d3a5b /bfd/elf32-nds32.c | |
parent | 8b78cbec3191c7f153d116fb2184ea6400b3a7b1 (diff) | |
download | binutils-1781a9d0f3d0319abeeae73b1f1f78fbf3778739.zip binutils-1781a9d0f3d0319abeeae73b1f1f78fbf3778739.tar.gz binutils-1781a9d0f3d0319abeeae73b1f1f78fbf3778739.tar.bz2 |
nds32_elf_get_relocated_section_contents
nds32_elf_get_relocated_section_contents uses nds32_get_section_contents
to read sections contents, but nds32_get_section_contents has the wrong
behaviour as it calls bfd_malloc_and_get_section. That function always
mallocs its output buffer, whereas get_relocated_section_contents must
support an already allocated buffer.
bfd/
* elf32-nds32.c (nds32_get_section_contents): Replace
bfd_malloc_and_get_section with bfd_get_full_section_contents.
(nds32_elf_relax_delete_blanks): Init contents.
(nds32_elf_relax_section, nds32_relax_fp_as_gp): Likewise.
binutils/
* testsuite/binutils-all/compress.exp: Remove nds32 xfails.
* testsuite/binutils-all/objdump.exp: Likewise.
Diffstat (limited to 'bfd/elf32-nds32.c')
-rw-r--r-- | bfd/elf32-nds32.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c index 59ed470..01d0702 100644 --- a/bfd/elf32-nds32.c +++ b/bfd/elf32-nds32.c @@ -9201,6 +9201,7 @@ nds32_elf_relax_delete_blanks (bfd *abfd, asection *sec, if (!(sect->flags & SEC_RELOC)) continue; + contents = NULL; nds32_get_section_contents (abfd, sect, &contents, TRUE); for (irel = internal_relocs; irel < irelend; irel++) @@ -9457,7 +9458,7 @@ nds32_get_section_contents (bfd *abfd, asection *sec, *contents_p = elf_section_data (sec)->this_hdr.contents; else { - if (!bfd_malloc_and_get_section (abfd, sec, contents_p)) + if (!bfd_get_full_section_contents (abfd, sec, contents_p)) return FALSE; if (cache) elf_section_data (sec)->this_hdr.contents = *contents_p; @@ -12157,6 +12158,7 @@ nds32_elf_relax_section (bfd *abfd, asection *sec, load_store_relax = table->load_store_relax; /* Get symbol table and section content. */ + contents = NULL; if (!nds32_get_section_contents (abfd, sec, &contents, TRUE) || !nds32_get_local_syms (abfd, sec, &isymbuf)) goto error_return; @@ -12814,6 +12816,7 @@ nds32_relax_fp_as_gp (struct bfd_link_info *link_info, symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + contents = NULL; if (!nds32_get_section_contents (abfd, sec, &contents, TRUE) || !nds32_get_local_syms (abfd, sec, &isymbuf)) return FALSE; |