From d2667025dd30611514810c28bee9709e4623012a Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 15 Jun 2012 15:13:41 +0000 Subject: ld/ * ldlang.h (lang_output_section_statement_type): Add after_end field. (lang_abs_symbol_at_beginning_of, lang_abs_symbol_at_end_of): Delete. (section_for_dot): Declare. * ldlang.c (lang_size_sections_1): Correct comment. (current_section): Move earlier. (current_assign, prefer_next_section): New static vars. (lang_do_assignments_1): Add found_end param. Detect _end assignment to set found_end. Set os->after_end. Set above statics. (lang_do_assignments): Adjust lang_do_assignments_1 call. Init vars. (section_for_dot): New function. (lang_set_startof): Don't make an absolute symbol. (lang_abs_symbol_at_beginning_of, lang_abs_symbol_at_end_of): Delete. * ldexp.c (new_rel_from_abs): Use section_for_dot. * emultempl/lnk960.em (symbol_at_beginning_of): New function. (symbol_at_end_of): Likewise. (lnk960_after_allocation): Use them. * scripttempl/elf.sc: Precede OTHER_GOT_SYMBOLS with . = .; and likewise before __bss_start. ld/testsuite/ Update far too many tests. --- ld/ldlang.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'ld/ldlang.h') diff --git a/ld/ldlang.h b/ld/ldlang.h index 7f1e743..d5ea8d2 100644 --- a/ld/ldlang.h +++ b/ld/ldlang.h @@ -165,6 +165,8 @@ typedef struct lang_output_section_statement_struct unsigned int ignored : 1; /* If this section should update "dot". Prevents section being ignored. */ unsigned int update_dot : 1; + /* If this section is after assignment to _end. */ + unsigned int after_end : 1; } lang_output_section_statement_type; typedef struct @@ -537,10 +539,6 @@ extern void lang_float extern void lang_leave_output_section_statement (fill_type *, const char *, lang_output_section_phdr_list *, const char *); -extern void lang_abs_symbol_at_end_of - (const char *, const char *); -extern void lang_abs_symbol_at_beginning_of - (const char *, const char *); extern void lang_statement_append (lang_statement_list_type *, lang_statement_union_type *, lang_statement_union_type **); @@ -552,6 +550,8 @@ extern void lang_reset_memory_regions (void); extern void lang_do_assignments (lang_phase_type); +extern asection *section_for_dot + (void); #define LANG_FOR_EACH_INPUT_STATEMENT(statement) \ lang_input_statement_type *statement; \ -- cgit v1.1