diff options
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/ldexp.c | 5 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/textaddr3.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/textaddr4.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/textaddr5.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/textaddr6.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/textaddr7.d | 8 |
8 files changed, 52 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index ffa59e7..d6324e0 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -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. @@ -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; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 4a3989e..a59ad4a 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -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> diff --git a/ld/testsuite/ld-elf/textaddr3.d b/ld/testsuite/ld-elf/textaddr3.d new file mode 100644 index 0000000..d533e24 --- /dev/null +++ b/ld/testsuite/ld-elf/textaddr3.d @@ -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 diff --git a/ld/testsuite/ld-elf/textaddr4.d b/ld/testsuite/ld-elf/textaddr4.d new file mode 100644 index 0000000..bfd7630 --- /dev/null +++ b/ld/testsuite/ld-elf/textaddr4.d @@ -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 diff --git a/ld/testsuite/ld-elf/textaddr5.d b/ld/testsuite/ld-elf/textaddr5.d new file mode 100644 index 0000000..5fe41d0 --- /dev/null +++ b/ld/testsuite/ld-elf/textaddr5.d @@ -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 diff --git a/ld/testsuite/ld-elf/textaddr6.d b/ld/testsuite/ld-elf/textaddr6.d new file mode 100644 index 0000000..b3b9f84 --- /dev/null +++ b/ld/testsuite/ld-elf/textaddr6.d @@ -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 diff --git a/ld/testsuite/ld-elf/textaddr7.d b/ld/testsuite/ld-elf/textaddr7.d new file mode 100644 index 0000000..54a571f --- /dev/null +++ b/ld/testsuite/ld-elf/textaddr7.d @@ -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 |