ARM: Fix ld bloat introduced between binutils-2.38 and 2.39
Checks
Commit Message
> From: Alan Modra <amodra@gmail.com>
> CC: "binutils@sourceware.org" <binutils@sourceware.org>
> On Mon, Jan 02, 2023 at 05:08:57PM +0100, Hans-Peter Nilsson via Binutils wrote:
> > That may sound like an argument for setting the bfd_arch_arm
> > ELF_MAXPAGESIZE to 4 KiB, but then the obscure corner-case
> > wouldn't be properly handled.
>
> Agreed. It's what x86 did when facing the same thing. If anybody
> cares about the obscure corner-case you identify then they can just
> use -z max-page-size. Or edit elf32-arm.c.
I see where this is going, but...
> > Instead, I suggest simply making ELF_MAXPAGESIZE generally
> > overridable by means of a --with option at linker
> > configuration time.
>
> I dislike configure time options that affect linker behaviour, but I
> realise I'm flogging a dead horse since we already have a lot of them.
> However, this particular option is worse than most since it affects
> all ELF targets. That can't be correct or useful with
> --enable-targets=all.
I have to say that people using --enable-targets=all to
build their linkers definitely shouldn't be using this
option, as their definition of "all" then doesn't include
obscure corner cases! And how do the
"--enable-targets=all"-people link? IIUC they have to
specify an emulation when using such a linker, so they can't
be using a general invocation. To wit, I don't think the
"--enable-targets=all"-breakage is a valid counter-argument.
Anyway, here's the obvious alternative. It needs to have
the ARM testsuite adjusted (not included, will fix and send
for separate consideration on approval).
Ok for master, 2.40 and 2.39?
--- 8< ---
Subject: ARM: Fix ld bloat introduced between binutils-2.38 and 2.39
Since commit 9833b7757d24, "PR28824, relro security issues",
ELF_MAXPAGESIZE matters much more, with regards to layout of
the linked file. That commit fixed an actual bug, but also
exposes a problem for targets were that value is too high.
For example, for ARM(32, a.k.a. "Aarch32") specifically
bfd_arch_arm, it's set to 64 KiB, making all Linux(/GNU)
targets pay an extra amount of up to 60 KiB of bloat in
DSO:s and executables. This matters when there are many
such files, and where storage is expensive.
It's *mostly* bloat when using a Linux kernel, as ARM(32) is
a good example of an target where ELF_MAXPAGESIZE is set to
an extreme value for an obscure corner-case. The ARM
(32-bit) kernel has 4 KiB pages, has had that value forever,
and can't be configured to any other value. The use-case is
IIUC "Aarch32" emulation on an "Aarch64" (arm64) kernel, but
not just that, but a setup where the Linux page-size is
configured to something other than the *default* 4 KiB. Not
sure there actually any such systems in use, again with
both Aarch32 compatibility support and a non-4KiB pagesize,
with all the warnings in the kernel config and requiring the
"EXPERT" level set on.
So, let's do like x86-64 in a2267dbfc9e1 "x86-64: Use only
one default max-page-size" and set ELF_MAXPAGESIZE to 4096.
bfd:
* elf32-arm.c (ELF_COMMONPAGESIZE): Always set to 0x1000.
---
bfd/elf32-arm.c | 4 ----
1 file changed, 4 deletions(-)
Comments
On Tue, Jan 03, 2023 at 03:41:19AM +0100, Hans-Peter Nilsson wrote:
> So, let's do like x86-64 in a2267dbfc9e1 "x86-64: Use only
> one default max-page-size" and set ELF_MAXPAGESIZE to 4096.
No objections here, but should be acked by one of the ARM maintainers.
>
> bfd:
> * elf32-arm.c (ELF_COMMONPAGESIZE): Always set to 0x1000.
> ---
> bfd/elf32-arm.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
> index 0cd3aec14368..b83c43c741c9 100644
> --- a/bfd/elf32-arm.c
> +++ b/bfd/elf32-arm.c
> @@ -20261,11 +20261,7 @@ elf32_arm_backend_symbol_processing (bfd *abfd, asymbol *sym)
> #define ELF_ARCH bfd_arch_arm
> #define ELF_TARGET_ID ARM_ELF_DATA
> #define ELF_MACHINE_CODE EM_ARM
> -#ifdef __QNXTARGET__
> #define ELF_MAXPAGESIZE 0x1000
> -#else
> -#define ELF_MAXPAGESIZE 0x10000
> -#endif
> #define ELF_COMMONPAGESIZE 0x1000
>
> #define bfd_elf32_mkobject elf32_arm_mkobject
> --
> 2.30.2
>
> From: Alan Modra <amodra@gmail.com>
> Date: Tue, 3 Jan 2023 09:12:17 +0100
> On Tue, Jan 03, 2023 at 03:41:19AM +0100, Hans-Peter Nilsson wrote:
> > So, let's do like x86-64 in a2267dbfc9e1 "x86-64: Use only
> > one default max-page-size" and set ELF_MAXPAGESIZE to 4096.
>
> No objections here, but should be acked by one of the ARM maintainers.
(taking the opportunity to CC: ARM-maintainers)
> >
> > bfd:
> > * elf32-arm.c (ELF_COMMONPAGESIZE): Always set to 0x1000.
JFTR:
Doh: s/ELF_COMMONPAGESIZE/ELF_MAXPAGESIZE/ of course.
brgds, H-P
PS. https://sourceware.org/pipermail/binutils/2023-January/125399.html
> From: Hans-Peter Nilsson <Hans-Peter.Nilsson@axis.com>
> Date: Tue, 3 Jan 2023 16:16:29 +0100
PING. Ok for master, 2.40 and 2.39?
Refreshed patch, i.e. without errata (to be followed by a
testsuite fix, to be committed before this one for bisection
cleanliness):
---- 8< ----
Since commit 9833b7757d24, "PR28824, relro security issues",
ELF_MAXPAGESIZE matters much more, with regards to layout of
the linked file. That commit fixed an actual bug, but also
exposes a problem for targets were that value is too high.
For example, for ARM(32, a.k.a. "Aarch32") specifically
bfd_arch_arm, it's set to 64 KiB, making all Linux(/GNU)
targets pay an extra amount of up to 60 KiB of bloat in
DSO:s and executables. This matters when there are many
such files, and where storage is expensive.
It's *mostly* bloat when using a Linux kernel, as ARM(32) is
a good example of an target where ELF_MAXPAGESIZE is set to
an extreme value for an obscure corner-case. The ARM
(32-bit) kernel has 4 KiB pages, has had that value forever,
and can't be configured to any other value. The use-case is
IIUC "Aarch32" emulation on an "Aarch64" (arm64) kernel, but
not just that, but a setup where the Linux page-size is
configured to something other than the *default* 4 KiB. Not
sure there actually any such systems in use, again with
both Aarch32 compatibility support and a non-4KiB pagesize,
with all the warnings in the kernel config and requiring the
"EXPERT" level set on.
So, let's do like x86-64 in a2267dbfc9e1 "x86-64: Use only
one default max-page-size" and set ELF_MAXPAGESIZE to 4096.
bfd:
* elf32-arm.c (ELF_MAXPAGESIZE): Always set to 0x1000.
---
bfd/elf32-arm.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 96ba509f505d..a6d83b97c97d 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -20290,11 +20290,7 @@ elf32_arm_backend_symbol_processing (bfd *abfd, asymbol *sym)
#define ELF_ARCH bfd_arch_arm
#define ELF_TARGET_ID ARM_ELF_DATA
#define ELF_MACHINE_CODE EM_ARM
-#ifdef __QNXTARGET__
#define ELF_MAXPAGESIZE 0x1000
-#else
-#define ELF_MAXPAGESIZE 0x10000
-#endif
#define ELF_COMMONPAGESIZE 0x1000
#define bfd_elf32_mkobject elf32_arm_mkobject
To be committed before the ELF_MAXPAGESIZE 0x1000 fix,
wherever (and if ever) that one's approved.
Ok as above?
---- 8< ----
Subject: ld/testsuite: Adjust for ELF_MAXPAGESIZE 0x1000
Many tests reflect a setting of ELF_MAXPAGESIZE to 64 KiB.
With ELF_MAXPAGESIZE changed to 4 KiB, layout is sometimes
different and symbols end up in other places. Avoid churn
and regexpification of old test patterns by passing the
max-page-size setting active at the time.
ld/testsuite:
* testsuite/ld-arm/arm-elf.exp,
testsuite/ld-arm/non-contiguous-arm2.d,
testsuite/ld-arm/non-contiguous-arm3.d,
testsuite/ld-arm/non-contiguous-arm5.d,
testsuite/ld-arm/non-contiguous-arm6.d,
testsuite/ld-arm/thumb-plt-got.d, testsuite/ld-arm/thumb-plt.d:
Pass -z max-page-size=0x10000 explicitly to test that rely on
that value in output-matching patterns.
---
ld/testsuite/ld-arm/arm-elf.exp | 49 ++++++++++++-----------
ld/testsuite/ld-arm/non-contiguous-arm2.d | 2 +-
ld/testsuite/ld-arm/non-contiguous-arm3.d | 2 +-
ld/testsuite/ld-arm/non-contiguous-arm5.d | 2 +-
ld/testsuite/ld-arm/non-contiguous-arm6.d | 2 +-
ld/testsuite/ld-arm/thumb-plt-got.d | 2 +-
ld/testsuite/ld-arm/thumb-plt.d | 2 +-
7 files changed, 32 insertions(+), 29 deletions(-)
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp
index 747155fc8168..9c8056478cec 100644
--- a/ld/testsuite/ld-arm/arm-elf.exp
+++ b/ld/testsuite/ld-arm/arm-elf.exp
@@ -640,7 +640,9 @@ set armeabitests_nonacl {
{"Multiple farcalls" "-Ttext 0x1000 --section-start .foo=0x2002020" "" "" {farcall-mix.s}
{{objdump -d farcall-mix.d}}
"farcall-mix"}
- {"Multiple farcalls from several sections" "-Ttext 0x1000 --section-start .mytext=0x2000 --section-start .foo=0x2003020" "" "" {farcall-mix2.s}
+ {"Multiple farcalls from several sections"
+ "-Ttext 0x1000 --section-start .mytext=0x2000 --section-start .foo=0x2003020 -z max-page-size=0x10000"
+ "" "" {farcall-mix2.s}
{{objdump -d farcall-mix2.d}}
"farcall-mix2"}
@@ -738,7 +740,7 @@ set armeabitests_nonacl {
{{ld cmse-veneers-wrong-entryfct.out}}
"cmse-veneers-wrong-entryfct"}
{"Secure gateway veneers (ARMv8-M Baseline)"
- "-Ttext=0x8000 --section-start .gnu.sgstubs=0x20000 --gc-sections" ""
+ "-Ttext=0x8000 --section-start .gnu.sgstubs=0x20000 --gc-sections -z max-page-size=0x10000" ""
"-march=armv8-m.base -mthumb"
{cmse-veneers.s}
{{objdump {-d -j .gnu.sgstubs} cmse-veneers.d}
@@ -746,7 +748,7 @@ set armeabitests_nonacl {
{nm {} cmse-veneers.rd}}
"cmse-veneers-baseline"}
{"Secure gateway veneers (ARMv8-M Mainline)"
- "-Ttext=0x8000 --section-start .gnu.sgstubs=0x20000 --gc-sections" ""
+ "-Ttext=0x8000 --section-start .gnu.sgstubs=0x20000 --gc-sections -z max-page-size=0x10000" ""
"-march=armv8-m.main -mthumb"
{cmse-veneers.s}
{{objdump {-d -j .gnu.sgstubs} cmse-veneers.d}
@@ -909,32 +911,32 @@ set armeabitests_nonacl {
"-EL -Ttext=0x8f00 --fix-cortex-a8" "" "-EL" {cortex-a8-fix-blx-bcond.s}
{{objdump -dr cortex-a8-fix-blx-bcond.d}}
"cortex-a8-fix-blx-bcond"}
- {"IFUNC test 1" "-T ifunc-static.ld" "" "" {ifunc-1.s}
+ {"IFUNC test 1" "-T ifunc-static.ld -z max-page-size=0x10000" "" "" {ifunc-1.s}
{{objdump -d ifunc-1.dd}
{objdump {-s -j.data -j.got} ifunc-1.gd}
{readelf -dr ifunc-1.rd}}
"ifunc-1"}
- {"IFUNC test 2" "-T ifunc-static.ld" "" "" {ifunc-2.s}
+ {"IFUNC test 2" "-T ifunc-static.ld -z max-page-size=0x10000" "" "" {ifunc-2.s}
{{objdump -d ifunc-2.dd}
{objdump {-s -j.data -j.got} ifunc-2.gd}
{readelf -dr ifunc-2.rd}}
"ifunc-2"}
- {"IFUNC test 5" "-T ifunc-static.ld" "" "" {ifunc-5.s}
+ {"IFUNC test 5" "-T ifunc-static.ld -z max-page-size=0x10000" "" "" {ifunc-5.s}
{{objdump -d ifunc-5.dd}
{objdump {-s -j.data -j.got} ifunc-5.gd}
{readelf -dr ifunc-5.rd}}
"ifunc-5"}
- {"IFUNC test 6" "-T ifunc-static.ld" "" "" {ifunc-6.s}
+ {"IFUNC test 6" "-T ifunc-static.ld -z max-page-size=0x10000" "" "" {ifunc-6.s}
{{objdump -d ifunc-6.dd}
{objdump {-s -j.data -j.got} ifunc-6.gd}
{readelf -dr ifunc-6.rd}}
"ifunc-6"}
- {"IFUNC test 11" "-T ifunc-static.ld" "" "" {ifunc-11.s}
+ {"IFUNC test 11" "-T ifunc-static.ld -z max-page-size=0x10000" "" "" {ifunc-11.s}
{{objdump -d ifunc-11.dd}
{objdump {-s -j.data -j.got} ifunc-11.gd}
{readelf -dr ifunc-11.rd}}
"ifunc-11"}
- {"IFUNC test 17" "-T ifunc-static.ld" "" "" {ifunc-17.s}
+ {"IFUNC test 17" "-T ifunc-static.ld -z max-page-size=0x10000" "" "" {ifunc-17.s}
{{objdump -d ifunc-17.dd}
{objdump {-s -j.data -j.got} ifunc-17.gd}
{readelf -r ifunc-17.rd}}
@@ -1007,7 +1009,7 @@ set armeabitests_nonacl_shared {
"farcall-mixed-lib.so"}
{"Cortex-A8 erratum fix, b.w to PLT"
- "-EL -Tcortex-a8-fix-plt.ld --fix-cortex-a8 -shared" "" "-EL"
+ "-EL -Tcortex-a8-fix-plt.ld --fix-cortex-a8 -shared -z max-page-size=0x10000" "" "-EL"
{cortex-a8-fix-b-plt.s}
{{objdump -dr cortex-a8-fix-b-plt.d}}
"cortex-a8-fix-b-plt"}
@@ -1027,65 +1029,66 @@ set armeabitests_nonacl_shared {
{{objdump -dr cortex-a8-fix-blx-plt.d}}
"cortex-a8-fix-blx-plt"}
{"Cortex-A8 erratum fix, relocate bl.w to PLT"
- "-EL --section-start=.plt=0x8e00 -Ttext=0x8f00 --fix-cortex-a8 -shared --hash-style=sysv" ""
+ "-EL --section-start=.plt=0x8e00 -Ttext=0x8f00 --fix-cortex-a8 -shared --hash-style=sysv -z max-page-size=0x10000"
+ ""
"-EL" {cortex-a8-thumb-target.s cortex-a8-fix-bl-rel.s}
{{objdump -dr cortex-a8-fix-bl-rel-plt.d}}
"cortex-a8-fix-bl-rel-thumb"}
- {"IFUNC test 3" "-T ifunc-dynamic.ld -shared" "" "" {ifunc-3.s}
+ {"IFUNC test 3" "-T ifunc-dynamic.ld -shared -z max-page-size=0x10000" "" "" {ifunc-3.s}
{{objdump -d ifunc-3.dd}
{objdump {-s -j.data -j.got} ifunc-3.gd}
{readelf -r ifunc-3.rd}}
"ifunc-3.so"}
- {"IFUNC test 4" "-T ifunc-dynamic.ld -shared" "" "" {ifunc-4.s}
+ {"IFUNC test 4" "-T ifunc-dynamic.ld -shared -z max-page-size=0x10000" "" "" {ifunc-4.s}
{{objdump -d ifunc-4.dd}
{objdump {-s -j.data -j.got} ifunc-4.gd}
{readelf -r ifunc-4.rd}}
"ifunc-4.so"}
- {"IFUNC test 7" "-T ifunc-dynamic.ld tmpdir/ifunc-3.so -shared" ""
+ {"IFUNC test 7" "-T ifunc-dynamic.ld tmpdir/ifunc-3.so -shared -z max-page-size=0x10000" ""
"" {ifunc-7.s}
{{objdump -d ifunc-7.dd}
{objdump {-s -j.data -j.got} ifunc-7.gd}
{readelf -r ifunc-7.rd}}
"ifunc-7.so"}
- {"IFUNC test 12" "-T ifunc-dynamic.ld -shared" "" "" {ifunc-12.s}
+ {"IFUNC test 12" "-T ifunc-dynamic.ld -shared -z max-page-size=0x10000" "" "" {ifunc-12.s}
{{objdump -d ifunc-12.dd}
{objdump {-s -j.data -j.got} ifunc-12.gd}
{readelf -r ifunc-12.rd}}
"ifunc-12.so"}
- {"IFUNC test 9" "-T ifunc-dynamic.ld tmpdir/ifunc-3.so" "" "" {ifunc-9.s}
+ {"IFUNC test 9" "-T ifunc-dynamic.ld tmpdir/ifunc-3.so -z max-page-size=0x10000" "" "" {ifunc-9.s}
{{objdump -d ifunc-9.dd}
{objdump {-s -j.data -j.got} ifunc-9.gd}
{readelf -r ifunc-9.rd}}
"ifunc-9"}
- {"IFUNC test 10" "-T ifunc-dynamic.ld tmpdir/ifunc-4.so" "" "" {ifunc-10.s}
+ {"IFUNC test 10" "-T ifunc-dynamic.ld tmpdir/ifunc-4.so -z max-page-size=0x10000" "" "" {ifunc-10.s}
{{objdump -d ifunc-10.dd}
{objdump {-s -j.data -j.got} ifunc-10.gd}
{readelf -r ifunc-10.rd}}
"ifunc-10"}
- {"IFUNC test 13" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so" "" "" {ifunc-13.s}
+ {"IFUNC test 13" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so -z max-page-size=0x10000" "" "" {ifunc-13.s}
{{objdump -d ifunc-13.dd}
{objdump {-s -j.data -j.got} ifunc-13.gd}
{readelf -r ifunc-13.rd}}
"ifunc-13"}
- {"IFUNC test 14" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so" "" "" {ifunc-14.s}
+ {"IFUNC test 14" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so -z max-page-size=0x10000" "" "" {ifunc-14.s}
{{objdump -d ifunc-14.dd}
{objdump {-s -j.data -j.got} ifunc-14.gd}
{readelf -r ifunc-14.rd}}
"ifunc-14"}
- {"IFUNC test 15" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so" "" "" {ifunc-15.s}
+ {"IFUNC test 15" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so -z max-page-size=0x10000" "" "" {ifunc-15.s}
{{objdump -d ifunc-15.dd}
{objdump {-s -j.data -j.got} ifunc-15.gd}
{readelf -r ifunc-15.rd}}
"ifunc-15"}
- {"IFUNC test 16" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so" "" "" {ifunc-16.s}
+ {"IFUNC test 16" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so -z max-page-size=0x10000" "" "" {ifunc-16.s}
{{objdump -d ifunc-16.dd}
{objdump {-s -j.data -j.got} ifunc-16.gd}
{readelf -r ifunc-16.rd}}
"ifunc-16"}
- {"Long PLT entries in executables" "--long-plt -shared --section-start=.plt=0x1000 --section-start=.got=0xf0001100" ""
- "" {long-plt-format.s}
+ {"Long PLT entries in executables"
+ "--long-plt -shared --section-start=.plt=0x1000 --section-start=.got=0xf0001100" "" "" {long-plt-format.s}
{{objdump "-d -j .plt" long-plt-format.d}}
"long-plt-format"}
diff --git a/ld/testsuite/ld-arm/non-contiguous-arm2.d b/ld/testsuite/ld-arm/non-contiguous-arm2.d
index 811230c212b8..ed738bcd09c9 100644
--- a/ld/testsuite/ld-arm/non-contiguous-arm2.d
+++ b/ld/testsuite/ld-arm/non-contiguous-arm2.d
@@ -1,6 +1,6 @@
#name: non-contiguous-arm2
#source: non-contiguous-arm.s
-#ld: --enable-non-contiguous-regions -T non-contiguous-arm2.ld
+#ld: --enable-non-contiguous-regions -T non-contiguous-arm2.ld -z max-page-size=0x10000
#objdump: -rdth
#xfail: [is_generic]
diff --git a/ld/testsuite/ld-arm/non-contiguous-arm3.d b/ld/testsuite/ld-arm/non-contiguous-arm3.d
index 9d5bc5649625..2912f35d0f7b 100644
--- a/ld/testsuite/ld-arm/non-contiguous-arm3.d
+++ b/ld/testsuite/ld-arm/non-contiguous-arm3.d
@@ -1,6 +1,6 @@
#name: non-contiguous-arm3
#source: non-contiguous-arm.s
-#ld: --enable-non-contiguous-regions -T non-contiguous-arm3.ld
+#ld: --enable-non-contiguous-regions -T non-contiguous-arm3.ld -z max-page-size=0x10000
#objdump: -rdth
#xfail: [is_generic]
#skip: arm*nacl
diff --git a/ld/testsuite/ld-arm/non-contiguous-arm5.d b/ld/testsuite/ld-arm/non-contiguous-arm5.d
index 730df2fc5475..f41f50afd0b6 100644
--- a/ld/testsuite/ld-arm/non-contiguous-arm5.d
+++ b/ld/testsuite/ld-arm/non-contiguous-arm5.d
@@ -1,6 +1,6 @@
#name: non-contiguous-arm5
#source: non-contiguous-arm.s
-#ld: --enable-non-contiguous-regions -T non-contiguous-arm5.ld
+#ld: --enable-non-contiguous-regions -T non-contiguous-arm5.ld -z max-page-size=0x10000
#objdump: -rdth
#xfail: [is_generic]
diff --git a/ld/testsuite/ld-arm/non-contiguous-arm6.d b/ld/testsuite/ld-arm/non-contiguous-arm6.d
index 9a9869caf3f5..3d737f0905e9 100644
--- a/ld/testsuite/ld-arm/non-contiguous-arm6.d
+++ b/ld/testsuite/ld-arm/non-contiguous-arm6.d
@@ -1,6 +1,6 @@
#name: non-contiguous-arm6
#source: non-contiguous-arm.s
-#ld: --enable-non-contiguous-regions -T non-contiguous-arm6.ld
+#ld: --enable-non-contiguous-regions -T non-contiguous-arm6.ld -z max-page-size=0x10000
#objdump: -rdth
#xfail: [is_generic]
#skip: arm*nacl
diff --git a/ld/testsuite/ld-arm/thumb-plt-got.d b/ld/testsuite/ld-arm/thumb-plt-got.d
index 370a4e2c6033..5cebae23d453 100644
--- a/ld/testsuite/ld-arm/thumb-plt-got.d
+++ b/ld/testsuite/ld-arm/thumb-plt-got.d
@@ -1,6 +1,6 @@
#source: thumb-plt.s
#name: Thumb only PLT and GOT LSB Symbol
-#ld: -shared -e0
+#ld: -shared -e0 -z max-page-size=0x10000
#readelf: -rx .got
#skip: *-*-pe *-*-wince *-*-vxworks armeb-*-* *-*-gnueabihf
diff --git a/ld/testsuite/ld-arm/thumb-plt.d b/ld/testsuite/ld-arm/thumb-plt.d
index 606b67e26e08..596c8a949dfe 100644
--- a/ld/testsuite/ld-arm/thumb-plt.d
+++ b/ld/testsuite/ld-arm/thumb-plt.d
@@ -1,6 +1,6 @@
#source: thumb-plt.s
#name: Thumb only PLT and GOT
-#ld: -shared -e0
+#ld: -shared -e0 -z max-page-size=0x10000
#objdump: -dr
#skip: *-*-pe *-*-wince *-*-vxworks armeb-*-* *-*-gnueabihf
I forgot to mention: with testsuite adjustment, clean test
results for cross to arm-unknown-linux-gnueabi,
arm-unknown-eabi and aarch64-linux-gnu (since the latter
includes the armelf_linux_eabi emulation).
brgds, H-P
Hi Hans-Peter,
> PING. Ok for master, 2.40 and 2.39?
OK for all three.
Cheers
Nick
Hi Hans-Peter,
> To be committed before the ELF_MAXPAGESIZE 0x1000 fix,
> wherever (and if ever) that one's approved.
>
> Ok as above?
Also approved (branches and mainline). Please apply.
Cheers
Nick
@@ -20261,11 +20261,7 @@ elf32_arm_backend_symbol_processing (bfd *abfd, asymbol *sym)
#define ELF_ARCH bfd_arch_arm
#define ELF_TARGET_ID ARM_ELF_DATA
#define ELF_MACHINE_CODE EM_ARM
-#ifdef __QNXTARGET__
#define ELF_MAXPAGESIZE 0x1000
-#else
-#define ELF_MAXPAGESIZE 0x10000
-#endif
#define ELF_COMMONPAGESIZE 0x1000
#define bfd_elf32_mkobject elf32_arm_mkobject