* elf32-ppc.c (ppc_elf_begin_write_processing): Use bytes to count
authorMark Mitchell <mark@codesourcery.com>
Tue, 24 Jun 2003 06:41:36 +0000 (06:41 +0000)
committerMark Mitchell <mark@codesourcery.com>
Tue, 24 Jun 2003 06:41:36 +0000 (06:41 +0000)
APUinfo slots.
(ppc_elf_final_write_processing): Likewise.

bfd/ChangeLog
bfd/elf32-ppc.c

index 1e81fd7bb681f43c9876fce515580b6cd72a65eb..012f8f6413fb86dd510b2db8479abe6a9513b213 100644 (file)
@@ -1,3 +1,9 @@
+2003-06-23  Mark Mitchell  <mark@codesourcery.com>
+
+       * elf32-ppc.c (ppc_elf_begin_write_processing): Use bytes to count
+       APUinfo slots.
+       (ppc_elf_final_write_processing): Likewise.
+
 2003-06-23  H.J. Lu <hongjiu.lu@intel.com>
 
        * elflink.h (elf_link_input_bfd): Check raw size when using
index d2cbd836f4038641ab160fe84c5fc20c76bc45b8..a60015dfb3f28c0dfcf86c50ba30c0221f5f1352 100644 (file)
@@ -5721,9 +5721,9 @@ ppc_elf_begin_write_processing (abfd, link_info)
       if (strcmp (ptr + 12, APUINFO_LABEL) != 0)
        goto fail;
 
-      /* Get the number of apuinfo entries.  */
+      /* Get the number of bytes used for apuinfo entries.  */
       datum = bfd_get_32 (ibfd, ptr + 4);
-      if ((datum * 4 + 20) != length)
+      if (datum + 20 != length)
        goto fail;
 
       /* Make sure that we do not run off the end of the section.  */
@@ -5731,8 +5731,8 @@ ppc_elf_begin_write_processing (abfd, link_info)
        goto fail;
 
       /* Scan the apuinfo section, building a list of apuinfo numbers.  */
-      for (i = 0; i < datum; i++)
-       apuinfo_list_add (bfd_get_32 (ibfd, ptr + 20 + (i * 4)));
+      for (i = 0; i < datum; i += 4)
+       apuinfo_list_add (bfd_get_32 (ibfd, ptr + 20 + i));
 
       /* Update the offset.  */
       offset += length;
@@ -5808,7 +5808,7 @@ ppc_elf_final_write_processing (abfd, linker)
   /* Create the apuinfo header.  */
   num_entries = apuinfo_list_length ();
   bfd_put_32 (abfd, sizeof APUINFO_LABEL, buffer);
-  bfd_put_32 (abfd, num_entries, buffer + 4);
+  bfd_put_32 (abfd, num_entries * 4, buffer + 4);
   bfd_put_32 (abfd, 0x2, buffer + 8);
   strcpy (buffer + 12, APUINFO_LABEL);