summaryrefslogtreecommitdiff
path: root/cpan/Module-Build/lib/Module/Build/Notes.pm
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2013-05-23 13:46:05 +0200
committerNicholas Clark <nick@ccl4.org>2013-05-24 21:24:38 +0200
commitc2a50ddb1bed657609ef5e85c7ac5c0bfcaa2c9a (patch)
treeff9c078ad470966531f5e91f7917e7dc2bb8698e /cpan/Module-Build/lib/Module/Build/Notes.pm
parent1a72e160c417a912e69c85d4171a406daa388a27 (diff)
downloadperl-c2a50ddb1bed657609ef5e85c7ac5c0bfcaa2c9a.tar.gz
Ensure that the IV in struct pmop (for ithreads) is aligned properly.
The members of struct pmop vary between ithreads and non-ithreads builds. For ithreads, an IV is used for op_pmoffset. For 32 bit platforms built with -Duse64bitint, IVs are 64 bits, but pointers (and all other members of all OP structures) are 32 bits, hence on 32 bit platforms OP structure sizes can be an odd multiple of 4 bytes. Since the swap to the slab allocator, this is causing problems on architectures where 8 byte IVs have to be 8 byte aligned, notably sparcs. The long-term fix is to replace the IV with an appropriate 32 bit type, as it is being used for an array index. However, for maint-5.18 we need a work around which doesn't change the public headers and ideally doesn't impose a large speed or memory penalty. Hence for now, simply avoid using the slab allocator when allocating a struct pmop. Only do this for 32 bit platforms build with 8 byte IVs and ithreads. This is the interim fix for RT #118055.
Diffstat (limited to 'cpan/Module-Build/lib/Module/Build/Notes.pm')
0 files changed, 0 insertions, 0 deletions