objdump没有在ELF 64位x86-64上工作,

时间:2015-12-18 21:34:48

标签: c binutils

我有一个来自Tiny C编译器的64位ELF目标代码。我无法通过gobjdump来显示反汇编的代码。我使用OS X 10.10.5。

$ file hello.o 
hello.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
$ gobjdump -d hello.o
gobjdump: hello.o: File format not recognized

$ greadelf -h hello.o
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (Relocatable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          228 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           64 (bytes)
  Number of section headers:         7
  Section header string table index: 6

额外信息:

$uname -a
Darwin Nawals-MacBook-Air.local 14.5.0 Darwin Kernel Version 14.5.0: 

Tue Sep  1 21:23:09 PDT 2015; root:xnu-2782.50.1~1/RELEASE_X86_64 x86_64

$ gobjdump -i
BFD header file version (GNU Binutils) 2.24
mach-o-x86-64
mach-o-i386
mach-o-le
mach-o-be
mach-o-fat
pef
pef-xlib
sym
srec
symbolsrec
verilog
tekhex
binary
ihex

我不明白为什么堆栈溢出认为我的问题主要是代码 - 我想尽可能多地提供信息以帮助人们回答。我并不认为是糊蛋白等人。在这里受到鼓励。

1 个答案:

答案 0 :(得分:3)

可用的输出格式,每个手册页如下:

  -Wl,--oformat,fmt
       Use fmt as output format. The supported output formats are:

       "elf32-i386"
           ELF output format (default)

       "binary"
           Binary image (only for executable output)

       "coff"
           COFF output format (only for executable output for TMS320C67xx
           target)

因此,无论在线声称支持x86-64,最新版本都不支持对象文件的x86-64输出