On Mon, Nov 14 2022 at 12:43, Jiri Slaby wrote:
Symbols referenced from assembler (either directly or e.f. from
from assembler? I'm not aware that the assembler references anything.
Also what does e.f. mean? Did you want to write e.g.?
DEFINE_STATIC_KEY()) need to be global and visible in gcc LTO because
they could end up in a different object file than the assembler. This
than the assembler? Are we shipping the assembler in an object file?
can lead to linker errors without this patch.
git grep -i 'this patch' Documentation/process/
So mark raw_irqentry_exit_cond_resched() as __visible.
And all that tells me what? I know what you want to say, but it's not
there.
Symbols in different compilation units which are referenced from
assembly code either directly or indirectly, e.g. from
DEFINE_STATIC_KEY(), must be marked visible for GCC based LTO builds.
Add the missing __visible annotation to raw_irqentry_exit_cond_resched().
See?
There is no 'global' because it's obvious that a symbol in a different
compilation unit must be global to be resolvable. It's also obvious that
code in different compilation units ends up in different object files.
So stating that it's a 'must' to have such symbols marked visible is
good enough for an argument because that tells the reader that this is a
mandatory requirement for an GCC based LTO build.