Zipr induces dlopen bug
Zipr creates binary files where the text is in multiple segments. By default, the "textra" segment is very far (2mb+) away from the original text. This allows the dynamic linker to put "other libraries" in the unused space between the text segments. Normally this is fine.
__dlopen, however, verifies that it's called from either libdl or libc. If libdl is the "other library" (mentioned above), then __dlopen incorrectly infers that it's part of the zipr'd binary.
Suggested fix: have zipr prefer to put text immediately after the r/o data, and only if that area overflows append text at the end of the file.