From Wally Iimura <iimura@microunity.com>:

* ldlang.c (lang_size_sections): When checking whether an address
	is within a region, don't get confused by wrapping around at the
	end of the address space.
This commit is contained in:
Ian Lance Taylor
1999-08-09 06:14:09 +00:00
parent 91d3970e7d
commit fe9edd2275
2 changed files with 20 additions and 5 deletions

View File

@ -1,3 +1,10 @@
1999-08-09 Ian Lance Taylor <ian@zembu.com>
From Wally Iimura <iimura@microunity.com>:
* ldlang.c (lang_size_sections): When checking whether an address
is within a region, don't get confused by wrapping around at the
end of the address space.
1999-08-08 Ian Lance Taylor <ian@zembu.com>
* ldlang.c (wild_doit): Update for renaming of SEC_SHORT to

View File

@ -2740,14 +2740,22 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
overall size in memory. */
if (os->region != (lang_memory_region_type *) NULL
&& (bfd_get_section_flags (output_bfd, os->bfd_section)
& (SEC_ALLOC | SEC_LOAD)))
& (SEC_ALLOC | SEC_LOAD)))
{
os->region->current = dot;
/* Make sure this isn't silly. */
if (os->region->current < os->region->origin
|| (os->region->current - os->region->origin
> os->region->length))
/* Make sure the new address is within the region. We
explicitly permit the current address to be at the
exact end of the region when the VMA is non-zero,
in case the region is at the end of addressable
memory and the calculation wraps around. */
if ((os->region->current < os->region->origin
|| (os->region->current - os->region->origin
> os->region->length))
&& ((os->region->current
!= os->region->origin + os->region->length)
|| os->bfd_section->vma == 0))
{
if (os->addr_tree != (etree_type *) NULL)
{