aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2006-08-04 14:53:26 +0000
committerNick Clifton <nickc@redhat.com>2006-08-04 14:53:26 +0000
commitc17d87de17351aed016a9d0b0712cdee4cca5f9e (patch)
tree13f06eeffc7669d44e8c5af57f8e7871ddef110b /ld
parent55e6e39790fd27daea0bf1af3b9a7797c735a79f (diff)
downloadgdb-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.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog9
-rw-r--r--ld/NEWS4
-rw-r--r--ld/ld.texinfo16
-rw-r--r--ld/ldmain.c1
-rw-r--r--ld/lexsup.c14
5 files changed, 42 insertions, 2 deletions
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>
diff --git a/ld/NEWS b/ld/NEWS
index 27fb0ae..4ca2e9b 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -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;