A quick update: zfs.ko gets quite a lot of relocations with the gcc patch, and the total size of PLT entries generated by kernel's apply_rela() exceeds 64k. Each PLT entry contains a short jump to an expoline thunk located at the end of the PLT array, which is out of range for the first PLT entries. When expolines are off (nobp=1), this problem does not occur. I'm currently looking into a kernel fix.
A quick update: zfs.ko gets quite a lot of relocations with the gcc patch, and the total size of PLT entries generated by kernel's apply_rela() exceeds 64k. Each PLT entry contains a short jump to an expoline thunk located at the end of the PLT array, which is out of range for the first PLT entries. When expolines are off (nobp=1), this problem does not occur. I'm currently looking into a kernel fix.