mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 12:39:59 +00:00
ld/
* ldlang.h (enum section_type): Add overlay_section. * ldlang.c (lang_add_section): Handle flags for overlay_section as per normal_section. (lang_size_sections_1): When setting lma, detect overlays by os->sectype rather than by looking for overlapping vmas. (lang_enter_overlay_section): Use overlay_section type. (lang_leave_overlay): Set first overlay section to normal. ld/testsuite/ * ld-spu/ovl.lnk: Use OVERLAY keyword.
This commit is contained in:
parent
4904bbd9d1
commit
152d792f47
10
ld/ChangeLog
10
ld/ChangeLog
@ -1,3 +1,13 @@
|
||||
2007-04-18 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ldlang.h (enum section_type): Add overlay_section.
|
||||
* ldlang.c (lang_add_section): Handle flags for overlay_section
|
||||
as per normal_section.
|
||||
(lang_size_sections_1): When setting lma, detect overlays by
|
||||
os->sectype rather than by looking for overlapping vmas.
|
||||
(lang_enter_overlay_section): Use overlay_section type.
|
||||
(lang_leave_overlay): Set first overlay section to normal.
|
||||
|
||||
2007-04-14 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
* Makefile.am: Add ACLOCAL_AMFLAGS.
|
||||
|
17
ld/ldlang.c
17
ld/ldlang.c
@ -2040,6 +2040,7 @@ lang_add_section (lang_statement_list_type *ptr,
|
||||
switch (output->sectype)
|
||||
{
|
||||
case normal_section:
|
||||
case overlay_section:
|
||||
break;
|
||||
case noalloc_section:
|
||||
flags &= ~SEC_ALLOC;
|
||||
@ -4438,14 +4439,9 @@ lang_size_sections_1
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If the current vma overlaps the previous section,
|
||||
then set the current lma to that at the end of
|
||||
the previous section. The previous section was
|
||||
probably an overlay. */
|
||||
if ((dot >= last->vma
|
||||
&& dot < last->vma + last->size)
|
||||
|| (last->vma >= dot
|
||||
&& last->vma < dot + os->bfd_section->size))
|
||||
/* If this is an overlay, set the current lma to that
|
||||
at the end of the previous section. */
|
||||
if (os->sectype == overlay_section)
|
||||
lma = last->lma + last->size;
|
||||
|
||||
/* Otherwise, keep the same lma to vma relationship
|
||||
@ -6392,7 +6388,7 @@ lang_enter_overlay_section (const char *name)
|
||||
struct overlay_list *n;
|
||||
etree_type *size;
|
||||
|
||||
lang_enter_output_section_statement (name, overlay_vma, normal_section,
|
||||
lang_enter_output_section_statement (name, overlay_vma, overlay_section,
|
||||
0, overlay_subalign, 0, 0);
|
||||
|
||||
/* If this is the first section, then base the VMA of future
|
||||
@ -6506,7 +6502,10 @@ lang_leave_overlay (etree_type *lma_expr,
|
||||
The base address is not needed (and should be null) if
|
||||
an LMA region was specified. */
|
||||
if (l->next == 0)
|
||||
{
|
||||
l->os->load_base = lma_expr;
|
||||
l->os->sectype = normal_section;
|
||||
}
|
||||
if (phdrs != NULL && l->os->phdrs == NULL)
|
||||
l->os->phdrs = phdrs;
|
||||
|
||||
|
@ -108,6 +108,7 @@ typedef struct lang_output_statement_struct
|
||||
enum section_type
|
||||
{
|
||||
normal_section,
|
||||
overlay_section,
|
||||
noload_section,
|
||||
noalloc_section
|
||||
};
|
||||
|
@ -1,3 +1,7 @@
|
||||
2007-04-18 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ld-spu/ovl.lnk: Use OVERLAY keyword.
|
||||
|
||||
2007-04-17 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* ld-arm/preempt-app.s: New test.
|
||||
|
@ -3,10 +3,11 @@ SECTIONS
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : { *(.text) *(.stub) }
|
||||
|
||||
. = 0x400;
|
||||
.ov_a1 : { *(.ov_a1) }
|
||||
.ov_a2 ADDR (.ov_a1) : { *(.ov_a2) }
|
||||
. = ADDR (.ov_a1) + MAX (SIZEOF (.ov_a1), SIZEOF (.ov_a2));
|
||||
OVERLAY 0x400 :
|
||||
{
|
||||
.ov_a1 { *(.ov_a1) }
|
||||
.ov_a2 { *(.ov_a2) }
|
||||
}
|
||||
|
||||
.data : { *(.data) *(.ovtab) }
|
||||
.bss : { *(.bss) }
|
||||
|
Loading…
Reference in New Issue
Block a user