On Tue, Sep 15, 2020 at 10:49:12PM +0200, Borislav Petkov wrote:
> On Tue, Sep 15, 2020 at 01:12:24PM -0700, Nick Desaulniers wrote:
> >       1 warning: objtool: ist_exc_vmm_communication()+0x12: unreachable 
> > instruction
> 
> That looks interesting. So your .o has:
> 
> 00000000000004c0 <ist_exc_vmm_communication>:
>  4c0:   55                      push   %rbp
>  4c1:   48 89 e5                mov    %rsp,%rbp
>  4c4:   48 c7 c7 00 00 00 00    mov    $0x0,%rdi
>  4cb:   31 c0                   xor    %eax,%eax
>  4cd:   e8 00 00 00 00          callq  4d2 <ist_exc_vmm_communication+0x12>
>  4d2:   0f 0b                   ud2    
>  4d4:   66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
>  4db:   00 00 00 00 
>  4df:   90                      nop

If you disassemble with "objdump -dr" it shows the relocations:

00000000000004c0 <ist_exc_vmm_communication>:
 4c0:   55                      push   %rbp
 4c1:   48 89 e5                mov    %rsp,%rbp
 4c4:   48 c7 c7 00 00 00 00    mov    $0x0,%rdi
                        4c7: R_X86_64_32S       .rodata.str1.1+0x1ef
 4cb:   31 c0                   xor    %eax,%eax
 4cd:   e8 00 00 00 00          callq  4d2 <ist_exc_vmm_communication+0x12>
                        4ce: R_X86_64_PLT32     panic-0x4
 4d2:   0f 0b                   ud2    
 4d4:   66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
 4db:   00 00 00 00 
 4df:   90                      nop

panic() is noreturn, so the compiler is enforcing the fact that it
doesn't return, by trapping if it does return.

I seem to remember that's caused by CONFIG_UBSAN_TRAP.

-- 
Josh

Reply via email to