* Fix default image base and max page size.
* Support more relocation types.
* Support secure PLT (see below). musl supports only secure PLT
* Support .got2 for position independent code
* Add a new thunk: PPC32PltCallStub. Similar to PPC64PltCallStub, it is
used by R_PPC_REL24 and R_PPC_PLTREL24.
On ppc32, a PLT stub used in -pie/-shared loads an address relative to
.got2+0x8000. Two object files have 2 .got2 with different addresses.
Thus a PLT stub can't be shared by two object files.
To handle this incompatibility, make Thunk::isCompatibleWith accept
another parameter `const InputSection &`.
PowerPC psABI specified an old-style .plt (BSS PLT) (.plt is NOBITS and
written by the dynamic loader) that is both writable and executable.
Linkers don't make separate RW- and RWE segments, which causes all
initially writable memory (think .data) executable. This is a big
security concern so a new PLT scheme (secure PLT) was developed to
address the security issue.
This helps PR40888. Actually, with this patch, I think many
-shared/-static/-pie applications linked against musl will work.
A hello world program linked against glibc doesn't run. TLS is not
implemented but I believe PPC.cpp can just reuse TLS code from
PPC64.cpp. I create ppc32-* instead of ppc-* for tests as I plan to use
ppc-* for tests shareable on ppc32 and ppc64.