https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84948
--- Comment #1 from Ian Lance Taylor <ian at airs dot com> --- That is just the start of the problem. The garbage collector assumes that all pointers are aligned to their natural boundary. That is, it expects that on a system with four byte pointers, they are always aligned to a four byte boundary when stored in memory. The garbage collector's data structures are designed around that assumption. That will be hard to change.