Re: [PATCH v2 00/20] objtool: vmlinux.o and CLANG LTO support

From: Josh Poimboeuf
Date: Fri Jan 22 2021 - 21:31:25 EST


On Fri, Jan 22, 2021 at 05:32:43PM -0800, Nick Desaulniers wrote:
> > In this specific case, find_func_by_offset returns NULL for
> > .text..L.cfi.jumptable.43 at addend 0x8, because Clang doesn't emit
> > jump table symbols for static functions:
> >
> > 0000000000000000 <__typeid__ZTSFjmiE_global_addr>:
> > 0: e9 00 00 00 00 jmpq 5 <__typeid__ZTSFjmiE_global_addr+0x5>
> > 1: R_X86_64_PLT32 io_serial_in-0x4
> > 5: cc int3
> > 6: cc int3
> > 7: cc int3
> > 8: e9 00 00 00 00 jmpq d <__typeid__ZTSFjmiE_global_addr+0xd>
> > 9: R_X86_64_PLT32 mem32_serial_in-0x4
> > d: cc int3
> > e: cc int3
> > f: cc int3
> >
> > Nick, do you remember if there were plans to change this?
>
> Do you have a link to any previous discussion to help jog my mind; I
> don't really remember this one.
>
> Is it that `__typeid__ZTSFjmiE_global_addr` is the synthesized jump
> table, and yet there is no `__typeid__ZTSFjmiE_global_addr` entry in
> the symbol table?

I think he means there's not a 'mem32_serial_in.cfi_jt' symbol at
'__typeid__ZTSFjmiE_global_addr+8'. Probably more aggressive symbol
pruning from the assembler.

It's fine though. I just need to rewrite the CFI support a bit.

But that can come later. For now I'll just drop the two CFI-related
patches from this set so I can merge the others next week.

--
Josh