From: Alan Modra Date: Wed, 6 Aug 2008 00:42:17 +0000 (+0000) Subject: binutils/ X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=237dcb538fb06d94108754e4812e49b5b25d4926;p=binutils-gdb.git binutils/ * 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. --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 1023e26b0a4..c968dc81078 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,10 @@ +2008-08-06 Alan Modra + + * 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 * Makefile.am (POTFILES.in): Set LC_ALL=C. diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi index 2ebf3540217..db09d8ae3c3 100644 --- a/binutils/doc/binutils.texi +++ b/binutils/doc/binutils.texi @@ -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. diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 49b022a648c..deff1697e9b 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -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) { diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 93a5e4183f6..717d3385baf 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-08-06 Alan Modra + + * ld-elf/extract-symbol-1sec.d: Update. + 2008-07-30 Nick Clifton * ld-elf/sec-to-seg.exp: New test: Checks the assignment of diff --git a/ld/testsuite/ld-elf/extract-symbol-1sec.d b/ld/testsuite/ld-elf/extract-symbol-1sec.d index 6891abcec26..87d42af9250 100644 --- a/ld/testsuite/ld-elf/extract-symbol-1sec.d +++ b/ld/testsuite/ld-elf/extract-symbol-1sec.d @@ -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