4

So basically I am using objdump to disassemble a binary from GNU Coreutils, on 32-bit Linux x86.

In the disassembled code, I found one "broken" instruction like this:

 804b4db:       ff 24 85 e4 09 05 08    jmp    *0x80509e4(,%eax,4)

It seems like a disassemble error?

And, by digging into the section info, I figure out that 0x80509e4 inside the .rodata section.

So does it mean that 0x80509e4 is a jump table?

perror
  • 19,083
  • 29
  • 87
  • 150
lllllllllllll
  • 2,485
  • 2
  • 32
  • 50

1 Answers1

7

This is just the ugly AT&T syntax. In Intel syntax it's:

jmp dword ptr [eax*4+0x80509e4]

And yes, it's most likely a jump table.

You can switch objdump to Intel syntax by adding -M intel to the command line.

Igor Skochinsky
  • 36,553
  • 7
  • 65
  • 115