mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
PR28751 mbind2a / mbind2b regressions on powerpc*-linux
include/ * bfdlink.h (struct bfd_link_info): Add commonpagesize_is_set. ld/ PR 28751 * emultempl/elf.em (handle_option): Set commonpagesize_is_set. * ldelf.c (ldelf_after_parse): Don't error when only one of -z max-page-size or -z common-page-size is given, correct the other value to make it sane. * testsuite/ld-elf/elf.exp (mbind2a, mbind2b): Do not pass -z max-page-size.
This commit is contained in:
parent
fd47eb1a30
commit
ff66e8c5be
@ -532,6 +532,9 @@ struct bfd_link_info
|
||||
/* TRUE if maxpagesize is set on command-line. */
|
||||
unsigned int maxpagesize_is_set : 1;
|
||||
|
||||
/* TRUE if commonpagesize is set on command-line. */
|
||||
unsigned int commonpagesize_is_set : 1;
|
||||
|
||||
/* Char that may appear as the first char of a symbol, but should be
|
||||
skipped (like symbol_leading_char) when looking up symbols in
|
||||
wrap_hash. Used by PowerPC Linux for 'dot' symbols. */
|
||||
|
@ -731,6 +731,7 @@ fragment <<EOF
|
||||
|| (link_info.commonpagesize & (link_info.commonpagesize - 1)) != 0)
|
||||
einfo (_("%F%P: invalid common page size \`%s'\n"),
|
||||
optarg + 17);
|
||||
link_info.commonpagesize_is_set = true;
|
||||
}
|
||||
else if (startswith (optarg, "stack-size="))
|
||||
{
|
||||
|
11
ld/ldelf.c
11
ld/ldelf.c
@ -82,8 +82,15 @@ ldelf_after_parse (void)
|
||||
|
||||
after_parse_default ();
|
||||
if (link_info.commonpagesize > link_info.maxpagesize)
|
||||
einfo (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"),
|
||||
link_info.commonpagesize, link_info.maxpagesize);
|
||||
{
|
||||
if (!link_info.commonpagesize_is_set)
|
||||
link_info.commonpagesize = link_info.maxpagesize;
|
||||
else if (!link_info.maxpagesize_is_set)
|
||||
link_info.maxpagesize = link_info.commonpagesize;
|
||||
else
|
||||
einfo (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"),
|
||||
link_info.commonpagesize, link_info.maxpagesize);
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle the generation of DT_NEEDED tags. */
|
||||
|
@ -365,7 +365,7 @@ if { [istarget *-*-linux*]
|
||||
run_ld_link_exec_tests [list \
|
||||
[list \
|
||||
"Run mbind2a" \
|
||||
"$NOPIE_LDFLAGS -Wl,-z,common-page-size=0x4000,-z,max-page-size=0x4000" \
|
||||
"$NOPIE_LDFLAGS -Wl,-z,common-page-size=0x4000" \
|
||||
"" \
|
||||
{ mbind2a.s mbind2b.c } \
|
||||
"mbind2a" \
|
||||
@ -374,7 +374,7 @@ if { [istarget *-*-linux*]
|
||||
] \
|
||||
[list \
|
||||
"Run mbind2b" \
|
||||
"-static -Wl,-z,common-page-size=0x4000,-z,max-page-size=0x4000" \
|
||||
"-static -Wl,-z,common-page-size=0x4000" \
|
||||
"" \
|
||||
{ mbind2a.s mbind2b.c } \
|
||||
"mbind2b" \
|
||||
|
Loading…
Reference in New Issue
Block a user