ld/ 2009-08-28 H.J. Lu PR ld/10569 * ldemul.c (ldemul_set_output_arch): Set maximum/common page sizes on output target. * ldexp.c: Include "ldfile.h" and "ldemul.h". (fold_name): Use ldemul_choose_target instead of default_target to get maximum/common page sizes. * ldmain.c (main): Initialize config.maxpagesize and config.commonpagesize to (bfd_vma) -1. * emultempl/elf32.em: Use ldemul_choose_target instead of default_target to set maximum/common page sizes. ld/testsuite 2009-08-28 H.J. Lu PR ld/10569 * ld-elf/commonpage2.d: New. * ld-elf/maxpage4.d: Likewise. * ld-elf/maxpage4.t: Likewise. Index: emultempl/elf32.em =================================================================== --- emultempl/elf32.em (revision 6643) +++ emultempl/elf32.em (working copy) @@ -2178,8 +2178,8 @@ fragment <set_output_arch (); + + if (config.maxpagesize != (bfd_vma) -1 + || config.commonpagesize != (bfd_vma) -1) + { + const char *output_target = lang_get_output_target (); + + if (config.maxpagesize != (bfd_vma) -1) + bfd_emul_set_maxpagesize (output_target, + config.maxpagesize); + + if (config.commonpagesize != (bfd_vma) -1) + bfd_emul_set_commonpagesize (output_target, + config.commonpagesize); + + } } void Index: ldexp.c =================================================================== --- ldexp.c (revision 6600) +++ ldexp.c (working copy) @@ -40,6 +40,8 @@ #include "ldlex.h" #include #include "ldlang.h" +#include "ldfile.h" +#include "ldemul.h" #include "libiberty.h" #include "safe-ctype.h" @@ -482,6 +484,8 @@ fold_trinary (etree_type *tree) static void fold_name (etree_type *tree) { + const char *target; + memset (&expld.result, 0, sizeof (expld.result)); switch (tree->type.node_code) @@ -672,10 +676,11 @@ fold_name (etree_type *tree) break; case CONSTANT: + target = ldemul_choose_target (0, NULL); if (strcmp (tree->name.name, "MAXPAGESIZE") == 0) - new_abs (bfd_emul_get_maxpagesize (default_target)); + new_abs (bfd_emul_get_maxpagesize (target)); else if (strcmp (tree->name.name, "COMMONPAGESIZE") == 0) - new_abs (bfd_emul_get_commonpagesize (default_target)); + new_abs (bfd_emul_get_commonpagesize (target)); else einfo (_("%F%S: unknown constant `%s' referenced in expression\n"), tree->name.name);