On Wed, Apr 03, 2019 at 08:02:43AM -0700, Randy Dunlap wrote:
> On 4/3/19 1:24 AM, Stephen Rothwell wrote:
> > Hi all,
> > 
> > Changes since 20190402:
> > 
> 
> on x86_64:
> 
> arch/x86/entry/entry_64.o: warning: objtool: .entry.text+0x909: unreachable 
> instruction

Your .o file looks odd.  I can't recreate the issue when I build the
same object.

Did the issue only just now show up?  Can you bisect it?  What version
of binutils are you using?

Here's the disassembly:

------------------
     903:       e8 00 00 00 00          callq  908 <interrupt_entry+0xc8>
                        904: R_X86_64_PC32      trace_hardirqs_off_thunk-0x4
     908:       c3                      retq   
     909:       eb 75                   jmp    980 <common_interrupt>
     90b:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     912:       00 00 00 00 
     916:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     91d:       00 00 00 00 
     921:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     928:       00 00 00 00 
     92c:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     933:       00 00 00 00 
     937:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     93e:       00 00 00 00 
     942:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     949:       00 00 00 00 
     94d:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     954:       00 00 00 00 
     958:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     95f:       00 00 00 00 
     963:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     96a:       00 00 00 00 
     96e:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
     975:       00 00 00 00 
     979:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)

0000000000000980 <common_interrupt>:
------------------

Where the heck does that "jmp 980" come from?  I don't see it in the
code:

------------------
ENTRY(interrupt_entry)
        ....
        TRACE_IRQS_OFF

        ret
END(interrupt_entry)
_ASM_NOKPROBE(interrupt_entry)


/* Interrupt entry/exit. */

        /*
         * The interrupt stubs push (~vector+0x80) onto the stack and
         * then jump to common_interrupt.
         */
        .p2align CONFIG_X86_L1_CACHE_SHIFT
common_interrupt:
------------------

Hopefully gas isn't inserting stray jumps for code alignments...

-- 
Josh

Reply via email to