
This implements an LLVM tool that's flag- and output-compatible with macOS's `otool` -- except for bugs, but from testing with both `otool` and `xcrun otool-classic`, llvm-otool matches vanilla otool's behavior very well already. It's not 100% perfect, but it's a very solid start. This uses the same approach as llvm-objcopy: llvm-objdump uses a different OptTable when it's invoked as llvm-otool. This is possible thanks to D100433. Differential Revision: https://reviews.llvm.org/D100583
25 lines
1.4 KiB
Plaintext
25 lines
1.4 KiB
Plaintext
RUN: llvm-objdump --macho -r %p/Inputs/hello.obj.macho-x86_64 | \
|
|
RUN: FileCheck --check-prefix=VERBOSE %s
|
|
RUN: llvm-otool -rv %p/Inputs/hello.obj.macho-x86_64 | \
|
|
RUN: FileCheck --check-prefix=VERBOSE %s
|
|
RUN: llvm-objdump --macho -r --non-verbose %p/Inputs/hello.obj.macho-x86_64 | \
|
|
RUN: FileCheck --check-prefix=NONVERBOSE %s
|
|
RUN: llvm-otool -r %p/Inputs/hello.obj.macho-x86_64 | \
|
|
RUN: FileCheck --check-prefix=NONVERBOSE %s
|
|
|
|
VERBOSE: Relocation information (__TEXT,__text) 2 entries
|
|
VERBOSE-NEXT: address pcrel length extern type scattered symbolnum/value
|
|
VERBOSE-NEXT: 00000027 True long True BRANCH False _printf
|
|
VERBOSE-NEXT: 0000000b True long True SIGNED False L_.str
|
|
VERBOSE-NEXT: Relocation information (__LD,__compact_unwind) 1 entries
|
|
VERBOSE-NEXT: address pcrel length extern type scattered symbolnum/value
|
|
VERBOSE-NEXT: 00000000 False quad False UNSIGND False 1 (__TEXT,__text)
|
|
|
|
NONVERBOSE: Relocation information (__TEXT,__text) 2 entries
|
|
NONVERBOSE-NEXT: address pcrel length extern type scattered symbolnum/value
|
|
NONVERBOSE-NEXT: 00000027 1 2 1 2 0 4
|
|
NONVERBOSE-NEXT: 0000000b 1 2 1 1 0 0
|
|
NONVERBOSE-NEXT: Relocation information (__LD,__compact_unwind) 1 entries
|
|
NONVERBOSE-NEXT: address pcrel length extern type scattered symbolnum/value
|
|
NONVERBOSE-NEXT: 00000000 0 3 0 0 0 1
|