2007-11-13 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 13 Nov 2007 20:17:43 +0000 (20:17 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 13 Nov 2007 20:17:43 +0000 (20:17 +0000)
PR binutils/5307
* peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Don't
copy input subsystem if output is different from input.

bfd/ChangeLog
bfd/peXXigen.c

index 6a7fe8dcb9cab84415c1d949096d17300de13908..d9470a26455386d398ef9d90f953e6c73f2aa52f 100644 (file)
@@ -1,3 +1,9 @@
+2007-11-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR binutils/5307
+       * peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Don't
+       copy input subsystem if output is different from input.
+
 2007-11-13  Nick Clifton  <nickc@redhat.com>
 
        * elf-m10300.c (mn10300_elf_final_link_relocate): Prevent the
index 2d09561e33b1ef25e66d0a36228cb1377d879603..ddba2354df5cdadce83cc6caa87ec5b74ca1f2e0 100644 (file)
@@ -1987,13 +1987,22 @@ _bfd_XX_print_private_bfd_data_common (bfd * abfd, void * vfile)
 bfd_boolean
 _bfd_XX_bfd_copy_private_bfd_data_common (bfd * ibfd, bfd * obfd)
 {
+  pe_data_type *ipe, *ope;
+
   /* One day we may try to grok other private data.  */
   if (ibfd->xvec->flavour != bfd_target_coff_flavour
       || obfd->xvec->flavour != bfd_target_coff_flavour)
     return TRUE;
 
-  pe_data (obfd)->pe_opthdr = pe_data (ibfd)->pe_opthdr;
-  pe_data (obfd)->dll = pe_data (ibfd)->dll;
+  ipe = pe_data (ibfd);
+  ope = pe_data (obfd);
+  ope->pe_opthdr = ipe->pe_opthdr;
+  ope->dll = ipe->dll;
+
+  /* Don't copy input subsystem if output is different from input.  */
+  if (obfd->xvec != ibfd->xvec)
+    ope->pe_opthdr.Subsystem = IMAGE_SUBSYSTEM_UNKNOWN;
 
   /* For strip: if we removed .reloc, we'll make a real mess of things
      if we don't remove this entry as well.  */