summaryrefslogtreecommitdiff
path: root/test/tools
diff options
context:
space:
mode:
Diffstat (limited to 'test/tools')
-rw-r--r--test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s2
-rw-r--r--test/tools/llvm-dwarfdump/X86/no_apple_names_verify_buckets.s174
-rwxr-xr-xtest/tools/llvm-nm/X86/Inputs/Strip-ST.dylib.macho-x86_64bin0 -> 8344 bytes
-rw-r--r--test/tools/llvm-nm/X86/dyldinfo.test18
-rw-r--r--test/tools/llvm-nm/wasm/exports.yaml11
-rw-r--r--test/tools/llvm-nm/wasm/weak-symbols.yaml49
-rwxr-xr-xtest/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64bin0 -> 49260 bytes
-rw-r--r--test/tools/llvm-objdump/AArch64/macho-kextbundle.test9
-rwxr-xr-xtest/tools/llvm-objdump/X86/Inputs/kextbundle.macho-x86_64bin0 -> 4152 bytes
-rw-r--r--test/tools/llvm-objdump/X86/macho-disassembly-kextbundle.test9
-rw-r--r--test/tools/llvm-objdump/X86/macho-info-plist.test4
-rw-r--r--test/tools/llvm-objdump/X86/macho-objc-meta-data.test4
-rw-r--r--test/tools/llvm-objdump/macho-exports-trie.test10
-rw-r--r--test/tools/llvm-readobj/Inputs/coff-load-config-data-end.exebin0 -> 1536 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/coff-load-config-x64.dllbin0 -> 9728 bytes
-rw-r--r--test/tools/llvm-readobj/Inputs/coff-load-config-x86.dllbin0 -> 8704 bytes
-rw-r--r--test/tools/llvm-readobj/coff-load-config.test93
-rw-r--r--test/tools/obj2yaml/invalid_input_file.test4
18 files changed, 380 insertions, 7 deletions
diff --git a/test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s b/test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s
index 903153c79a48..7b61a946281b 100644
--- a/test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s
+++ b/test/tools/llvm-dwarfdump/X86/apple_names_verify_buckets.s
@@ -3,7 +3,7 @@
# RUN: | FileCheck %s
# CHECK: Verifying .apple_names...
-# CHECK-NEXT: error:
+# CHECK-NEXT: error: Bucket[0] has invalid hash index: [-2]
# This test is meant to verify that the -verify option
# in llvm-dwarfdump, correctly identifies
diff --git a/test/tools/llvm-dwarfdump/X86/no_apple_names_verify_buckets.s b/test/tools/llvm-dwarfdump/X86/no_apple_names_verify_buckets.s
new file mode 100644
index 000000000000..472ff71794c6
--- /dev/null
+++ b/test/tools/llvm-dwarfdump/X86/no_apple_names_verify_buckets.s
@@ -0,0 +1,174 @@
+# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
+# RUN: | not llvm-dwarfdump -verify - \
+# RUN: | FileCheck %s
+
+# CHECK-NOT: Verifying .apple_names...
+
+# This test is meant to verify that the -verify option
+# in llvm-dwarfdump doesn't produce any .apple_names related
+# output when there's no such section int he object.
+# The test was manually modified to exclude the
+# .apple_names section from the apple_names_verify_buckets.s
+# test file in the same directory.
+
+ .section __TEXT,__text,regular,pure_instructions
+ .file 1 "basic.c"
+ .comm _i,4,2 ## @i
+ .section __DWARF,__debug_str,regular,debug
+Linfo_string:
+ .asciz "basic.c" ## string offset=42
+ .asciz "i" ## string offset=84
+ .asciz "int" ## string offset=86
+ .section __DWARF,__debug_loc,regular,debug
+Lsection_debug_loc:
+ .section __DWARF,__debug_abbrev,regular,debug
+Lsection_abbrev:
+ .byte 1 ## Abbreviation Code
+ .byte 17 ## DW_TAG_compile_unit
+ .byte 1 ## DW_CHILDREN_yes
+ .byte 37 ## DW_AT_producer
+ .byte 14 ## DW_FORM_strp
+ .byte 19 ## DW_AT_language
+ .byte 5 ## DW_FORM_data2
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 16 ## DW_AT_stmt_list
+ .byte 23 ## DW_FORM_sec_offset
+ .byte 27 ## DW_AT_comp_dir
+ .byte 14 ## DW_FORM_strp
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 2 ## Abbreviation Code
+ .byte 52 ## DW_TAG_variable
+ .byte 0 ## DW_CHILDREN_no
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 63 ## DW_AT_external
+ .byte 25 ## DW_FORM_flag_present
+ .byte 58 ## DW_AT_decl_file
+ .byte 11 ## DW_FORM_data1
+ .byte 59 ## DW_AT_decl_line
+ .byte 11 ## DW_FORM_data1
+ .byte 2 ## DW_AT_location
+ .byte 24 ## DW_FORM_exprloc
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 3 ## Abbreviation Code
+ .byte 36 ## DW_TAG_base_type
+ .byte 0 ## DW_CHILDREN_no
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 62 ## DW_AT_encoding
+ .byte 11 ## DW_FORM_data1
+ .byte 11 ## DW_AT_byte_size
+ .byte 11 ## DW_FORM_data1
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 0 ## EOM(3)
+ .section __DWARF,__debug_info,regular,debug
+Lsection_info:
+Lcu_begin0:
+ .long 55 ## Length of Unit
+ .short 4 ## DWARF version number
+Lset0 = Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section
+ .long Lset0
+ .byte 8 ## Address Size (in bytes)
+ .byte 1 ## Abbrev [1] 0xb:0x30 DW_TAG_compile_unit
+ .long 0 ## DW_AT_producer
+ .short 12 ## DW_AT_language
+ .long 42 ## DW_AT_name
+Lset1 = Lline_table_start0-Lsection_line ## DW_AT_stmt_list
+ .long Lset1
+ .long 50 ## DW_AT_comp_dir
+ .byte 2 ## Abbrev [2] 0x1e:0x15 DW_TAG_variable
+ .long 84 ## DW_AT_name
+ .long 51 ## DW_AT_type
+ ## DW_AT_external
+ .byte 1 ## DW_AT_decl_file
+ .byte 1 ## DW_AT_decl_line
+ .byte 9 ## DW_AT_location
+ .byte 3
+ .quad _i
+ .byte 3 ## Abbrev [3] 0x33:0x7 DW_TAG_base_type
+ .long 86 ## DW_AT_name
+ .byte 5 ## DW_AT_encoding
+ .byte 4 ## DW_AT_byte_size
+ .byte 0 ## End Of Children Mark
+ .section __DWARF,__debug_ranges,regular,debug
+Ldebug_range:
+ .section __DWARF,__debug_macinfo,regular,debug
+Ldebug_macinfo:
+Lcu_macro_begin0:
+ .byte 0 ## End Of Macro List Mark
+ .section __DWARF,__apple_objc,regular,debug
+Lobjc_begin:
+ .long 1212240712 ## Header Magic
+ .short 1 ## Header Version
+ .short 0 ## Header Hash Function
+ .long 1 ## Header Bucket Count
+ .long 0 ## Header Hash Count
+ .long 12 ## Header Data Length
+ .long 0 ## HeaderData Die Offset Base
+ .long 1 ## HeaderData Atom Count
+ .short 1 ## DW_ATOM_die_offset
+ .short 6 ## DW_FORM_data4
+ .long -1 ## Bucket 0
+ .section __DWARF,__apple_namespac,regular,debug
+Lnamespac_begin:
+ .long 1212240712 ## Header Magic
+ .short 1 ## Header Version
+ .short 0 ## Header Hash Function
+ .long 1 ## Header Bucket Count
+ .long 0 ## Header Hash Count
+ .long 12 ## Header Data Length
+ .long 0 ## HeaderData Die Offset Base
+ .long 1 ## HeaderData Atom Count
+ .short 1 ## DW_ATOM_die_offset
+ .short 6 ## DW_FORM_data4
+ .long -1 ## Bucket 0
+ .section __DWARF,__apple_types,regular,debug
+Ltypes_begin:
+ .long 1212240712 ## Header Magic
+ .short 1 ## Header Version
+ .short 0 ## Header Hash Function
+ .long 1 ## Header Bucket Count
+ .long 1 ## Header Hash Count
+ .long 20 ## Header Data Length
+ .long 0 ## HeaderData Die Offset Base
+ .long 3 ## HeaderData Atom Count
+ .short 1 ## DW_ATOM_die_offset
+ .short 6 ## DW_FORM_data4
+ .short 3 ## DW_ATOM_die_tag
+ .short 5 ## DW_FORM_data2
+ .short 4 ## DW_ATOM_type_flags
+ .short 11 ## DW_FORM_data1
+ .long 0 ## Bucket 0
+ .long 193495088 ## Hash in Bucket 0
+ .long Ltypes0-Ltypes_begin ## Offset in Bucket 0
+Ltypes0:
+ .long 86 ## int
+ .long 1 ## Num DIEs
+ .long 51
+ .short 36
+ .byte 0
+ .long 0
+ .section __DWARF,__apple_exttypes,regular,debug
+Lexttypes_begin:
+ .long 1212240712 ## Header Magic
+ .short 1 ## Header Version
+ .short 0 ## Header Hash Function
+ .long 1 ## Header Bucket Count
+ .long 0 ## Header Hash Count
+ .long 12 ## Header Data Length
+ .long 0 ## HeaderData Die Offset Base
+ .long 1 ## HeaderData Atom Count
+ .short 7 ## DW_ATOM_ext_types
+ .short 6 ## DW_FORM_data4
+ .long -1 ## Bucket 0
+
+.subsections_via_symbols
+ .section __DWARF,__debug_line,regular,debug
+Lsection_line:
+Lline_table_start0:
diff --git a/test/tools/llvm-nm/X86/Inputs/Strip-ST.dylib.macho-x86_64 b/test/tools/llvm-nm/X86/Inputs/Strip-ST.dylib.macho-x86_64
new file mode 100755
index 000000000000..65eb0ece374f
--- /dev/null
+++ b/test/tools/llvm-nm/X86/Inputs/Strip-ST.dylib.macho-x86_64
Binary files differ
diff --git a/test/tools/llvm-nm/X86/dyldinfo.test b/test/tools/llvm-nm/X86/dyldinfo.test
new file mode 100644
index 000000000000..3a632c57737e
--- /dev/null
+++ b/test/tools/llvm-nm/X86/dyldinfo.test
@@ -0,0 +1,18 @@
+# RUN: llvm-nm %p/Inputs/Strip-ST.dylib.macho-x86_64 | FileCheck --check-prefix=DEFAULT %s
+# RUN: llvm-nm -no-dyldinfo %p/Inputs/Strip-ST.dylib.macho-x86_64 | FileCheck --check-prefix=NO-DYLDINFO %s
+# RUN: llvm-nm -dyldinfo-only %p/Inputs/Strip-ST.dylib.macho-x86_64 | FileCheck --check-prefix=DYLDINFO-ONLY %s
+
+# DEFAULT: 0000000000000f90 T __Bob_is_slow
+# DEFAULT: 0000000000001008 D __T0ims_data
+# DEFAULT: 0000000000000f80 T __T0om_is_not_swift
+# DEFAULT: U dyld_stub_binder
+
+# NO-DYLDINFO: 0000000000000f90 T __Bob_is_slow
+# NO-DYLDINFO-NOT: __T0ims_data
+# NO-DYLDINFO-NOT: __T0om_is_not_swift
+# NO-DYLDINFO: U dyld_stub_binder
+
+# DYLDINFO-ONLY: 0000000000000f90 T __Bob_is_slow
+# DYLDINFO-ONLY: 0000000000001008 D __T0ims_data
+# DYLDINFO-ONLY: 0000000000000f80 T __T0om_is_not_swift
+# DYLDINFO-ONLY-NOT: U dyld_stub_binder
diff --git a/test/tools/llvm-nm/wasm/exports.yaml b/test/tools/llvm-nm/wasm/exports.yaml
index f219c5b3ce1d..c8cb2db0db73 100644
--- a/test/tools/llvm-nm/wasm/exports.yaml
+++ b/test/tools/llvm-nm/wasm/exports.yaml
@@ -1,5 +1,8 @@
# RUN: yaml2obj < %s | llvm-nm - | FileCheck %s
+# That wasm exports of functions and globals are displayed as global data and
+# code symbols.
+
--- !WASM
FileHeader:
Version: 0x00000001
@@ -13,10 +16,10 @@ Sections:
Exports:
- Name: foo
Kind: FUNCTION
- Index: 0x00000000
+ Index: 0x00000004
- Name: bar
Kind: GLOBAL
- Index: 0x00000000
+ Index: 0x00000002
-# CHECK: 00000001 D bar
-# CHECK: 00000000 T foo
+# CHECK: 00000002 D bar
+# CHECK: 00000004 T foo
diff --git a/test/tools/llvm-nm/wasm/weak-symbols.yaml b/test/tools/llvm-nm/wasm/weak-symbols.yaml
new file mode 100644
index 000000000000..682a874ea590
--- /dev/null
+++ b/test/tools/llvm-nm/wasm/weak-symbols.yaml
@@ -0,0 +1,49 @@
+# RUN: yaml2obj < %s | llvm-nm - | FileCheck %s
+
+# That wasm exports of functions and globals are displayed as global data and
+# code symbols.
+
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: TYPE
+ Signatures:
+ - ReturnType: I32
+ ParamTypes:
+ - I32
+ - Type: IMPORT
+ Imports:
+ - Module: env
+ Field: weak_import_func
+ Kind: FUNCTION
+ SigIndex: 0
+ - Module: env
+ Field: weak_import_data
+ Kind: GLOBAL
+ GlobalType: I32
+ GlobalMutable: false
+ - Type: EXPORT
+ Exports:
+ - Name: weak_global_func
+ Kind: FUNCTION
+ Index: 0x00000004
+ - Name: weak_global_data
+ Kind: GLOBAL
+ Index: 0x00000002
+ - Type: CUSTOM
+ Name: linking
+ SymbolInfo:
+ - Name: weak_global_func
+ Flags: 1
+ - Name: weak_global_data
+ Flags: 1
+ - Name: weak_import_func
+ Flags: 1
+ - Name: weak_import_data
+ Flags: 1
+
+# CHECK: 00000002 W weak_global_data
+# CHECK: 00000004 W weak_global_func
+# CHECK: w weak_import_data
+# CHECK: w weak_import_func
diff --git a/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64
new file mode 100755
index 000000000000..4a21c2e38408
--- /dev/null
+++ b/test/tools/llvm-objdump/AArch64/Inputs/kextbundle.macho-aarch64
Binary files differ
diff --git a/test/tools/llvm-objdump/AArch64/macho-kextbundle.test b/test/tools/llvm-objdump/AArch64/macho-kextbundle.test
new file mode 100644
index 000000000000..89194554e9cb
--- /dev/null
+++ b/test/tools/llvm-objdump/AArch64/macho-kextbundle.test
@@ -0,0 +1,9 @@
+RUN: llvm-objdump -d -m -no-show-raw-insn %p/Inputs/kextbundle.macho-aarch64 | FileCheck %s
+
+CHECK: (__TEXT_EXEC,__text) section
+CHECK: _foo:
+CHECK: 4000: stp x29, x30, [sp, #-16]!
+CHECK: 4004: mov x29, sp
+CHECK: 4008: bl _bar.stub
+CHECK: 400c: ldp x29, x30, [sp], #16
+CHECK: 4010: ret
diff --git a/test/tools/llvm-objdump/X86/Inputs/kextbundle.macho-x86_64 b/test/tools/llvm-objdump/X86/Inputs/kextbundle.macho-x86_64
new file mode 100755
index 000000000000..ea9938b8631d
--- /dev/null
+++ b/test/tools/llvm-objdump/X86/Inputs/kextbundle.macho-x86_64
Binary files differ
diff --git a/test/tools/llvm-objdump/X86/macho-disassembly-kextbundle.test b/test/tools/llvm-objdump/X86/macho-disassembly-kextbundle.test
new file mode 100644
index 000000000000..b6c53a22f0c2
--- /dev/null
+++ b/test/tools/llvm-objdump/X86/macho-disassembly-kextbundle.test
@@ -0,0 +1,9 @@
+// RUN: llvm-objdump -d -m -no-show-raw-insn -full-leading-addr -print-imm-hex %p/Inputs/kextbundle.macho-x86_64 | FileCheck %s
+
+CHECK: (__TEXT,__text) section
+CHECK: _foo:
+CHECK: 0000000000000fb0 pushq %rbp
+CHECK: 0000000000000fb1 movq %rsp, %rbp
+CHECK: 0000000000000fb4 callq _bar
+CHECK: 0000000000000fb9 popq %rbp
+CHECK: 0000000000000fba retq
diff --git a/test/tools/llvm-objdump/X86/macho-info-plist.test b/test/tools/llvm-objdump/X86/macho-info-plist.test
index bee1952ce9b8..7550af905b7e 100644
--- a/test/tools/llvm-objdump/X86/macho-info-plist.test
+++ b/test/tools/llvm-objdump/X86/macho-info-plist.test
@@ -1,7 +1,11 @@
# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -info-plist - | FileCheck %s
+# RUN: llvm-mc < %s -triple x86_64-apple-darwin -filetype=obj | llvm-objdump -m -info-plist -no-leading-headers - | FileCheck --check-prefix=NOHEADER %s
.section __TEXT, __info_plist
.asciz "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
# CHECK: Contents of (__TEXT,__info_plist) section
# CHECK: <?xml version="1.0" encoding="UTF-8"?>
+
+# NOHEADER-NOT: Contents of (__TEXT,__info_plist) section
+# NOHEADER: <?xml version="1.0" encoding="UTF-8"?>
diff --git a/test/tools/llvm-objdump/X86/macho-objc-meta-data.test b/test/tools/llvm-objdump/X86/macho-objc-meta-data.test
index 0bdb39cdff84..0c38a649c5ae 100644
--- a/test/tools/llvm-objdump/X86/macho-objc-meta-data.test
+++ b/test/tools/llvm-objdump/X86/macho-objc-meta-data.test
@@ -1042,7 +1042,7 @@ PROTOCOL: class_methods 0x00000000 (not in an __OBJC section)
OBJC2_64BIT_DYLIB: Contents of (__DATA_CONST,__objc_classlist) section
OBJC2_64BIT_DYLIB: 000000000000c038 0x8030 _OBJC_CLASS_$_Test
OBJC2_64BIT_DYLIB: isa 0x8008 _OBJC_METACLASS_$_Test
-OBJC2_64BIT_DYLIB: superclass 0x0
+OBJC2_64BIT_DYLIB: superclass 0x0 _OBJC_CLASS_$_NSObject
OBJC2_64BIT_DYLIB: cache 0x0
OBJC2_64BIT_DYLIB: vtable 0x0
OBJC2_64BIT_DYLIB: data 0xc120 (struct class_ro_t *)
@@ -1081,7 +1081,7 @@ OBJC2_64BIT_DYLIB: name 0x4f42 testProp
OBJC2_64BIT_DYLIB: attributes 0x4f4b TQ,V_testProp
OBJC2_64BIT_DYLIB: Meta Class
OBJC2_64BIT_DYLIB: isa 0x0
-OBJC2_64BIT_DYLIB: superclass 0x0
+OBJC2_64BIT_DYLIB: superclass 0x0 _OBJC_METACLASS_$_NSObject
OBJC2_64BIT_DYLIB: cache 0x0
OBJC2_64BIT_DYLIB: vtable 0x0
OBJC2_64BIT_DYLIB: data 0xc048 (struct class_ro_t *)
diff --git a/test/tools/llvm-objdump/macho-exports-trie.test b/test/tools/llvm-objdump/macho-exports-trie.test
index 473c7cbfa4b2..3b081f5f975f 100644
--- a/test/tools/llvm-objdump/macho-exports-trie.test
+++ b/test/tools/llvm-objdump/macho-exports-trie.test
@@ -1,5 +1,7 @@
# RUN: llvm-objdump -macho -exports-trie -arch x86_64 \
# RUN: %p/Inputs/exports-trie.macho-x86_64 2>/dev/null | FileCheck %s
+# RUN: llvm-objdump -macho -exports-trie -arch x86_64 \
+# RUN: %p/Inputs/weak-bind.macho-x86_64 2>/dev/null | FileCheck --check-prefix=EXE %s
# CHECK:[re-export] _malloc (from libSystem)
@@ -9,3 +11,11 @@
# CHECK:0x12345678 _myAbs [absolute]
# CHECK:0x00000F60 _foo
+
+# EXE: 0x100000000 __mh_execute_header
+# EXE: 0x100000ED0 __Znwm
+# EXE: 0x100000F30 __ZdlPv
+# EXE: 0x100000F40 _main
+# EXE: 0x100001018 _p1
+# EXE: 0x100001020 _p2
+# EXE: 0x100001028 _p3
diff --git a/test/tools/llvm-readobj/Inputs/coff-load-config-data-end.exe b/test/tools/llvm-readobj/Inputs/coff-load-config-data-end.exe
new file mode 100644
index 000000000000..9ec694262985
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/coff-load-config-data-end.exe
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/coff-load-config-x64.dll b/test/tools/llvm-readobj/Inputs/coff-load-config-x64.dll
new file mode 100644
index 000000000000..26101f93c41f
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/coff-load-config-x64.dll
Binary files differ
diff --git a/test/tools/llvm-readobj/Inputs/coff-load-config-x86.dll b/test/tools/llvm-readobj/Inputs/coff-load-config-x86.dll
new file mode 100644
index 000000000000..c334c7be721c
--- /dev/null
+++ b/test/tools/llvm-readobj/Inputs/coff-load-config-x86.dll
Binary files differ
diff --git a/test/tools/llvm-readobj/coff-load-config.test b/test/tools/llvm-readobj/coff-load-config.test
new file mode 100644
index 000000000000..1eb67beadde6
--- /dev/null
+++ b/test/tools/llvm-readobj/coff-load-config.test
@@ -0,0 +1,93 @@
+RUN: llvm-readobj -coff-load-config %S/Inputs/coff-load-config-x86.dll | FileCheck %s --check-prefix=X86
+RUN: llvm-readobj -coff-load-config %S/Inputs/coff-load-config-x64.dll | FileCheck %s --check-prefix=X64
+
+RUN: llvm-readobj -coff-load-config %S/Inputs/coff-load-config-data-end.exe | FileCheck %s --check-prefix=DATAEND
+
+X86: LoadConfig [
+X86: Size: 0x5C
+X86: TimeDateStamp: 1970-01-01 00:00:00 (0x0)
+X86: MajorVersion: 0x0
+X86: MinorVersion: 0x0
+X86: GlobalFlagsClear: 0x0
+X86: GlobalFlagsSet: 0x0
+X86: CriticalSectionDefaultTimeout: 0x0
+X86: DeCommitFreeBlockThreshold: 0x0
+X86: DeCommitTotalFreeThreshold: 0x0
+X86: LockPrefixTable: 0x0
+X86: MaximumAllocationSize: 0x0
+X86: VirtualMemoryThreshold: 0x0
+X86: ProcessHeapFlags: 0x0
+X86: ProcessAffinityMask: 0x0
+X86: CSDVersion: 0x0
+X86: DependentLoadFlags: 0x0
+X86: EditList: 0x0
+X86: SecurityCookie: 0x10003004
+X86: SEHandlerTable: 0x100021C0
+X86: SEHandlerCount: 2
+X86: GuardCFCheckFunction: 0x1000207C
+X86: GuardCFCheckDispatch: 0x0
+X86: GuardCFFunctionTable: 0x100020A4
+X86: GuardCFFunctionCount: 11
+X86: GuardFlags: 0x13500
+X86: ]
+X86: SEHTable [
+X86: 0x10001BE0
+X86: 0x10001E30
+X86: ]
+X86: GuardFidTable [
+X86: 0x10001000
+X86: 0x10001040
+X86: 0x10001060
+X86: 0x10001100
+X86: 0x10001120
+X86: 0x10001150
+X86: 0x10001460
+X86: 0x100019B0
+X86: 0x10001B40
+X86: 0x10001BE0
+X86: 0x10001DC0
+X86: ]
+
+X64: LoadConfig [
+X64: Size: 0x94
+X64: TimeDateStamp: 1970-01-01 00:00:00 (0x0)
+X64: MajorVersion: 0x0
+X64: MinorVersion: 0x0
+X64: GlobalFlagsClear: 0x0
+X64: GlobalFlagsSet: 0x0
+X64: CriticalSectionDefaultTimeout: 0x0
+X64: DeCommitFreeBlockThreshold: 0x0
+X64: DeCommitTotalFreeThreshold: 0x0
+X64: LockPrefixTable: 0x0
+X64: MaximumAllocationSize: 0x0
+X64: VirtualMemoryThreshold: 0x0
+X64: ProcessHeapFlags: 0x0
+X64: ProcessAffinityMask: 0x0
+X64: CSDVersion: 0x0
+X64: DependentLoadFlags: 0x0
+X64: EditList: 0x0
+X64: SecurityCookie: 0x180003018
+X64: SEHandlerTable: 0
+X64: SEHandlerCount: 0
+X64: GuardCFCheckFunction: 0x180002100
+X64: GuardCFCheckDispatch: 0x180002108
+X64: GuardCFFunctionTable: 0x180002158
+X64: GuardCFFunctionCount: 9
+X64: GuardFlags: 0x13500
+X64: ]
+X64-NOT: SEHTable
+X64: GuardFidTable [
+X64: 0x180001000
+X64: 0x180001050
+X64: 0x180001070
+X64: 0x1800010E0
+X64: 0x180001110
+X64: 0x180001460
+X64: 0x180001970
+X64: 0x180001B50
+X64: 0x180001D90
+X64: ]
+
+DATAEND: SEHTable [
+DATAEND-NEXT: 0x402006
+DATAEND-NEXT: ]
diff --git a/test/tools/obj2yaml/invalid_input_file.test b/test/tools/obj2yaml/invalid_input_file.test
new file mode 100644
index 000000000000..573e753c8a87
--- /dev/null
+++ b/test/tools/obj2yaml/invalid_input_file.test
@@ -0,0 +1,4 @@
+# RUN: not obj2yaml %p/path/does/not/exist 2>&1 | FileCheck %s
+
+# Don't check the OS-dependent message "No such file or directory".
+# CHECK: Error reading file: {{.*}}/path/does/not/exist: {{.*}}