binutils/
authorAlan Modra <amodra@gmail.com>
Wed, 6 Aug 2008 00:42:17 +0000 (00:42 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 6 Aug 2008 00:42:17 +0000 (00:42 +0000)
* objcopy.c (copy_object): Don't setup_bfd_headers when extract_symbol.
(setup_section): Don't zero vma and lma when extract_symbol.
(copy_section): Discard relocations when extract_symbol.
* doc/binutils.texi: Update --extract-symbol description.
ld/testsuite/
* ld-elf/extract-symbol-1sec.d: Update.

binutils/ChangeLog
binutils/doc/binutils.texi
binutils/objcopy.c
ld/testsuite/ChangeLog
ld/testsuite/ld-elf/extract-symbol-1sec.d

index 1023e26..c968dc8 100644 (file)
@@ -1,3 +1,10 @@
+2008-08-06  Alan Modra  <amodra@bigpond.net.au>
+
+       * objcopy.c (copy_object): Don't setup_bfd_headers when extract_symbol.
+       (setup_section): Don't zero vma and lma when extract_symbol.
+       (copy_section): Discard relocations when extract_symbol.
+       * doc/binutils.texi: Update --extract-symbol description.
+
 2008-08-04  Alan Modra  <amodra@bigpond.net.au>
 
        * Makefile.am (POTFILES.in): Set LC_ALL=C.
index 2ebf354..db09d8a 100644 (file)
@@ -1540,7 +1540,6 @@ Keep the file's section flags and symbols but remove all section data.
 Specifically, the option:
 
 @itemize
-@item sets the virtual and load addresses of every section to zero;
 @item removes the contents of all sections;
 @item sets the size of every section to zero; and
 @item sets the file's start address to zero.
index 49b022a..deff169 100644 (file)
@@ -1461,7 +1461,8 @@ copy_object (bfd *ibfd, bfd *obfd)
      any output is done.  Thus, we traverse all sections multiple times.  */
   bfd_map_over_sections (ibfd, setup_section, obfd);
 
-  setup_bfd_headers (ibfd, obfd);
+  if (!extract_symbol)
+    setup_bfd_headers (ibfd, obfd);
 
   if (add_sections != NULL)
     {
@@ -2298,7 +2299,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
   else
     vma += change_section_address;
 
-  if (! bfd_set_section_vma (obfd, osection, extract_symbol ? 0 : vma))
+  if (! bfd_set_section_vma (obfd, osection, vma))
     {
       err = _("failed to set vma");
       goto loser;
@@ -2317,7 +2318,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
   else
     lma += change_section_address;
 
-  osection->lma = extract_symbol ? 0 : lma;
+  osection->lma = lma;
 
   /* FIXME: This is probably not enough.  If we change the LMA we
      may have to recompute the header for the file as well.  */
@@ -2336,7 +2337,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
      bfd_get_section_by_name since some formats allow multiple
      sections with the same name.  */
   isection->output_section = osection;
-  isection->output_offset = extract_symbol ? vma : 0;
+  isection->output_offset = 0;
 
   /* Do not copy backend data if --extract-symbol is passed; anything
      that needs to look at the section contents will fail.  */
@@ -2400,6 +2401,9 @@ copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
   if (size == 0 || osection == 0)
     return;
 
+  if (extract_symbol)
+    return;
+
   p = find_section_list (bfd_get_section_name (ibfd, isection), FALSE);
 
   /* Core files do not need to be relocated.  */
@@ -2460,9 +2464,6 @@ copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
        free (relpp);
     }
 
-  if (extract_symbol)
-    return;
-
   if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS
       && bfd_get_section_flags (obfd, osection) & SEC_HAS_CONTENTS)
     {
index 93a5e41..717d338 100644 (file)
@@ -1,3 +1,7 @@
+2008-08-06  Alan Modra  <amodra@bigpond.net.au>
+
+       * ld-elf/extract-symbol-1sec.d: Update.
+
 2008-07-30  Nick Clifton  <nickc@redhat.com>
 
        * ld-elf/sec-to-seg.exp: New test: Checks the assignment of
index 6891abc..87d42af 100644 (file)
@@ -7,7 +7,7 @@
 #...
 Sections:
  *Idx +Name +Size +VMA +LMA .*
- *0 +\.foo +0+ +0+ +0+ .*
+ *0 +\.foo +0+ +0+10000 +0+10000 .*
  *CONTENTS, ALLOC, LOAD, CODE
- *1 +\.bar +0+ +0+ +0+ .*
+ *1 +\.bar +0+ +0+20000 +0+20000 .*
  *ALLOC, READONLY, CODE