Tue May 10 18:22:06 1994 Jason Molenda (crash@sendai.cygnus.com)
authorJason Molenda <crash@cygnus>
Wed, 11 May 1994 01:28:18 +0000 (01:28 +0000)
committerJason Molenda <crash@cygnus>
Wed, 11 May 1994 01:28:18 +0000 (01:28 +0000)
        * objcopy.c (copy_section): Set section size correctly if using
        interleave.

binutils/ChangeLog
binutils/objcopy.c

index f932e4de27807de42880f75381b0ad2c78ecadd9..ce0677f1b5b2906140137e8ccfd4153e2d98b6fa 100644 (file)
@@ -1,3 +1,27 @@
+Tue May 10 18:22:06 1994  Jason Molenda    (crash@sendai.cygnus.com)
+
+       * objcopy.c (copy_section): Set section size correctly if using
+       interleave.
+
+Sat May  7 16:49:36 1994  Steve Chamberlain  (sac@cygnus.com)
+
+       * Makefile.in: Add rule for sysinfo.h
+
+Fri May  6 12:18:33 1994  Steve Chamberlain  (sac@cygnus.com)
+
+       * Makefile.in (SRCONV_PROG): Define.
+       (PROGS): Use $(SRCONV_PROG) too.
+
+Thu May  5 19:41:43 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)
+
+       * Makefile.in (DISTSTUFF): Add sysinfo.c, syslex.c, in case
+       someone configures with `targets=all'.
+       (distclean): Remove y.*.
+       (syslex.o): Depend on sysinfo.h.
+       (sysinfo.c): Rename y.tab.h to sysinfo.h.
+       (install-info): Don't try to install into $(infodir)/$(srcdir).
+       * syslex.l: Include sysinfo.h, not y.tab.h.
+
 Thu May  5 11:50:55 1994  Ken Raeburn  (raeburn@kr-pc.cygnus.com)
 
        * syslex.l (yywrap): Define as function if not defined as a macro.
index 4572626f3a08dbbb86f911a12946eb75580f8828..2700207f92f326d6d3b59d4bffd2f4571976b27c 100644 (file)
@@ -267,17 +267,6 @@ copy_object (ibfd, obfd)
   if (osympp != isympp)
     free (osympp);
 
-  /* Allow the BFD backend to copy any private data it understands
-     from the input BFD to the output BFD.  */
-  if (!bfd_copy_private_bfd_data (ibfd, obfd))
-    {
-      fprintf (stderr, "%s: %s: error copying private BFD data: %s\n",
-              program_name, bfd_get_filename (obfd),
-              bfd_errmsg (bfd_get_error ()));
-      status = 1;
-      return;
-    }
-
   /* bfd mandates that all output sections be created and sizes set before
      any output is done.  Thus, we traverse all sections multiple times.  */
   bfd_map_over_sections (ibfd, setup_section, (void *) obfd);
@@ -328,6 +317,19 @@ copy_object (ibfd, obfd)
 
   /* This has to happen after the symbol table has been set.  */
   bfd_map_over_sections (ibfd, copy_section, (void *) obfd);
+
+  /* Allow the BFD backend to copy any private data it understands
+     from the input BFD to the output BFD.  This is done last to
+     permit the routine to look at the filtered symbol table, which is
+     important for the ECOFF code at least.  */
+  if (!bfd_copy_private_bfd_data (ibfd, obfd))
+    {
+      fprintf (stderr, "%s: %s: error copying private BFD data: %s\n",
+              program_name, bfd_get_filename (obfd),
+              bfd_errmsg (bfd_get_error ()));
+      status = 1;
+      return;
+    }
 }
 
 static char *
@@ -629,8 +631,13 @@ copy_section (ibfd, isection, obfd)
          nonfatal (bfd_get_filename (ibfd));
        }
 
-      if (copy_byte >= 0)
-       filter_bytes (memhunk, &size);
+      if (copy_byte >= 0) 
+        {
+         filter_bytes (memhunk, &size);
+              /* The section has gotten smaller. */
+          if (!bfd_set_section_size (obfd, osection, size))
+            nonfatal (bfd_get_filename (obfd));
+        }
 
       if (!bfd_set_section_contents (obfd, osection, memhunk, (file_ptr) 0,
                                     size))