SECTIONS command in a linker script may not cover all possible input sections. If there are remaining
input sections after processing SECTIONS commands, they will be put into the output using default rules.
Such sections are called orphan sections.
The default rules are not strictly defined -- that is a set of heuristics. This patch tweaks the default rules a bit
so that LLD can link the Linux kernel.
(http://lxr.free-electrons.com/source/arch/x86/boot/setup.ld#L52)
Value ot _end symbol incorrectly. That was reason of "Setup too big!" assertion fail.
We placed orphans non allocatable sections before _end and so far _end value was too large.
Patch changes placement rules for non allocatable orphans, that way them are alowed to be placed
after assignments to location counter. As a result them are placed after assignment to symbols now
and script above works correctly now.
This is the linker script you are trying to handle.
It doesn't seem to be related to SHF_ALLOC. I wonder if you want to skip a pair of an alignment and an assignment to a symbol instead.