Messages in this thread | | | From | Sami Tolvanen <> | Date | Mon, 25 Jan 2021 14:43:30 -0800 | Subject | Re: [PATCH v2 00/20] objtool: vmlinux.o and CLANG LTO support |
| |
On Fri, Jan 22, 2021 at 6:26 PM Josh Poimboeuf <jpoimboe@redhat.com> wrote: > > 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.
Correct, the compiler is not emitting mem32_serial_in.cfi_jt here. I seem to recall that the missing jump table symbols also made stack traces harder to follow (__typeid__ZTSFjmiE_global_addr+8 is not very readable), so ideally they shouldn't be pruned.
> 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.
Sure, sounds good.
Sami
| |