diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2005-03-16 21:52:48 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2005-03-16 21:52:48 +0000 |
commit | 57316bff0a1aebca7c9f92d125e5366014f0bb1a (patch) | |
tree | 4a49b5bee243f75a41d85143644c1e99f1ef271b /ld/emultempl/elf32.em | |
parent | 199fea98c99205f0fd3d2d3fd1a2670bdfe8a326 (diff) | |
download | gdb-57316bff0a1aebca7c9f92d125e5366014f0bb1a.zip gdb-57316bff0a1aebca7c9f92d125e5366014f0bb1a.tar.gz gdb-57316bff0a1aebca7c9f92d125e5366014f0bb1a.tar.bz2 |
bfd/
2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
* elflink.c (elf_mark_used_section): New.
(bfd_elf_gc_sections): Call elf_gc_mark_section for
non-relocatable link if we don't do GC.
include/
2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
* bfdlink.h (bfd_link_info): Add gc_sections.
ld/
2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_finish): Remove
unused empty output sections for non-relocatable link.
* ld.h (args_type): Remove gc_sections.
* ldlang.c (lang_mark_used_section): New.
(lang_gc_sections): Use link_info.gc_sections instead of
command_line.gc_sections.
* ldmain.c (main): Likewise.
* lexsup.c (parse_args): Likewise.
* ldlang.c (lang_process): Call lang_mark_used_section.
* ldmain.c (main): Initialize link_info.gc_sections to FALSE.
ld/testsuite/
2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
* ld-alpha/tlsbin.rd: Updated for empty section removal.
* ld-alpha/tlsbinr.rd: Likewise.
* ld-alpha/tlspic.rd: Likewise.
* ld-arm/mixed-lib.sym: Likewise.
* ld-i386/tlsbin.rd: Likewise.
* ld-i386/tlsnopic.rd: Likewise.
* ld-i386/tlspic.rd: Likewise.
* ld-ia64/tlsbin.rd: Likewise.
* ld-ia64/tlspic.rd: Likewise.
* ld-powerpc/apuinfo.rd: Likewise.
* ld-powerpc/powerpc.exp: Likewise.
* ld-powerpc/tlsexe32.r: Likewise.
* ld-s390/tlsbin.rd: Likewise.
* ld-s390/tlsbin_64.rd: Likewise.
* ld-s390/tlspic.rd: Likewise.
* ld-s390/tlspic_64.rd: Likewise.
* ld-sh/tlsbin-2.d: Likewise.
* ld-sh/tlspic-2.d: Likewise.
* ld-sparc/tlssunbin32.rd: Likewise.
* ld-sparc/tlssunnopic32.rd: Likewise.
* ld-sparc/tlssunpic32.rd: Likewise.
* ld-x86-64/tlsbin.rd: Likewise.
* ld-x86-64/tlspic.rd: Likewise.
Diffstat (limited to 'ld/emultempl/elf32.em')
-rw-r--r-- | ld/emultempl/elf32.em | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em index 0f90455..d830959 100644 --- a/ld/emultempl/elf32.em +++ b/ld/emultempl/elf32.em @@ -1441,6 +1441,36 @@ gld${EMULATION_NAME}_finish (void) lang_do_assignments (stat_ptr->head, abs_output_section, (fill_type *) 0, (bfd_vma) 0); } + + if (!link_info.relocatable) + { + lang_output_section_statement_type *os; + + for (os = &lang_output_section_statement.head->output_section_statement; + os != NULL; + os = os->next) + { + asection *s; + + if (os == abs_output_section || os->constraint == -1) + continue; + s = os->bfd_section; + if (s != NULL && s->size == 0 && (s->flags & SEC_KEEP) == 0) + { + asection **p; + + os->bfd_section = NULL; + + for (p = &output_bfd->sections; *p; p = &(*p)->next) + if (*p == s) + { + bfd_section_list_remove (output_bfd, p); + output_bfd->section_count--; + break; + } + } + } + } } EOF fi |