https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63888
--- Comment #27 from Jakub Jelinek <jakub at gcc dot gnu.org> --- And even without section anchors, there is no guarantee there aren't relative relocations in between the symbols, that just have been applied already at assembly time (say relocations against .L* symbols). Another reason where this would break is that various programs accumulate symbols in some sections and assume the result forms an array. If the linker attempted to break that appart, Linux kernel and various other projects would fail miserably. So without something like -fdata-sections the linker really can't do such changes.