aboutsummaryrefslogtreecommitdiff
path: root/bfd/section.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2005-06-29 14:05:21 +0000
committerAlan Modra <amodra@gmail.com>2005-06-29 14:05:21 +0000
commit39c2f51bd9f82438706973c4b92597a945d9c4df (patch)
tree44152730391ea82957bcbc22e60bce18565e60f4 /bfd/section.c
parente8aaee2ad47c086c1c64639df152489eb283b342 (diff)
downloadgdb-39c2f51bd9f82438706973c4b92597a945d9c4df.zip
gdb-39c2f51bd9f82438706973c4b92597a945d9c4df.tar.gz
gdb-39c2f51bd9f82438706973c4b92597a945d9c4df.tar.bz2
* 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.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/bfd/section.c b/bfd/section.c
index 75acad7..aeb63a6 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, \