Re: [PATCH v2 04/19] gendwarfksyms: Add support for type pointers
From: Masahiro Yamada
Date: Wed Aug 28 2024 - 03:15:51 EST
On Wed, Aug 28, 2024 at 3:50 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote:
>
> On Fri, Aug 16, 2024 at 2:39 AM Sami Tolvanen <samitolvanen@xxxxxxxxxx> wrote:
> >
> > The compiler may choose not to emit type information in DWARF for
> > external symbols. Clang, for example, does this for symbols not
> > defined in the current TU.
> >
> > To provide a way to work around this issue, add support for
> > __gendwarfksyms_ptr_<symbol> pointers that force the compiler to emit
> > the necessary type information in DWARF also for the missing symbols.
> >
> > Example usage:
> >
> > #define GENDWARFKSYMS_PTR(sym) \
> > static typeof(sym) *__gendwarfksyms_ptr_##sym __used \
> > __section(".discard.gendwarfksyms") = &sym;
> >
> > extern int external_symbol(void);
> > GENDWARFKSYMS_PTR(external_symbol);
> >
> > Signed-off-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx>
>
>
>
>
> Commit ddb5cdbafaaad6b99d7007ae1740403124502d03
> had a similar idea; it has a reference to each
> export symbol, including the ones defined in different TUs,
> but in assembly code.
>
> Didn't it suffice your need?
>
Presumably, this is an unfortunate duplication, but I do not have an
idea to avoid it.
The symbol reference in assembly code works in *.S as well as *.c.
The C reference will pull-in the debug info, but it will not work in *.S
--
Best Regards
Masahiro Yamada