diff options
author | Nick Clifton <nickc@redhat.com> | 2006-08-04 14:53:26 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2006-08-04 14:53:26 +0000 |
commit | c17d87de17351aed016a9d0b0712cdee4cca5f9e (patch) | |
tree | 13f06eeffc7669d44e8c5af57f8e7871ddef110b | |
parent | 55e6e39790fd27daea0bf1af3b9a7797c735a79f (diff) | |
download | gdb-c17d87de17351aed016a9d0b0712cdee4cca5f9e.zip gdb-c17d87de17351aed016a9d0b0712cdee4cca5f9e.tar.gz gdb-c17d87de17351aed016a9d0b0712cdee4cca5f9e.tar.bz2 |
* ldmain.c (main): Initialise print_gc_sections field of link_info structure.
* lexsup.c: Add --print-gc-sections and --no-print-gc-sections switches.
* ld.texinfo: Document new switches.
* NEWS: Mention new switches.
* bfdlink.h (struct bfd_link_info): New field: print_gc_sections.
* elflink.c (elf_gc_sweep): If info.print_gc_sections is true, list removed sections to stderr.
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elflink.c | 6 | ||||
-rw-r--r-- | include/ChangeLog | 4 | ||||
-rw-r--r-- | include/bfdlink.h | 3 | ||||
-rw-r--r-- | ld/ChangeLog | 9 | ||||
-rw-r--r-- | ld/NEWS | 4 | ||||
-rw-r--r-- | ld/ld.texinfo | 16 | ||||
-rw-r--r-- | ld/ldmain.c | 1 | ||||
-rw-r--r-- | ld/lexsup.c | 14 |
9 files changed, 59 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 401c6b3..0ba154d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2006-08-04 Marcelo Tosatti <marcelo@kvack.org> + + * elflink.c (elf_gc_sweep): If info.print_gc_sections is true, + list removed sections to stderr. + 2006-08-04 Richard Sandiford <richard@codesourcery.com> Kazu Hirata <kazu@codesourcery.com> Phil Edwards <phil@codesourcery.com> diff --git a/bfd/elflink.c b/bfd/elflink.c index 99f0acc..ba0e77e 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -9356,7 +9356,8 @@ _bfd_elf_gc_mark (struct bfd_link_info *info, /* Sweep symbols in swept sections. Called via elf_link_hash_traverse. */ -struct elf_gc_sweep_symbol_info { +struct elf_gc_sweep_symbol_info +{ struct bfd_link_info *info; void (*hide_symbol) (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean); @@ -9419,6 +9420,9 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info) to remove a section from the output. */ o->flags |= SEC_EXCLUDE; + if (info->print_gc_sections == TRUE) + _bfd_error_handler (_("Removing unused section '%s' in file '%B'"), sub, o->name); + /* But we also have to update some of the relocation info we collected before. */ if (gc_sweep_hook diff --git a/include/ChangeLog b/include/ChangeLog index 75f1ed2..5140f8d 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2006-08-04 Marcelo Tosatti <marcelo@kvack.org> + + * bfdlink.h (struct bfd_link_info): New field: print_gc_sections. + 2006-07-10 Jakub Jelinek <jakub@redhat.com> * bfdlink.h (struct bfd_link_info): Add emit_hash and diff --git a/include/bfdlink.h b/include/bfdlink.h index 761bd05..bbedd60 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -324,6 +324,9 @@ struct bfd_link_info /* TRUE if unreferenced sections should be removed. */ unsigned int gc_sections: 1; + /* TRUE if user shoudl be informed of removed unreferenced sections. */ + unsigned int print_gc_sections: 1; + /* TRUE if .hash section should be created. */ unsigned int emit_hash: 1; diff --git a/ld/ChangeLog b/ld/ChangeLog index 4512965..1ee78d4 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,12 @@ +2006-08-04 Marcelo Tosatti <marcelo@kvack.org> + + * ldmain.c (main): Initialise print_gc_sections field of link_info + structure. + * lexsup.c: Add --print-gc-sections and --no-print-gc-sections + switches. + * ld.texinfo: Document new switches. + * NEWS: Mention new switches. + 2006-08-04 Richard Sandiford <richard@codesourcery.com> Kazu Hirata <kazu@codesourcery.com> Phil Edwards <phil@codesourcery.com> @@ -1,4 +1,8 @@ -*- text -*- +* New switch: --print-gc-sections to list any sections removed by garabge + collection. + +Changes in 2.17: * Support for the Infineon XC16X has been added by KPIT Cummins Infosystems. diff --git a/ld/ld.texinfo b/ld/ld.texinfo index f3d9580..835482d 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -1230,14 +1230,26 @@ it ends in a @code{.exe} suffix. @kindex --gc-sections @kindex --no-gc-sections @cindex garbage collection -@item --no-gc-sections -@itemx --gc-sections +@item --gc-sections +@itemx --no-gc-sections Enable garbage collection of unused input sections. It is ignored on targets that do not support this option. This option is not compatible with @samp{-r}. The default behaviour (of not performing this garbage collection) can be restored by specifying @samp{--no-gc-sections} on the command line. +@kindex --print-gc-sections +@kindex --no-print-gc-sections +@cindex garbage collection +@item --print-gc-sections +@itemx --no-print-gc-sections +List all sections removed by garbage collection. The listing is +printed on stderr. This option is only effective if garbage +collection has been enabled via the @samp{--gc-sections}) option. The +default behaviour (of not listing the sections that are removed) can +be restored by specifying @samp{--no-print-gc-sections} on the command +line. + @cindex help @cindex usage @kindex --help diff --git a/ld/ldmain.c b/ld/ldmain.c index cb56a8d..4dab0d6 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -318,6 +318,7 @@ main (int argc, char **argv) link_info.relax_pass = 1; link_info.warn_shared_textrel = FALSE; link_info.gc_sections = FALSE; + link_info.print_gc_sections = FALSE; config.maxpagesize = 0; config.commonpagesize = 0; diff --git a/ld/lexsup.c b/ld/lexsup.c index c2bef1d..4d526b0 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -124,6 +124,8 @@ enum option_values OPTION_FORCE_EXE_SUFFIX, OPTION_GC_SECTIONS, OPTION_NO_GC_SECTIONS, + OPTION_PRINT_GC_SECTIONS, + OPTION_NO_PRINT_GC_SECTIONS, OPTION_HASH_SIZE, OPTION_CHECK_SECTIONS, OPTION_NO_CHECK_SECTIONS, @@ -370,6 +372,12 @@ static const struct ld_option ld_options[] = { {"no-gc-sections", no_argument, NULL, OPTION_NO_GC_SECTIONS}, '\0', NULL, N_("Don't remove unused sections (default)"), TWO_DASHES }, + { {"print-gc-sections", no_argument, NULL, OPTION_PRINT_GC_SECTIONS}, + '\0', NULL, N_("List removed unused sections on stderr"), + TWO_DASHES }, + { {"no-print-gc-sections", no_argument, NULL, OPTION_NO_PRINT_GC_SECTIONS}, + '\0', NULL, N_("Do not list removed unused sections"), + TWO_DASHES }, { {"hash-size=<NUMBER>", required_argument, NULL, OPTION_HASH_SIZE}, '\0', NULL, N_("Set default hash table size close to <NUMBER>"), TWO_DASHES }, @@ -812,6 +820,9 @@ parse_args (unsigned argc, char **argv) case OPTION_GC_SECTIONS: link_info.gc_sections = TRUE; break; + case OPTION_PRINT_GC_SECTIONS: + link_info.print_gc_sections = TRUE; + break; case OPTION_HELP: help (); xexit (0); @@ -855,6 +866,9 @@ parse_args (unsigned argc, char **argv) case OPTION_NO_GC_SECTIONS: link_info.gc_sections = FALSE; break; + case OPTION_NO_PRINT_GC_SECTIONS: + link_info.print_gc_sections = FALSE; + break; case OPTION_NO_KEEP_MEMORY: link_info.keep_memory = FALSE; break; |