diff options
author | Alan Modra <amodra@gmail.com> | 2012-06-15 15:13:41 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2012-06-15 15:13:41 +0000 |
commit | d2667025dd30611514810c28bee9709e4623012a (patch) | |
tree | 7364422fa955cf289aef9008298bb0bc79394d65 /ld/ldexp.c | |
parent | 8e09ad05eda21f6772d6bcca1eb8b42e5d77be03 (diff) | |
download | gdb-d2667025dd30611514810c28bee9709e4623012a.zip gdb-d2667025dd30611514810c28bee9709e4623012a.tar.gz gdb-d2667025dd30611514810c28bee9709e4623012a.tar.bz2 |
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.
Diffstat (limited to 'ld/ldexp.c')
-rw-r--r-- | ld/ldexp.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -213,10 +213,14 @@ new_rel (bfd_vma value, asection *section) static void new_rel_from_abs (bfd_vma value) { + asection *s = expld.section; + + if (s == bfd_abs_section_ptr && expld.phase == lang_final_phase_enum) + s = section_for_dot (); expld.result.valid_p = TRUE; - expld.result.value = value - expld.section->vma; + expld.result.value = value - s->vma; expld.result.str = NULL; - expld.result.section = expld.section; + expld.result.section = s; } static void |