Apply two linker scripts when linking i386 kernel modules.
The first is used to determine whether a kernel module has a
set_pcpu or a set_vnet section and record it in a new symbol.
The new symbol is reduced to either 1 (if the section exist) or
0 (if the section does not exist). The value of the symbol will be
used in the second linker script to enlarge (pad at the end) an already
existing section by 1 byte.
This is needed as the code generated on certain architectures for
non-simple-types, e.g., an array can generate an absolute relocation
on the edge (just outside) the section and thus will not be properly
relocated. Adding the 1 byte pad to the end of the section will ensure
that even absolute relocations of complex types will be inside the
section, if they are the last object in there and hence relocation will
work properly and avoid panics such as observed with carp.ko.
With suggestions from: arichardson