In the GNUstep v2 ABI (on ELF), we rely on the linker-inserted section
start and stop markers. These only exist when binary has something in
the relevant sections. To ensure that they exist, compilation units
that omit one of the components emit an empty object into the section
that it's not putting anything in. These empty objects are COMDATs and
are merged in the final version.
Unfortunately, there is a corner case where the entry exists in the code
emitted by the front end but is then elided during optimisation. We
already unconditionally emitted an empty selector to avoid this case for
message sends but it was still a problem for constant strings.
This change unconditionally emits these placeholders for everything.
This results in very slightly larger .o files but ensures that any
future optimisation that elides more things will not prevent compilation
and so reduces fragility.
Fixes #47536