If a region is specified assign it to all sections inside the overlay unless they have been assigned to the own, non-default, memory region.
This commit is contained in:
parent
1b577b00bd
commit
1545243be0
@ -1,5 +1,9 @@
|
|||||||
2001-07-19 Nick Clifton <nickc@cambridge.redhat.com>
|
2001-07-19 Nick Clifton <nickc@cambridge.redhat.com>
|
||||||
|
|
||||||
|
* ldlang.c (lang_leave_overlay): If a region is specified assign
|
||||||
|
it to all sections inside the overlay unless they have been
|
||||||
|
assigned to the own, non-default, memory region.
|
||||||
|
|
||||||
* README: Add header for consistency with other README files.
|
* README: Add header for consistency with other README files.
|
||||||
|
|
||||||
2001-07-14 H.J. Lu <hjl@gnu.org>
|
2001-07-14 H.J. Lu <hjl@gnu.org>
|
||||||
|
13
ld/ldlang.c
13
ld/ldlang.c
@ -4818,10 +4818,13 @@ lang_leave_overlay (fill, memspec, phdrs, lma_memspec)
|
|||||||
const char *lma_memspec;
|
const char *lma_memspec;
|
||||||
{
|
{
|
||||||
lang_memory_region_type *region;
|
lang_memory_region_type *region;
|
||||||
|
lang_memory_region_type * default_region;
|
||||||
lang_memory_region_type *lma_region;
|
lang_memory_region_type *lma_region;
|
||||||
struct overlay_list *l;
|
struct overlay_list *l;
|
||||||
struct lang_nocrossref *nocrossref;
|
struct lang_nocrossref *nocrossref;
|
||||||
|
|
||||||
|
default_region = lang_memory_region_lookup ("*default*");
|
||||||
|
|
||||||
if (memspec == NULL)
|
if (memspec == NULL)
|
||||||
region = NULL;
|
region = NULL;
|
||||||
else
|
else
|
||||||
@ -4841,8 +4844,15 @@ lang_leave_overlay (fill, memspec, phdrs, lma_memspec)
|
|||||||
|
|
||||||
if (fill != 0 && l->os->fill == 0)
|
if (fill != 0 && l->os->fill == 0)
|
||||||
l->os->fill = fill;
|
l->os->fill = fill;
|
||||||
if (region != NULL && l->os->region == NULL)
|
|
||||||
|
/* Assign a region to the sections, if one has been specified.
|
||||||
|
Override the assignment of the default section, but not
|
||||||
|
other sections. */
|
||||||
|
if (region != NULL &&
|
||||||
|
(l->os->region == NULL ||
|
||||||
|
l->os->region == default_region))
|
||||||
l->os->region = region;
|
l->os->region = region;
|
||||||
|
|
||||||
/* We only set lma_region for the first overlay section, as
|
/* We only set lma_region for the first overlay section, as
|
||||||
subsequent overlay sections will have load_base set relative
|
subsequent overlay sections will have load_base set relative
|
||||||
to the first section. Also, don't set lma_region if
|
to the first section. Also, don't set lma_region if
|
||||||
@ -4852,6 +4862,7 @@ lang_leave_overlay (fill, memspec, phdrs, lma_memspec)
|
|||||||
if (lma_region != NULL && l->os->lma_region == NULL
|
if (lma_region != NULL && l->os->lma_region == NULL
|
||||||
&& l->next == NULL && l->os->load_base == NULL)
|
&& l->next == NULL && l->os->load_base == NULL)
|
||||||
l->os->lma_region = lma_region;
|
l->os->lma_region = lma_region;
|
||||||
|
|
||||||
if (phdrs != NULL && l->os->phdrs == NULL)
|
if (phdrs != NULL && l->os->phdrs == NULL)
|
||||||
l->os->phdrs = phdrs;
|
l->os->phdrs = phdrs;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user