* 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.
This commit is contained in:
Nick Clifton 2006-08-04 14:53:26 +00:00
parent 55e6e39790
commit c17d87de17
9 changed files with 59 additions and 3 deletions

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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>

View File

@ -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.

View File

@ -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

View File

@ -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;

View File

@ -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;