From 9ca57817d355fd086e08866295f8ce7381af3ac9 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 29 May 2004 04:30:41 +0000 Subject: [PATCH] * ldlang.c (gc_section_callback): Move SEC_EXCLUDE twiddles.. (lang_gc_sections): .. to a LANG_FOR_EACH_INPUT_STATEMENT loop here. --- ld/ChangeLog | 5 +++++ ld/ldlang.c | 20 ++++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 9ce5744bd0a..00318f37847 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2004-05-29 Alan Modra + + * ldlang.c (gc_section_callback): Move SEC_EXCLUDE twiddles.. + (lang_gc_sections): .. to a LANG_FOR_EACH_INPUT_STATEMENT loop here. + 2004-05-28 Andrew Stubbs * testsuite/ld-sh/arch/arch.exp: New test script. diff --git a/ld/ldlang.c b/ld/ldlang.c index b471b5b9bbc..7ff8be0dcb8 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -4272,12 +4272,6 @@ gc_section_callback (lang_wild_statement_type *ptr, lang_input_statement_type *file ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) { - /* SEC_EXCLUDE is ignored when doing a relocatable link, except in - the special case of debug info. (See bfd/stabs.c) - Twiddle the flag here, to simplify later linker code. */ - if (link_info.relocatable && (section->flags & SEC_DEBUGGING) == 0) - section->flags &= ~SEC_EXCLUDE; - /* If the wild pattern was marked KEEP, the member sections should be as well. */ if (ptr->keep_sections) @@ -4338,6 +4332,20 @@ lang_gc_sections (void) } } + /* SEC_EXCLUDE is ignored when doing a relocatable link, except in + the special case of debug info. (See bfd/stabs.c) + Twiddle the flag here, to simplify later linker code. */ + if (link_info.relocatable) + { + LANG_FOR_EACH_INPUT_STATEMENT (f) + { + asection *sec; + for (sec = f->the_bfd->sections; sec != NULL; sec = sec->next) + if ((sec->flags & SEC_DEBUGGING) == 0) + sec->flags &= ~SEC_EXCLUDE; + } + } + if (command_line.gc_sections) bfd_gc_sections (output_bfd, &link_info); } -- 2.30.2