alpha_ecoff_get_relocated_section_contents
authorAlan Modra <amodra@gmail.com>
Mon, 15 Feb 2021 01:30:48 +0000 (12:00 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 15 Feb 2021 03:04:08 +0000 (13:34 +1030)
Use bfd_get_full_section_contents and tidy the start of this function
to match current generic get_relocated_section_contents.

* coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Use
bfd_get_full_section_contents.

bfd/ChangeLog
bfd/coff-alpha.c

index 3563b65d8ff91e67ae03cd792b89e40db99765d1..7ff7eb0f26cd212f6e8bd006e89ec8569c41b001 100644 (file)
@@ -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
index db26587feae55c1bbcc799b12a1df0b07a1f4de3..8031ab9590274ff1ae68b7dea55adb35ba626610 100644 (file)
@@ -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);