https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68016
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Yeah, this is intentional design decision, trying to register something for an object that might be living in completely different library and where the gap might not be supplied is just wrong. As the copy relocations are created by the linker, there is no way (except perhaps some ELF extensions) to instruct the linker to also allocate the gap around it, so that it could be registered in the executable or PIE.