diff options
-rw-r--r-- | ld/ChangeLog | 18 | ||||
-rw-r--r-- | ld/NEWS | 2 | ||||
-rw-r--r-- | ld/ld.h | 3 | ||||
-rw-r--r-- | ld/ld.texi | 8 | ||||
-rw-r--r-- | ld/ldlang.c | 25 | ||||
-rw-r--r-- | ld/ldlex.h | 2 | ||||
-rw-r--r-- | ld/ldmain.c | 1 | ||||
-rw-r--r-- | ld/lexsup.c | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-gc/gc.exp | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-gc/skip-map-discarded.d | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-gc/skip-map-discarded.map | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-gc/skip-map-discarded.s | 5 |
12 files changed, 76 insertions, 12 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 8e6a2d4..c8eda47 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,21 @@ +2019-04-11 Faraz Shahbazker <fshahbazker@wavecomp.com> + + * NEWS: Mention new option --no-print-map-discarded. + * ld.h (ld_config_type) <print_map_discarded>: New field. + * ldlang.c (lang_map): Conditionally output discarded sections + in map files based on configuration option. + * ldlex.h (option_values) <OPTION_PRINT_MAP_DISCARDED, + OPTION_NO_PRINT_MAP_DISCARDED>: New. + * ldmain.c (main): Enabled print_map_discarded by default. + * lexsup.c (ld_options): Add new command-line options. + (parse_args) <OPTION_NO_PRINT_MAP_DISCARDED, + OPTION_PRINT_MAP_DISCARDED>: New cases. + * ld.texi: Document new options. + * testsuite/ld-gc/gc.exp: Add new test. + * testsuite/ld-gc/skip-map-discarded.s: New file. + * testsuite/ld-gc/skip-map-discarded.d: New file. + * testsuite/ld-gc/skip-map-discarded.map: New file. + 2019-04-11 H.J. Lu <hongjiu.lu@intel.com> * ld.texi: Document -z cet-report=[none|warning|error]. @@ -1,5 +1,7 @@ -*- text -*- +* Add command-line option --no-print-map-discarded. + Changes in 2.33: * Add target handlers for AArch64 for ELF GNU program properties. @@ -318,6 +318,9 @@ typedef struct /* The common page size for ELF. */ bfd_vma commonpagesize; + + /* If set, print discarded sections in map file output. */ + bfd_boolean print_map_discarded; } ld_config_type; extern ld_config_type config; @@ -783,6 +783,14 @@ when merging properties in @file{foo.o}, whose 0xc0010001 property value is 0x1, and @file{bar.o}, whose 0xc0010001 property value is 0x1. @end itemize +@cindex link map discarded +@kindex --print-map-discarded +@kindex --no-print-map-discarded +@item --print-map-discarded +@itemx --no-print-map-discarded +Print (or do not print) the list of discarded and garbage collected sections +in the link map. Enabled by default. + @kindex -n @cindex read-only text @cindex NMAGIC diff --git a/ld/ldlang.c b/ld/ldlang.c index 1952d4a..898735e 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -2251,19 +2251,20 @@ lang_map (void) || file->flags.just_syms) continue; - for (s = file->the_bfd->sections; s != NULL; s = s->next) - if ((s->output_section == NULL - || s->output_section->owner != link_info.output_bfd) - && (s->flags & (SEC_LINKER_CREATED | SEC_KEEP)) == 0) - { - if (!dis_header_printed) - { - fprintf (config.map_file, _("\nDiscarded input sections\n\n")); - dis_header_printed = TRUE; - } + if (config.print_map_discarded) + for (s = file->the_bfd->sections; s != NULL; s = s->next) + if ((s->output_section == NULL + || s->output_section->owner != link_info.output_bfd) + && (s->flags & (SEC_LINKER_CREATED | SEC_KEEP)) == 0) + { + if (! dis_header_printed) + { + fprintf (config.map_file, _("\nDiscarded input sections\n\n")); + dis_header_printed = TRUE; + } - print_input_section (s, TRUE); - } + print_input_section (s, TRUE); + } } minfo (_("\nMemory Configuration\n\n")); @@ -148,6 +148,8 @@ enum option_values OPTION_REQUIRE_DEFINED_SYMBOL, OPTION_ORPHAN_HANDLING, OPTION_FORCE_GROUP_ALLOCATION, + OPTION_PRINT_MAP_DISCARDED, + OPTION_NO_PRINT_MAP_DISCARDED, }; /* The initial parser states. */ diff --git a/ld/ldmain.c b/ld/ldmain.c index 77cdbd0..da1c6a7 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -264,6 +264,7 @@ main (int argc, char **argv) config.make_executable = TRUE; config.magic_demand_paged = TRUE; config.text_read_only = TRUE; + config.print_map_discarded = TRUE; link_info.disable_target_specific_optimizations = -1; command_line.warn_mismatch = TRUE; diff --git a/ld/lexsup.c b/ld/lexsup.c index 88e85c7..dacb962 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -543,6 +543,12 @@ static const struct ld_option ld_options[] = { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, '\0', N_("=MODE"), N_("Control how orphan sections are handled."), TWO_DASHES }, + { {"print-map-discarded", no_argument, NULL, OPTION_PRINT_MAP_DISCARDED}, + '\0', NULL, N_("Show discarded sections in map file output (default)"), + TWO_DASHES }, + { {"no-print-map-discarded", no_argument, NULL, OPTION_NO_PRINT_MAP_DISCARDED}, + '\0', NULL, N_("Do not show discarded sections in map file output"), + TWO_DASHES }, }; #define OPTION_COUNT ARRAY_SIZE (ld_options) @@ -1577,6 +1583,14 @@ parse_args (unsigned argc, char **argv) einfo (_("%F%P: invalid argument to option" " \"--orphan-handling\"\n")); break; + + case OPTION_NO_PRINT_MAP_DISCARDED: + config.print_map_discarded = FALSE; + break; + + case OPTION_PRINT_MAP_DISCARDED: + config.print_map_discarded = TRUE; + break; } } diff --git a/ld/testsuite/ld-gc/gc.exp b/ld/testsuite/ld-gc/gc.exp index 536356c..13968cc 100644 --- a/ld/testsuite/ld-gc/gc.exp +++ b/ld/testsuite/ld-gc/gc.exp @@ -171,3 +171,5 @@ if { [is_elf_format] && [check_shared_lib_support] \ ] run_dump_test "pr20306" } + +run_dump_test "skip-map-discarded" diff --git a/ld/testsuite/ld-gc/skip-map-discarded.d b/ld/testsuite/ld-gc/skip-map-discarded.d new file mode 100644 index 0000000..2e79f0b --- /dev/null +++ b/ld/testsuite/ld-gc/skip-map-discarded.d @@ -0,0 +1,3 @@ +#name: Check --no-print-map-discarded linker option +#ld: -e 0 --gc-sections --no-print-map-discarded +#map: skip-map-discarded.map diff --git a/ld/testsuite/ld-gc/skip-map-discarded.map b/ld/testsuite/ld-gc/skip-map-discarded.map new file mode 100644 index 0000000..ca4818e --- /dev/null +++ b/ld/testsuite/ld-gc/skip-map-discarded.map @@ -0,0 +1,5 @@ +#failif +Discarded input sections +#... + _foo.* +#... diff --git a/ld/testsuite/ld-gc/skip-map-discarded.s b/ld/testsuite/ld-gc/skip-map-discarded.s new file mode 100644 index 0000000..630aab0 --- /dev/null +++ b/ld/testsuite/ld-gc/skip-map-discarded.s @@ -0,0 +1,5 @@ +.globl __start +__start: + .section _foo +foo: + .long 1 |