# 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]](): 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*"