[LLVMdev] llvm-objdump
Steve King
steve at metrokings.com
Tue Aug 26 12:43:25 PDT 2014
Hi Kev,
I'm glad to hear llvm-objdump is getting attention. I'm unclear on
how much output specialization one could (or should) do for ELF vs.
Mach-O. If you're game, let's compare an example:
$ cat labeltest.s
.text
foo:
nop
bar:
bum:
nop
jmp bar
jmp bum
jmp baz
nop
baz:
nop
Assembling for x86 and llvm-objdump'ing, i get
$ llvm-mc -arch=x86 -filetype=obj labeltest.s -o x86_labeltest.o
$ llvm-objdump -d x86_labeltest.o
x86_labeltest.o: file format ELF32-i386
Disassembly of section .text:
foo:
0: 90 nop
bum:
1: 90 nop
2: eb fd jmp -3
4: eb fb jmp -5
6: eb 01 jmp 1
8: 90 nop
baz:
9: 90 nop
I get the dump above with or without -symbolize.
My personal golden reference, GNU objdump, does this:
$ objdump -dw x86_labeltest.o
x86_labeltest.o: file format elf32-i386
Disassembly of section .text:
00000000 <foo>:
0: 90 nop
00000001 <bar>:
1: 90 nop
2: eb fd jmp 1 <bar>
4: eb fb jmp 1 <bar>
6: eb 01 jmp 9 <baz>
8: 90 nop
00000009 <baz>:
9: 90 nop
What does otool produce?
On Tue, Aug 26, 2014 at 11:16 AM, Kevin Enderby <enderby at apple.com> wrote:
> For branch targets my preference is to print the target’s address (not the displacement of the branch), and preferably in hex.
I like this too.
> I don’t think having multiple addresses for a target is a real problem with the exception of the address 0 (which is often an unrelocated no addend value). So the trick is to not print the symbol name in the object with the address of zero in those cases
Right, relocations are a special case.
More information about the llvm-dev
mailing list