blob: 7aeaf66bab1ee4192469bbf75169478e56f9f55a [file] [log] [blame]
# REQUIRES: x86-registered-target
# RUN: yaml2obj --docnum=1 %s -o %t
# RUN: llvm-objdump -d %t --mattr=help 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-DISASSEMBLE
# RUN: llvm-objdump -d %t --mcpu=help 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-DISASSEMBLE
# CHECK: Available CPUs for this target:
# CHECK: Available features for this target:
## To check we still disassemble the file:
# CHECK-DISASSEMBLE: file format elf64-x86-64
## The help message can be printed without -d.
# RUN: llvm-objdump --mattr=help %t 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-NO-DISASSEMBLE
# RUN: llvm-objdump --mcpu=help %t 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-NO-DISASSEMBLE
# CHECK-NO-DISASSEMBLE-NOT: file format elf64-x86-64
## We still handle other options.
# RUN: llvm-objdump --mattr=help --section-headers %t 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-SECTION-HEADERS
# RUN: llvm-objdump --mcpu=help --section-headers %t 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-SECTION-HEADERS
# CHECK-SECTION-HEADERS: Sections:
# CHECK-SECTION-HEADERS: Idx Name Size VMA Type
## We report an error when we can't infer the triple because we don't have --triple or an input object (including a.out).
# RUN: not llvm-objdump --mattr=help 2>&1 \
# RUN: | FileCheck %s --check-prefix=CHECK-MISSING-ERROR --implicit-check-not=error: -DMSG=%errc_ENOENT
# RUN: not llvm-objdump --mcpu=help 2>&1 \
# RUN: | FileCheck %s --check-prefix=CHECK-MISSING-ERROR --implicit-check-not=error: -DMSG=%errc_ENOENT
# CHECK-MISSING-ERROR: llvm-objdump{{.*}}: error: 'a.out': triple was not specified and could not be inferred from the input file: [[MSG]]
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
# RUN: yaml2obj --docnum=2 %s -o %t.minidump
## We report an error when the binary file isn't an object file format.
# RUN: not llvm-objdump --mattr=help %t.minidump 2>&1 \
# RUN: | FileCheck %s --check-prefix=CHECK-UNSUPPORTED-ERROR --implicit-check-not=error: -DFILE=%t.minidump
# RUN: not llvm-objdump --mcpu=help %t.minidump 2>&1 \
# RUN: | FileCheck %s --check-prefix=CHECK-UNSUPPORTED-ERROR --implicit-check-not=error: -DFILE=%t.minidump
# CHECK-UNSUPPORTED-ERROR: llvm-objdump{{.*}}: error: '[[FILE]]': target triple could not be derived from input file
--- !minidump
Streams:
- Type: SystemInfo
Processor Arch: PPC
Platform ID: Linux
# RUN: llvm-ar rc %t.a %t
# RUN: llvm-objdump --mcpu=help %t.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK
# RUN: llvm-objdump --mattr=help %t.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK
## We report an error when the triple cannot be inferred from any archive member.
# RUN: llvm-ar rc %t.empty.a
# RUN: not llvm-objdump --mcpu=help %t.empty.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK-UNSUPPORTED-ERROR --implicit-check-not=error: -DFILE=%t.empty.a
# RUN: not llvm-objdump --mattr=help %t.empty.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK-UNSUPPORTED-ERROR --implicit-check-not=error: -DFILE=%t.empty.a
## We are able to handle an archive with unsupported binary files. The target is
## derived from the first recognised object file.
# RUN: llvm-ar rc %t.a %t.minidump %t
# RUN: llvm-objdump --mcpu=help %t.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK
# RUN: llvm-objdump --mattr=help %t.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK
## We report an error when the archive is malformed.
# RUN: yaml2obj --docnum=3 %s -o %t.malformed.archive.a
# RUN: not llvm-objdump --mcpu=help %t.malformed.archive.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK-MALFORMED-ARCHIVE-ERROR --implicit-check-not=error: -DFILE=%t.malformed.archive.a
# RUN: not llvm-objdump --mattr=help %t.malformed.archive.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK-MALFORMED-ARCHIVE-ERROR --implicit-check-not=error: -DFILE=%t.malformed.archive.a
# CHECK-MALFORMED-ARCHIVE-ERROR: llvm-objdump{{.*}}: error: '[[FILE]]': truncated or malformed archive
--- !Arch
Members:
- Name: 'foo.c'
Size: '1'
## We report an error when we encounter an unexpected error while iterating files in an archive.
# RUN: yaml2obj --docnum=4 %s -o %t.invalid.error.code.archive.a
# RUN: not llvm-objdump --mcpu=help %t.invalid.error.code.archive.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK-INVALID-ERROR-ARCHIVE-ERROR --implicit-check-not=error: -DFILE=%t.invalid.error.code.archive.a
# RUN: not llvm-objdump --mattr=help %t.invalid.error.code.archive.a 2>&1 \
# RUN: | FileCheck %s --check-prefixes=CHECK-INVALID-ERROR-ARCHIVE-ERROR --implicit-check-not=error: -DFILE=%t.invalid.error.code.archive.a
# CHECK-INVALID-ERROR-ARCHIVE-ERROR: llvm-objdump{{.*}}: error: [[FILE]](<file index: 1>): truncated or malformed archive (long name offset characters after the '/' are not all decimal numbers: '&a25*' for archive member header at offset 68)
--- !Arch
Members:
## We need the first member to be a valid member to trigger the right error.
- Name: 'hello.c/'
- Name: "/&a25*"