mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-03 04:01:22 +08:00
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.
This commit is contained in:
@ -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; \
|
||||
|
Reference in New Issue
Block a user