Re: [PATCH] linkage: Fix issue with missing symbol size

From: Fāng-ruì Sòng
Date: Fri Apr 29 2022 - 17:08:31 EST


On Fri, Apr 29, 2022 at 1:13 PM Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote:
>
> On Fri, Apr 29, 2022 at 11:18:59AM +0200, Peter Zijlstra wrote:
> >
> > Occasionally, typically when a function doesn't end with 'ret', an
> > alias on that function will have 0 size.
> >
> > The difference between what GCC generates and our linkage magic, is
> > that GCC doesn't appear to provide .size for the alias'ed symbol at
> > all. And indeed, removing this directive cures the issue.
> >
> > Additionally, GCC also doesn't emit .type for alias symbols either, so
> > also omit that.
> >
> > Fixes: e0891269a8c2 ("linkage: add SYM_FUNC_ALIAS{,_LOCAL,_WEAK}()")
> > Suggested-by: Mark Rutland <mark.rutland@xxxxxxx>
> > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
>
> Acked-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
>
> --
> Josh
>

Yeah, an alias inherits the original symbol's st_size.
In case you are interested in the internals, see
https://sourceware.org/bugzilla/show_bug.cgi?id=29012 ("gas: .set
should copy st_size only if src's st_size is unset")