diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2006-04-04 08:52:21 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@libertysurf.fr> | 2006-04-04 08:52:21 +0000 |
commit | a8fa9322fee96508ed6a66ccdf66a886f4a4cd75 (patch) | |
tree | e0f58013743c699e52c5c7ed07834ac3542df85e | |
parent | 462cd0c4859dd0cce72fc61bff61ca6a4d8996e5 (diff) | |
download | binutils-redhat-a8fa9322fee96508ed6a66ccdf66a886f4a4cd75.tar.gz |
* ldlang.c (lang_map): Print the list of discarded input sections.
(print_input_section): Change parameter and print zero-sized sections.
(print_statement): Adjust call to print_input_section.
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/ldlang.c | 35 |
2 files changed, 35 insertions, 6 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 1835d11554..690298e417 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2006-04-04 Eric Botcazou <ebotcazou@adacore.com> + + * ldlang.c (lang_map): Print the list of discarded input sections. + (print_input_section): Change parameter and print zero-sized sections. + (print_statement): Adjust call to print_input_section. + 2006-04-01 Danny Smith <dannysmith@users.sourceforge.net> * deffilep.y (def_image_name): If LIBRARY or NAME statement diff --git a/ld/ldlang.c b/ld/ldlang.c index f6d849e19c..66219f0bc3 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -81,6 +81,7 @@ static void print_statement (lang_statement_union_type *, static void print_statement_list (lang_statement_union_type *, lang_output_section_statement_type *); static void print_statements (void); +static void print_input_section (asection *); static bfd_boolean lang_one_common (struct bfd_link_hash_entry *, void *); static void lang_record_phdrs (void); static void lang_do_version_exports_section (void); @@ -1596,8 +1597,31 @@ void lang_map (void) { lang_memory_region_type *m; + bfd_boolean dis_header_printed = FALSE; bfd *p; + LANG_FOR_EACH_INPUT_STATEMENT (file) + { + asection *s; + + if ((file->the_bfd->flags & (BFD_LINKER_CREATED | DYNAMIC)) != 0 + || file->just_syms_flag) + continue; + + for (s = file->the_bfd->sections; s != NULL; s = s->next) + if (s->output_section == NULL + || s->output_section->owner != output_bfd) + { + if (! dis_header_printed) + { + fprintf (config.map_file, _("\nDiscarded input sections\n\n")); + dis_header_printed = TRUE; + } + + print_input_section (s); + } + } + minfo (_("\nMemory Configuration\n\n")); fprintf (config.map_file, "%-16s %-18s %-18s %s\n", _("Name"), _("Origin"), _("Length"), _("Attributes")); @@ -3475,13 +3499,12 @@ print_all_symbols (sec) /* Print information about an input section to the map file. */ static void -print_input_section (lang_input_section_type *in) +print_input_section (asection *i) { - asection *i = in->section; bfd_size_type size = i->size; init_opb (); - if (size != 0) + { int len; bfd_vma addr; @@ -3501,7 +3524,7 @@ print_input_section (lang_input_section_type *in) ++len; } - if (i->output_section != NULL && (i->flags & SEC_EXCLUDE) == 0) + if (i->output_section != NULL && i->output_section->owner == output_bfd) addr = i->output_section->vma + i->output_offset; else { @@ -3528,7 +3551,7 @@ print_input_section (lang_input_section_type *in) minfo (_("%W (size before relaxing)\n"), i->rawsize); } - if (i->output_section != NULL && (i->flags & SEC_EXCLUDE) == 0) + if (i->output_section != NULL && i->output_section->owner == output_bfd) { if (command_line.reduce_memory_overheads) bfd_link_hash_traverse (link_info.hash, print_one_symbol, i); @@ -3797,7 +3820,7 @@ print_statement (lang_statement_union_type *s, print_reloc_statement (&s->reloc_statement); break; case lang_input_section_enum: - print_input_section (&s->input_section); + print_input_section (s->input_section.section); break; case lang_padding_statement_enum: print_padding_statement (&s->padding_statement); |