Warn if value of SEGMENT_START isn't multiple of maximum page size.

ld/

2010-05-26  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/11628
	* ldexp.c (fold_binary): Warn if value of SEGMENT_START isn't
	multiple of maximum page size.

ld/testsuite/

2010-05-26  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/11628
	* ld-elf/textaddr3.d: New.
	* ld-elf/textaddr4.d: Likewise.
	* ld-elf/textaddr5.d: Likewise.
	* ld-elf/textaddr6.d: Likewise.
	* ld-elf/textaddr7.d: Likewise.
This commit is contained in:
H.J. Lu 2010-05-26 14:10:15 +00:00
parent f79e2745b2
commit c8ce57109c
8 changed files with 52 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2010-05-26 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11628
* ldexp.c (fold_binary): Warn if value of SEGMENT_START isn't
multiple of maximum page size.
2010-05-25 Nick Clifton <nickc@redhat.com>
* Makefile.am: Fix typo.

View File

@ -299,6 +299,11 @@ fold_binary (etree_type *tree)
for (seg = segments; seg; seg = seg->next)
if (strcmp (seg->name, segment_name) == 0)
{
if (!seg->used
&& config.magic_demand_paged
&& (seg->value % config.maxpagesize) != 0)
einfo (_("%P: warning: address of `%s' isn't multiple of maximum page size\n"),
segment_name);
seg->used = TRUE;
expld.result.value = seg->value;
expld.result.str = NULL;

View File

@ -1,3 +1,12 @@
2010-05-26 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11628
* ld-elf/textaddr3.d: New.
* ld-elf/textaddr4.d: Likewise.
* ld-elf/textaddr5.d: Likewise.
* ld-elf/textaddr6.d: Likewise.
* ld-elf/textaddr7.d: Likewise.
2010-05-25 Daniel Jacobowitz <dan@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
Andrew Stubbs <ams@codesourcery.com>

View File

@ -0,0 +1,4 @@
#source: maxpage1.s
#ld: -Ttext-segment 0x10000 -z max-page-size=0x200000
#target: *-*-linux-gnu
#warning: .*address of `text-segment' isn't multiple of maximum page size

View File

@ -0,0 +1,8 @@
#source: maxpage1.s
#ld: -z max-page-size=0x10000 -Ttext-segment 0x10000
#readelf: -l --wide
#target: *-*-linux-gnu
#...
LOAD +0x0+ 0x0*10000 0x0*10000 0x0*[0-9a-f][0-9a-f][0-9a-f] 0x0*[0-9a-f][0-9a-f][0-9a-f] R E 0x10000
#pass

View File

@ -0,0 +1,4 @@
#source: maxpage1.s
#ld: -shared -z max-page-size=0x200000 -Ttext-segment 0x10000
#target: *-*-linux-gnu
#warning: .*address of `text-segment' isn't multiple of maximum page size

View File

@ -0,0 +1,8 @@
#source: maxpage1.s
#ld: -shared -z max-page-size=0x10000 -Ttext-segment 0x10000
#readelf: -l --wide
#target: *-*-linux-gnu
#...
LOAD +0x0+ 0x0*10000 0x0*10000 0x0*[0-9a-f][0-9a-f][0-9a-f] 0x0*[0-9a-f][0-9a-f][0-9a-f] R E 0x10000
#pass

View File

@ -0,0 +1,8 @@
#source: maxpage1.s
#ld: -n -z max-page-size=0x200000 -Ttext-segment 0x10000
#readelf: -l --wide
#target: *-*-linux-gnu
#...
LOAD .*
#pass