diff options
author | Alan Modra <amodra@bigpond.net.au> | 2005-06-29 14:05:21 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2005-06-29 14:05:21 +0000 |
commit | b938ea7a93b02109d1373012e4574095547d924b (patch) | |
tree | c9cd0548ce0c4a9a20eb3748c796c2eaa9825313 /bfd/section.c | |
parent | 32dd33381c38b6aab84bda91ba574edbfe083765 (diff) | |
download | binutils-redhat-b938ea7a93b02109d1373012e4574095547d924b.tar.gz |
* elflink.c (_bfd_elf_gc_mark): Mark sections referenced by
.eh_frame specially..
(bfd_elf_gc_sections): ..rather than totally ignoring .eh_frame.
Don't recheck sections we have already marked.
(elf_gc_sweep): Keep non-code sections referenced from .eh_frame.
* section.c (struct bfd_section): Add gc_mark_from_eh.
(STD_SECTION): Adjust.
* ecoff.c (bfd_debug_section): Adjust.
* bfd-in2.h: Regenerate.
Diffstat (limited to 'bfd/section.c')
-rw-r--r-- | bfd/section.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/bfd/section.c b/bfd/section.c index 75acad7752..aeb63a6742 100644 --- a/bfd/section.c +++ b/bfd/section.c @@ -354,8 +354,9 @@ CODE_FRAGMENT . output sections that have an input section. *} . unsigned int linker_has_input : 1; . -. {* A mark flag used by some linker backends for garbage collection. *} +. {* Mark flags used by some linker backends for garbage collection. *} . unsigned int gc_mark : 1; +. unsigned int gc_mark_from_eh : 1; . . {* The following flags are used by the ELF linker. *} . @@ -661,18 +662,18 @@ static const asymbol global_syms[] = #define STD_SECTION(SEC, FLAGS, SYM, NAME, IDX) \ const asymbol * const SYM = (asymbol *) &global_syms[IDX]; \ - asection SEC = \ + asection SEC = \ /* name, id, index, next, prev, flags, user_set_vma, */ \ { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ \ - /* linker_mark, linker_has_input, gc_mark, segment_mark, */ \ + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \ 0, 0, 1, 0, \ \ - /* sec_info_type, use_rela_p, has_tls_reloc, has_gp_reloc, */ \ - 0, 0, 0, 0, \ + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ + 0, 0, 0, 0, \ \ - /* need_finalize_relax, reloc_done, */ \ - 0, 0, \ + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \ + 0, 0, 0, \ \ /* vma, lma, size, rawsize */ \ 0, 0, 0, 0, \ @@ -686,8 +687,8 @@ static const asymbol global_syms[] = /* line_filepos, userdata, contents, lineno, lineno_count, */ \ 0, NULL, NULL, NULL, 0, \ \ - /* entsize, kept_section, moving_line_filepos, */ \ - 0, NULL, 0, \ + /* entsize, kept_section, moving_line_filepos, */ \ + 0, NULL, 0, \ \ /* target_index, used_by_bfd, constructor_chain, owner, */ \ 0, NULL, NULL, NULL, \ |