While testing a new Solaris/x86 assembler that does support cfi directives, I ran
into a link failure while bootstrapping gcc mainline with that /bin/as and gld 2.24:
/vol/gcc/bin/gld-2.24: .eh_frame has both ordered [`.eh_frame' in _muldi3_s.o] and unordered [`.eh_frame' in /usr/lib/amd64/crti.o] sections
/vol/gcc/bin/gld-2.24: final link failed: Bad value
collect2: error: ld returned 1 exit status
/bin/as sets SHF_LINK_ORDER in .eh_frame, but as you can see, the bundled crti.o
lacks that flag.
The question is: what's the basis for this refusal: I see nothing of the kind
in the current ELF gABI:
I see that this check (without the error messages) is already in the original
[patch] Honour SHF_LINK_ORDER
but no justification either.
Why not just emit the sections with SHF_LINK_ORDER set in order and add in the
Ah, just saw this. I just filed bug 26256 with a recent discussion.