Correct printed value of Main in mmo.c consistency error message.
authorHans-Peter Nilsson <hp@bitrange.com>
Tue, 20 Oct 2015 04:56:33 +0000 (06:56 +0200)
committerHans-Peter Nilsson <hp@bitrange.com>
Tue, 20 Oct 2015 04:56:33 +0000 (06:56 +0200)
bfd/ChangeLog
bfd/mmo.c

index b9a83c5391a40d3b88c8ca819b785e7645c7f0ae..862664a44df8242cab5a052a1a9fe84a9c25f73b 100644 (file)
@@ -1,3 +1,8 @@
+2015-10-20  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       * mmo.c (mmo_write_symbols_and_terminator): Correct printed value
+       of Main in error message.
+
 2015-10-18  Doug Evans  <xdje42@gmail.com>
 
        * targets.c (bfd_flavour_name): "MMO" is spelled "mmo".
index b269ffba6036d3fc2b3b172fc33c44bdf537e83b..484a370fd9f00b1a521d21c3cfa5b12a0882536f 100644 (file)
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -2896,16 +2896,17 @@ mmo_write_symbols_and_terminator (bfd *abfd)
        && (table[i]->flags & (BSF_DEBUGGING|BSF_GLOBAL)) == BSF_GLOBAL)
       {
        asymbol *mainsym = table[i];
-       memcpy (table + 1, orig_table, i * sizeof (asymbol *));
+       bfd_vma mainvalue
+         = (mainsym->value
+            + mainsym->section->output_section->vma
+            + mainsym->section->output_offset);
+         memcpy (table + 1, orig_table, i * sizeof (asymbol *));
        table[0] = mainsym;
 
        /* Check that the value assigned to :Main is the same as the entry
           address.  The default linker script asserts this.  This is as
           good a place as any to check this consistency. */
-       if ((mainsym->value
-            + mainsym->section->output_section->vma
-            + mainsym->section->output_offset)
-           != bfd_get_start_address (abfd))
+       if (mainvalue != bfd_get_start_address (abfd))
          {
            /* Arbitrary buffer to hold the printable representation of a
               vma.  */
@@ -2913,7 +2914,7 @@ mmo_write_symbols_and_terminator (bfd *abfd)
            char vmas_start[40];
            bfd_vma vma_start = bfd_get_start_address (abfd);
 
-           sprintf_vma (vmas_main, mainsym->value);
+           sprintf_vma (vmas_main, mainvalue);
            sprintf_vma (vmas_start, vma_start);
 
            (*_bfd_error_handler)