Fix build problem on 32-bit hosts with the recent patch for PR 16821.
authorYuanhui Zhang <asmwarrior@gmail.com>
Tue, 22 Apr 2014 10:00:39 +0000 (11:00 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 22 Apr 2014 10:00:39 +0000 (11:00 +0100)
PR ld/16821
* peXXigen.c (abs_finder): Fix for 32-bit host builds.

bfd/ChangeLog
bfd/peXXigen.c

index b898da8..56c80cc 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-22  Yuanhui Zhang  <asmwarrior@gmail.com>
+
+       PR ld/16821
+       * peXXigen.c (abs_finder): Fix for 32-bit host builds.
+
 2014-04-22  Will Newton  <will.newton@linaro.org>
 
        * elfnn-aarch64.c (elfNN_aarch64_section_flags): Remove
index 36d90cc..56224a8 100644 (file)
@@ -212,7 +212,7 @@ abs_finder (bfd * abfd ATTRIBUTE_UNUSED, asection * sec, void * data)
 {
   bfd_vma abs_val = * (bfd_vma *) data;
 
-  return (sec->vma <= abs_val) && ((sec->vma + (1L << 32)) > abs_val);
+  return (sec->vma <= abs_val) && ((sec->vma + (1LL << 32)) > abs_val);
 }
 
 unsigned int
@@ -3591,6 +3591,7 @@ rsrc_sort_entries (rsrc_dir_chain *  chain,
 
                      /* Unhook NEXT from the chain.  */
                      /* FIXME: memory loss here.  */
+                     /* FIXME: do we need to decrement sizeof_tables_and_entries ?  */
                      entry->next_entry = next->next_entry;
                      chain->num_entries --;
                      if (chain->num_entries < 2)
@@ -3654,6 +3655,7 @@ rsrc_sort_entries (rsrc_dir_chain *  chain,
                }
 
              /* Unhook NEXT from the chain.  */
+             /* FIXME: do we need to decrement sizeof_tables_and_entries ?  */
              entry->next_entry = next->next_entry;
              chain->num_entries --;
              if (chain->num_entries < 2)
@@ -3914,6 +3916,12 @@ rsrc_process_section (bfd * abfd,
   if (new_data == NULL)
     goto end;
 
+  /* We have merged the top level Type Tables of all of the input
+     .rsrc sections into one Type Table.  So we can (and must)
+     reduce the count of the number of tables that we will be
+     emitting appropriately.  */
+  sizeof_tables_and_entries -= 16 * (num_resource_sets - 1);
+
   write_data.abfd        = abfd;
   write_data.datastart   = new_data;
   write_data.next_table  = new_data;