This fixes PR33598.
It looks may be usefult for next case:
When we have 2 DSO's, like in this PR, if lower level DSO may change slightly (in part of some symbol's st_size)
and higher-level DSO is rebuilt, then tools that monitoring checksum of high level DSO file can notice it and trigger
cascade of some other unnecessary actions. If we set st_size to zero, that can be avoided.
gABI says: "st_size
Many symbols have associated sizes. For example, a data object's size is the number of bytes contained in the object.
This member holds 0 if the symbol has no size or an unknown size."
(http://refspecs.linuxbase.org/elf/gabi4+/ch4.symtab.html)
Looks setting zero is correct from gABI size because in the given example above symbol size can be different in runtime
and therefore can be probably called 'unknown' when linking.
It seems this comment describes something too specific. The most important part is that the size field for the undefined symbol is not significant, so it can be any value. You didn't mention that. I'd write: