* ldlang.c (print_output_section_statement): If the output section
statement has an update_dot_tree expression, apply it to print_dot. (print_input_section): Do not update print_dot if it would move print_dot backwards. (lang_do_assignments_1): If the output section statement has an update_dot_tree expression apply it to dot. * ld-scripts/overlay-size.t (end_of_bss_overlays): Define. (end_of_text_overlays): Define. (end_of_data_overlays): Define. * ld-scripts/overlay-size-map.d: Add expected values for end_of_bss_overlays, end_of_text_overlays and end_of_data_overlays.
This commit is contained in:
parent
1e6e8c4b76
commit
5590fba953
5 changed files with 43 additions and 1 deletions
10
ld/ChangeLog
10
ld/ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
2008-06-12 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* ldlang.c (print_output_section_statement): If the output section
|
||||||
|
statement has an update_dot_tree expression, apply it to
|
||||||
|
print_dot.
|
||||||
|
(print_input_section): Do not update print_dot if it would move
|
||||||
|
print_dot backwards.
|
||||||
|
(lang_do_assignments_1): If the output section statement has an
|
||||||
|
update_dot_tree expression apply it to dot.
|
||||||
|
|
||||||
2008-06-07 Alan Modra <amodra@bigpond.net.au>
|
2008-06-07 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* NEWS: Mention archive:path patterns.
|
* NEWS: Mention archive:path patterns.
|
||||||
|
|
13
ld/ldlang.c
13
ld/ldlang.c
|
@ -3653,6 +3653,10 @@ print_output_section_statement
|
||||||
|
|
||||||
if (section->vma != section->lma)
|
if (section->vma != section->lma)
|
||||||
minfo (_(" load address 0x%V"), section->lma);
|
minfo (_(" load address 0x%V"), section->lma);
|
||||||
|
|
||||||
|
if (output_section_statement->update_dot_tree != NULL)
|
||||||
|
exp_fold_tree (output_section_statement->update_dot_tree,
|
||||||
|
bfd_abs_section_ptr, &print_dot);
|
||||||
}
|
}
|
||||||
|
|
||||||
print_nl ();
|
print_nl ();
|
||||||
|
@ -3899,7 +3903,11 @@ print_input_section (asection *i)
|
||||||
else
|
else
|
||||||
print_all_symbols (i);
|
print_all_symbols (i);
|
||||||
|
|
||||||
print_dot = addr + TO_ADDR (size);
|
/* Update print_dot, but make sure that we do not move it
|
||||||
|
backwards - this could happen if we have overlays and a
|
||||||
|
later overlay is shorter than an earier one. */
|
||||||
|
if (addr + TO_ADDR (size) > print_dot)
|
||||||
|
print_dot = addr + TO_ADDR (size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5151,6 +5159,9 @@ lang_do_assignments_1 (lang_statement_union_type *s,
|
||||||
|| (os->bfd_section->flags & SEC_THREAD_LOCAL) == 0
|
|| (os->bfd_section->flags & SEC_THREAD_LOCAL) == 0
|
||||||
|| link_info.relocatable)
|
|| link_info.relocatable)
|
||||||
dot += TO_ADDR (os->bfd_section->size);
|
dot += TO_ADDR (os->bfd_section->size);
|
||||||
|
|
||||||
|
if (os->update_dot_tree != NULL)
|
||||||
|
exp_fold_tree (os->update_dot_tree, bfd_abs_section_ptr, &dot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
2008-06-12 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* ld-scripts/overlay-size.t (end_of_bss_overlays): Define.
|
||||||
|
(end_of_text_overlays): Define.
|
||||||
|
(end_of_data_overlays): Define.
|
||||||
|
* ld-scripts/overlay-size-map.d: Add expected values for
|
||||||
|
end_of_bss_overlays, end_of_text_overlays and
|
||||||
|
end_of_data_overlays.
|
||||||
|
|
||||||
2008-06-09 Kaz Kojima <kkojima@rr.iij4u.or.jp>
|
2008-06-09 Kaz Kojima <kkojima@rr.iij4u.or.jp>
|
||||||
|
|
||||||
* ld-sh/arch/arch_expected.txt: Regenerate.
|
* ld-sh/arch/arch_expected.txt: Regenerate.
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
#...
|
#...
|
||||||
\.bss3 *0x0*20000 *0x20 load address 0x0*20040
|
\.bss3 *0x0*20000 *0x20 load address 0x0*20040
|
||||||
#...
|
#...
|
||||||
|
.*0x0+020030[ ]*end_of_bss_overlays.*
|
||||||
|
#...
|
||||||
\.mtext *0x0*10000 *0x20 load address 0x0*30000
|
\.mtext *0x0*10000 *0x20 load address 0x0*30000
|
||||||
#...
|
#...
|
||||||
\.mbss *0x0*20030 *0x230 load address 0x0*20060
|
\.mbss *0x0*20030 *0x230 load address 0x0*20060
|
||||||
|
@ -15,9 +17,13 @@
|
||||||
#...
|
#...
|
||||||
\.text3 *0x0*10020 *0x20 load address 0x0*300e0
|
\.text3 *0x0*10020 *0x20 load address 0x0*300e0
|
||||||
#...
|
#...
|
||||||
|
.*0x0+0100a0[ ]*end_of_text_overlays.*
|
||||||
|
#...
|
||||||
\.data1 *0x0*20260 *0x30 load address 0x0*30100
|
\.data1 *0x0*20260 *0x30 load address 0x0*30100
|
||||||
#...
|
#...
|
||||||
\.data2 *0x0*20260 *0x40 load address 0x0*30130
|
\.data2 *0x0*20260 *0x40 load address 0x0*30130
|
||||||
#...
|
#...
|
||||||
\.data3 *0x0*20260 *0x50 load address 0x0*30170
|
\.data3 *0x0*20260 *0x50 load address 0x0*30170
|
||||||
|
#...
|
||||||
|
.*0x0+0202b0[ ]*end_of_data_overlays.*
|
||||||
#pass
|
#pass
|
||||||
|
|
|
@ -31,6 +31,8 @@ SECTIONS
|
||||||
.bss3 { *(.bss3) }
|
.bss3 { *(.bss3) }
|
||||||
} > DATAMEM
|
} > DATAMEM
|
||||||
|
|
||||||
|
end_of_bss_overlays = . ;
|
||||||
|
|
||||||
.mtext : { *(.mtext) } > TEXTMEM AT > LOADMEM
|
.mtext : { *(.mtext) } > TEXTMEM AT > LOADMEM
|
||||||
|
|
||||||
.mbss : AT (__load_stop_bss3)
|
.mbss : AT (__load_stop_bss3)
|
||||||
|
@ -46,6 +48,8 @@ SECTIONS
|
||||||
.text3 { *(.text3) }
|
.text3 { *(.text3) }
|
||||||
} > TEXTMEM AT > LOADMEM
|
} > TEXTMEM AT > LOADMEM
|
||||||
|
|
||||||
|
end_of_text_overlays = . ;
|
||||||
|
|
||||||
OVERLAY :
|
OVERLAY :
|
||||||
{
|
{
|
||||||
.data1 { *(.data1) }
|
.data1 { *(.data1) }
|
||||||
|
@ -53,6 +57,8 @@ SECTIONS
|
||||||
.data3 { *(.data3) }
|
.data3 { *(.data3) }
|
||||||
} > DATAMEM AT > LOADMEM
|
} > DATAMEM AT > LOADMEM
|
||||||
|
|
||||||
|
end_of_data_overlays = . ;
|
||||||
|
|
||||||
. = 0x8000;
|
. = 0x8000;
|
||||||
/DISCARD/ : { *(.reginfo) }
|
/DISCARD/ : { *(.reginfo) }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue