Prevent problems with section alignment by not shrinking the .rsrc section.
authorJon Turney <jon.turney@dronecode.org.uk>
Fri, 25 Nov 2016 09:47:31 +0000 (09:47 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 25 Nov 2016 09:47:31 +0000 (09:47 +0000)
PR ld/20193
* peXXigen.c (rsrc_process_section): Do not shrink the merged
.rsrc section.

bfd/ChangeLog
bfd/peXXigen.c

index a6808964df512ba847f9cfeca3bc65a43d6ddb1b..0d797647768bdca4a77a6a48716182b4110cd354 100644 (file)
@@ -1,3 +1,9 @@
+2016-11-25  Jon Turney  <jon.turney@dronecode.org.uk>
+
+       PR ld/20193
+       * peXXigen.c (rsrc_process_section): Do not shrink the merged
+       .rsrc section.
+
 2016-11-24  Jiong Wang  <jiong.wang@arm.com>
 
        PR target/20737
index 0bbd2000865c7fe5f791b45cfe935cd0ab9ce00b..3a16ef068a626312b988e2cf153c6c6a6d0f4d11 100644 (file)
@@ -4319,26 +4319,8 @@ rsrc_process_section (bfd * abfd,
   rsrc_write_directory (& write_data, & new_table);
 
   /* Step five: Replace the old contents with the new.
-     We recompute the size as we may have lost entries due to mergeing.  */
-  size = ((write_data.next_data - new_data) + 3) & ~ 3;
-
-  {
-    int page_size;
-
-    if (coff_data (abfd)->link_info)
-      {
-       page_size = pe_data (abfd)->pe_opthdr.FileAlignment;
-
-       /* If no file alignment has been set, default to one.
-          This repairs 'ld -r' for arm-wince-pe target.  */
-       if (page_size == 0)
-         page_size = 1;
-      }
-    else
-      page_size = PE_DEF_FILE_ALIGNMENT;
-    size = (size + page_size - 1) & - page_size;
-  }
-
+     We don't recompute the size as it's too late here to shrink section.
+     See PR ld/20193 for more details.  */
   bfd_set_section_contents (pfinfo->output_bfd, sec, new_data, 0, size);
   sec->size = sec->rawsize = size;