aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/coff-alpha.c26
2 files changed, 21 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3563b65..7ff7eb0 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2021-02-15 Alan Modra <amodra@gmail.com>
+
+ * coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Use
+ bfd_get_full_section_contents.
+
2021-02-14 Alan Modra <amodra@gmail.com>
* elfxx-mips.c (_bfd_elf_mips_get_relocated_section_contents): Apply
diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c
index db26587..8031ab9 100644
--- a/bfd/coff-alpha.c
+++ b/bfd/coff-alpha.c
@@ -732,25 +732,31 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd,
{
bfd *input_bfd = link_order->u.indirect.section->owner;
asection *input_section = link_order->u.indirect.section;
- long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
- arelent **reloc_vector = NULL;
+ long reloc_size;
+ arelent **reloc_vector;
long reloc_count;
bfd *output_bfd = relocatable ? abfd : (bfd *) NULL;
bfd_vma gp;
- bfd_size_type sz;
bfd_boolean gp_undefined;
bfd_vma stack[RELOC_STACKSIZE];
int tos = 0;
+ reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
if (reloc_size < 0)
- goto error_return;
- reloc_vector = (arelent **) bfd_malloc ((bfd_size_type) reloc_size);
- if (reloc_vector == NULL && reloc_size != 0)
- goto error_return;
+ return NULL;
- sz = input_section->rawsize ? input_section->rawsize : input_section->size;
- if (! bfd_get_section_contents (input_bfd, input_section, data, 0, sz))
- goto error_return;
+ if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
+ return NULL;
+
+ if (data == NULL)
+ return NULL;
+
+ if (reloc_size == 0)
+ return data;
+
+ reloc_vector = (arelent **) bfd_malloc (reloc_size);
+ if (reloc_vector == NULL)
+ return NULL;
reloc_count = bfd_canonicalize_reloc (input_bfd, input_section,
reloc_vector, symbols);