summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/include/llvm/ObjectYAML/MachOYAML.h10
-rw-r--r--llvm/include/llvm/ObjectYAML/ObjectYAML.h35
-rw-r--r--llvm/lib/ObjectYAML/CMakeLists.txt1
-rw-r--r--llvm/lib/ObjectYAML/COFFYAML.cpp1
-rw-r--r--llvm/lib/ObjectYAML/ELFYAML.cpp1
-rw-r--r--llvm/lib/ObjectYAML/MachOYAML.cpp28
-rw-r--r--llvm/lib/ObjectYAML/ObjectYAML.cpp57
-rw-r--r--llvm/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml3
-rw-r--r--llvm/test/Object/AMDGPU/elf-definitios.yaml4
-rw-r--r--llvm/test/Object/AMDGPU/elf32-unknown.yaml4
-rw-r--r--llvm/test/Object/AMDGPU/elf64-relocs.yaml3
-rw-r--r--llvm/test/Object/AMDGPU/elf64-unknown.yaml2
-rw-r--r--llvm/test/Object/Inputs/COFF/i386.yaml1
-rw-r--r--llvm/test/Object/Inputs/COFF/long-file-symbol.yaml2
-rw-r--r--llvm/test/Object/Inputs/COFF/long-section-name.yaml2
-rw-r--r--llvm/test/Object/Inputs/COFF/section-aux-symbol.yaml2
-rw-r--r--llvm/test/Object/Inputs/COFF/weak-external.yaml2
-rw-r--r--llvm/test/Object/Inputs/COFF/weak-externals.yaml2
-rw-r--r--llvm/test/Object/Inputs/COFF/x86-64.yaml1
-rw-r--r--llvm/test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml3
-rw-r--r--llvm/test/Object/Mips/abi-flags.yaml3
-rw-r--r--llvm/test/Object/Mips/elf-abi.yaml10
-rw-r--r--llvm/test/Object/Mips/elf-flags.yaml4
-rw-r--r--llvm/test/Object/Mips/elf-mips64-rel.yaml4
-rw-r--r--llvm/test/Object/X86/yaml2obj-elf-x86-rel.yaml3
-rw-r--r--llvm/test/Object/elf-unknown-type.test2
-rw-r--r--llvm/test/Object/obj2yaml-sectiongroup.test2
-rw-r--r--llvm/test/Object/yaml2obj-coff-invalid-alignment.test2
-rw-r--r--llvm/test/Object/yaml2obj-coff-multi-doc.test10
-rw-r--r--llvm/test/Object/yaml2obj-elf-alignment.yaml4
-rw-r--r--llvm/test/Object/yaml2obj-elf-bits-endian.test8
-rw-r--r--llvm/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml2
-rw-r--r--llvm/test/Object/yaml2obj-elf-file-headers.yaml2
-rw-r--r--llvm/test/Object/yaml2obj-elf-multi-doc.test6
-rw-r--r--llvm/test/Object/yaml2obj-elf-rel-noref.yaml2
-rw-r--r--llvm/test/Object/yaml2obj-elf-rel.yaml2
-rw-r--r--llvm/test/Object/yaml2obj-elf-section-basic.yaml4
-rw-r--r--llvm/test/Object/yaml2obj-elf-section-invalid-size.yaml2
-rw-r--r--llvm/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml2
-rw-r--r--llvm/test/Object/yaml2obj-elf-symbol-basic.yaml2
-rw-r--r--llvm/test/Object/yaml2obj-elf-symbol-visibility.yaml6
-rw-r--r--llvm/test/ObjectYAML/MachO/bind_opcode.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/bogus_load_command.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/dylib_dylinker_command.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/export_trie.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/fat_macho_i386_x86_64.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/lazy_bind_opcode.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/load_commands.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/mach_header.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/mach_header_32_malformed.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/mach_header_64.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/out_of_order_linkedit.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/rebase_opcode.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/sections.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/symtab.yaml2
-rw-r--r--llvm/test/ObjectYAML/MachO/weak_bind_opcode.yaml2
-rw-r--r--llvm/test/tools/llvm-ar/Inputs/coff.yaml2
-rw-r--r--llvm/test/tools/llvm-ar/Inputs/elf.yaml2
-rw-r--r--llvm/test/tools/llvm-ar/default-add.test4
-rw-r--r--llvm/test/tools/llvm-ar/default-coff.test2
-rw-r--r--llvm/test/tools/llvm-ar/default-elf.test2
-rw-r--r--llvm/test/tools/llvm-ar/default-macho.test2
-rw-r--r--llvm/test/tools/llvm-ar/override.test2
-rw-r--r--llvm/test/tools/llvm-objdump/Inputs/file-aux-record.yaml1
-rw-r--r--llvm/test/tools/llvm-readobj/Inputs/file-aux-record.yaml1
-rw-r--r--llvm/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml1
-rw-r--r--llvm/test/tools/llvm-readobj/elf-sec-flags.test16
-rw-r--r--llvm/test/tools/sanstats/elf.test6
-rw-r--r--llvm/test/tools/yaml2obj/missing_document_tag.yaml6
-rw-r--r--llvm/test/tools/yaml2obj/unsupported_document_tag.yaml8
-rw-r--r--llvm/tools/obj2yaml/macho2yaml.cpp13
-rw-r--r--llvm/tools/yaml2obj/yaml2coff.cpp11
-rw-r--r--llvm/tools/yaml2obj/yaml2elf.cpp8
-rw-r--r--llvm/tools/yaml2obj/yaml2macho.cpp27
-rw-r--r--llvm/tools/yaml2obj/yaml2obj.cpp62
-rw-r--r--llvm/tools/yaml2obj/yaml2obj.h17
76 files changed, 261 insertions, 208 deletions
diff --git a/llvm/include/llvm/ObjectYAML/MachOYAML.h b/llvm/include/llvm/ObjectYAML/MachOYAML.h
index e8565e24d91..bb15e64789d 100644
--- a/llvm/include/llvm/ObjectYAML/MachOYAML.h
+++ b/llvm/include/llvm/ObjectYAML/MachOYAML.h
@@ -129,12 +129,6 @@ struct UniversalBinary {
std::vector<Object> Slices;
};
-struct MachFile {
- bool isFat;
- UniversalBinary FatFile;
- Object ThinFile;
-};
-
} // namespace llvm::MachOYAML
} // namespace llvm
@@ -174,10 +168,6 @@ template <> struct MappingTraits<MachOYAML::UniversalBinary> {
static void mapping(IO &IO, MachOYAML::UniversalBinary &UniversalBinary);
};
-template <> struct MappingTraits<MachOYAML::MachFile> {
- static void mapping(IO &IO, MachOYAML::MachFile &MachFile);
-};
-
template <> struct MappingTraits<MachOYAML::LoadCommand> {
static void mapping(IO &IO, MachOYAML::LoadCommand &LoadCommand);
};
diff --git a/llvm/include/llvm/ObjectYAML/ObjectYAML.h b/llvm/include/llvm/ObjectYAML/ObjectYAML.h
new file mode 100644
index 00000000000..1d646234777
--- /dev/null
+++ b/llvm/include/llvm/ObjectYAML/ObjectYAML.h
@@ -0,0 +1,35 @@
+//===- ObjectYAML.h ---------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_OBJECTYAML_OBJECTYAML_H
+#define LLVM_OBJECTYAML_OBJECTYAML_H
+
+#include "llvm/Support/YAMLTraits.h"
+#include "llvm/ObjectYAML/ELFYAML.h"
+#include "llvm/ObjectYAML/COFFYAML.h"
+#include "llvm/ObjectYAML/MachOYAML.h"
+
+namespace llvm {
+namespace yaml {
+
+struct YamlObjectFile {
+ std::unique_ptr<ELFYAML::Object> Elf;
+ std::unique_ptr<COFFYAML::Object> Coff;
+ std::unique_ptr<MachOYAML::Object> MachO;
+ std::unique_ptr<MachOYAML::UniversalBinary> FatMachO;
+};
+
+template <> struct MappingTraits<YamlObjectFile> {
+ static void mapping(IO &IO, YamlObjectFile &ObjectFile);
+};
+
+} // namespace yaml
+} // namespace llvm
+
+#endif
diff --git a/llvm/lib/ObjectYAML/CMakeLists.txt b/llvm/lib/ObjectYAML/CMakeLists.txt
index 7e1363d8dac..77370908046 100644
--- a/llvm/lib/ObjectYAML/CMakeLists.txt
+++ b/llvm/lib/ObjectYAML/CMakeLists.txt
@@ -3,4 +3,5 @@ add_llvm_library(LLVMObjectYAML
COFFYAML.cpp
ELFYAML.cpp
MachOYAML.cpp
+ ObjectYAML.cpp
)
diff --git a/llvm/lib/ObjectYAML/COFFYAML.cpp b/llvm/lib/ObjectYAML/COFFYAML.cpp
index 02ae0535615..7f9f4c1f8c2 100644
--- a/llvm/lib/ObjectYAML/COFFYAML.cpp
+++ b/llvm/lib/ObjectYAML/COFFYAML.cpp
@@ -493,6 +493,7 @@ void MappingTraits<COFFYAML::Section>::mapping(IO &IO, COFFYAML::Section &Sec) {
}
void MappingTraits<COFFYAML::Object>::mapping(IO &IO, COFFYAML::Object &Obj) {
+ IO.mapTag("!COFF", true);
IO.mapOptional("OptionalHeader", Obj.OptionalHeader);
IO.mapRequired("header", Obj.Header);
IO.mapRequired("sections", Obj.Sections);
diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp
index a480783e44c..521e2375d08 100644
--- a/llvm/lib/ObjectYAML/ELFYAML.cpp
+++ b/llvm/lib/ObjectYAML/ELFYAML.cpp
@@ -820,6 +820,7 @@ void MappingTraits<ELFYAML::Relocation>::mapping(IO &IO,
void MappingTraits<ELFYAML::Object>::mapping(IO &IO, ELFYAML::Object &Object) {
assert(!IO.getContext() && "The IO context is initialized already");
IO.setContext(&Object);
+ IO.mapTag("!ELF", true);
IO.mapRequired("FileHeader", Object.Header);
IO.mapOptional("Sections", Object.Sections);
IO.mapOptional("Symbols", Object.Symbols);
diff --git a/llvm/lib/ObjectYAML/MachOYAML.cpp b/llvm/lib/ObjectYAML/MachOYAML.cpp
index 15ff4efb5c3..0a303a6e739 100644
--- a/llvm/lib/ObjectYAML/MachOYAML.cpp
+++ b/llvm/lib/ObjectYAML/MachOYAML.cpp
@@ -132,34 +132,6 @@ void MappingTraits<MachOYAML::UniversalBinary>::mapping(
IO.setContext(nullptr);
}
-void MappingTraits<MachOYAML::MachFile>::mapping(
- IO &IO, MachOYAML::MachFile &MachFile) {
- if (!IO.getContext()) {
- IO.setContext(&MachFile);
- }
- if (IO.outputting()) {
- if (MachFile.isFat) {
- IO.mapTag("!fat-mach-o", true);
- MappingTraits<MachOYAML::UniversalBinary>::mapping(IO, MachFile.FatFile);
- } else {
- IO.mapTag("!mach-o", true);
- MappingTraits<MachOYAML::Object>::mapping(IO, MachFile.ThinFile);
- }
- } else {
- if (IO.mapTag("!fat-mach-o")) {
- MachFile.isFat = true;
- MappingTraits<MachOYAML::UniversalBinary>::mapping(IO, MachFile.FatFile);
- } else if (IO.mapTag("!mach-o")) {
- MachFile.isFat = false;
- MappingTraits<MachOYAML::Object>::mapping(IO, MachFile.ThinFile);
- } else {
- assert(false && "No tag found in YAML, cannot identify file type!");
- }
- }
- if (IO.getContext() == &MachFile)
- IO.setContext(nullptr);
-}
-
void MappingTraits<MachOYAML::LinkEditData>::mapping(
IO &IO, MachOYAML::LinkEditData &LinkEditData) {
IO.mapOptional("RebaseOpcodes", LinkEditData.RebaseOpcodes);
diff --git a/llvm/lib/ObjectYAML/ObjectYAML.cpp b/llvm/lib/ObjectYAML/ObjectYAML.cpp
new file mode 100644
index 00000000000..97741b5ec8b
--- /dev/null
+++ b/llvm/lib/ObjectYAML/ObjectYAML.cpp
@@ -0,0 +1,57 @@
+//===- ObjectYAML.cpp - YAML utilities for object files -------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines a wrapper class for handling tagged YAML input
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ObjectYAML/YAML.h"
+#include "llvm/ObjectYAML/ObjectYAML.h"
+
+using namespace llvm;
+using namespace yaml;
+
+void MappingTraits<YamlObjectFile>::mapping(IO &IO,
+ YamlObjectFile &ObjectFile) {
+ if (IO.outputting()) {
+ if (ObjectFile.Elf)
+ MappingTraits<ELFYAML::Object>::mapping(IO, *ObjectFile.Elf);
+ if (ObjectFile.Coff)
+ MappingTraits<COFFYAML::Object>::mapping(IO, *ObjectFile.Coff);
+ if (ObjectFile.MachO)
+ MappingTraits<MachOYAML::Object>::mapping(IO, *ObjectFile.MachO);
+ if (ObjectFile.FatMachO)
+ MappingTraits<MachOYAML::UniversalBinary>::mapping(IO,
+ *ObjectFile.FatMachO);
+ } else {
+ if (IO.mapTag("!ELF")) {
+ ObjectFile.Elf.reset(new ELFYAML::Object());
+ MappingTraits<ELFYAML::Object>::mapping(IO, *ObjectFile.Elf);
+ } else if (IO.mapTag("!COFF")) {
+ ObjectFile.Coff.reset(new COFFYAML::Object());
+ MappingTraits<COFFYAML::Object>::mapping(IO, *ObjectFile.Coff);
+ } else if (IO.mapTag("!mach-o")) {
+ ObjectFile.MachO.reset(new MachOYAML::Object());
+ MappingTraits<MachOYAML::Object>::mapping(IO, *ObjectFile.MachO);
+ } else if (IO.mapTag("!fat-mach-o")) {
+ ObjectFile.FatMachO.reset(new MachOYAML::UniversalBinary());
+ MappingTraits<MachOYAML::UniversalBinary>::mapping(IO,
+ *ObjectFile.FatMachO);
+ } else {
+ Input &In = (Input &)IO;
+ std::string Tag = In.getCurrentNode()->getRawTag();
+ if (Tag.empty())
+ IO.setError("YAML Object File missing document type tag!");
+ else
+ IO.setError(
+ llvm::Twine("YAML Object File unsupported document type tag '") +
+ llvm::Twine(Tag.c_str()) + llvm::Twine("'!"));
+ }
+ }
+}
diff --git a/llvm/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml b/llvm/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml
index c27e888a47c..e3017a24a97 100644
--- a/llvm/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml
+++ b/llvm/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t
+# RUN: yaml2obj %s > %t
# RUN: obj2yaml %t | FileCheck %s
# CHECK: - Name: .rela.text
@@ -14,6 +14,7 @@
# CHECK-NEXT: Symbol: main
# CHECK-NEXT: Type: R_AARCH64_TLSGD_ADR_PREL21
+!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/AMDGPU/elf-definitios.yaml b/llvm/test/Object/AMDGPU/elf-definitios.yaml
index 6d535095123..819786aa190 100644
--- a/llvm/test/Object/AMDGPU/elf-definitios.yaml
+++ b/llvm/test/Object/AMDGPU/elf-definitios.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t.o
+# RUN: yaml2obj %s > %t.o
# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s
# CHECK: Format: ELF64-amdgpu-hsacobj
@@ -14,7 +14,7 @@
# CHECK: SHF_AMDGPU_HSA_READONLY (0x200000)
# CHECK: }
----
+--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/AMDGPU/elf32-unknown.yaml b/llvm/test/Object/AMDGPU/elf32-unknown.yaml
index 708db8dc9fc..c4305950607 100644
--- a/llvm/test/Object/AMDGPU/elf32-unknown.yaml
+++ b/llvm/test/Object/AMDGPU/elf32-unknown.yaml
@@ -1,9 +1,9 @@
-# RUN: yaml2obj -format=elf %s > %t.o
+# RUN: yaml2obj %s > %t.o
# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s
# CHECK: Format: ELF32-amdgpu
----
+--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/AMDGPU/elf64-relocs.yaml b/llvm/test/Object/AMDGPU/elf64-relocs.yaml
index 8ccf25b8605..896fcdbefa0 100644
--- a/llvm/test/Object/AMDGPU/elf64-relocs.yaml
+++ b/llvm/test/Object/AMDGPU/elf64-relocs.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t
+# RUN: yaml2obj %s > %t
# RUN: llvm-readobj -r %t | FileCheck %s
# CHECK: Relocations [
@@ -13,6 +13,7 @@
# CHECK: }
# CHECK: ]
+!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/AMDGPU/elf64-unknown.yaml b/llvm/test/Object/AMDGPU/elf64-unknown.yaml
index cae248854ad..c8272932381 100644
--- a/llvm/test/Object/AMDGPU/elf64-unknown.yaml
+++ b/llvm/test/Object/AMDGPU/elf64-unknown.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t.o
+# RUN: yaml2obj %s > %t.o
# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s
# CHECK: Format: ELF64-amdgpu
diff --git a/llvm/test/Object/Inputs/COFF/i386.yaml b/llvm/test/Object/Inputs/COFF/i386.yaml
index 7873df0a7e2..ad1a4f100fa 100644
--- a/llvm/test/Object/Inputs/COFF/i386.yaml
+++ b/llvm/test/Object/Inputs/COFF/i386.yaml
@@ -1,3 +1,4 @@
+!COFF
header: !Header
Machine: IMAGE_FILE_MACHINE_I386 # (0x14c)
Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ]
diff --git a/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml b/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml
index 37caad79620..4a37a433e43 100644
--- a/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml
+++ b/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml
@@ -1,4 +1,4 @@
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_AMD64
Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_LINE_NUMS_STRIPPED ]
diff --git a/llvm/test/Object/Inputs/COFF/long-section-name.yaml b/llvm/test/Object/Inputs/COFF/long-section-name.yaml
index a86f9019cd5..12041858317 100644
--- a/llvm/test/Object/Inputs/COFF/long-section-name.yaml
+++ b/llvm/test/Object/Inputs/COFF/long-section-name.yaml
@@ -1,4 +1,4 @@
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_I386
Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_LOCAL_SYMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE ]
diff --git a/llvm/test/Object/Inputs/COFF/section-aux-symbol.yaml b/llvm/test/Object/Inputs/COFF/section-aux-symbol.yaml
index 623af558959..67fba68afd4 100644
--- a/llvm/test/Object/Inputs/COFF/section-aux-symbol.yaml
+++ b/llvm/test/Object/Inputs/COFF/section-aux-symbol.yaml
@@ -1,4 +1,4 @@
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_I386
Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE, IMAGE_FILE_DEBUG_STRIPPED ]
diff --git a/llvm/test/Object/Inputs/COFF/weak-external.yaml b/llvm/test/Object/Inputs/COFF/weak-external.yaml
index 064b44a4a38..3963bcdc557 100644
--- a/llvm/test/Object/Inputs/COFF/weak-external.yaml
+++ b/llvm/test/Object/Inputs/COFF/weak-external.yaml
@@ -1,4 +1,4 @@
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_I386
Characteristics: [ IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE ]
diff --git a/llvm/test/Object/Inputs/COFF/weak-externals.yaml b/llvm/test/Object/Inputs/COFF/weak-externals.yaml
index 44364186b52..d0ec3137c71 100644
--- a/llvm/test/Object/Inputs/COFF/weak-externals.yaml
+++ b/llvm/test/Object/Inputs/COFF/weak-externals.yaml
@@ -1,4 +1,4 @@
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_ARMNT
Characteristics: [ ]
diff --git a/llvm/test/Object/Inputs/COFF/x86-64.yaml b/llvm/test/Object/Inputs/COFF/x86-64.yaml
index b8a863a429c..2fd5a4d19ff 100644
--- a/llvm/test/Object/Inputs/COFF/x86-64.yaml
+++ b/llvm/test/Object/Inputs/COFF/x86-64.yaml
@@ -1,3 +1,4 @@
+!COFF
header: !Header
Machine: IMAGE_FILE_MACHINE_AMD64 # (0x8664)
diff --git a/llvm/test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml b/llvm/test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml
index aa45ca16b34..df81a5b8bde 100644
--- a/llvm/test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml
+++ b/llvm/test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t
+# RUN: yaml2obj %s > %t
# RUN: llvm-readobj -r %t | FileCheck %s
# CHECK: Relocations [
@@ -13,6 +13,7 @@
# CHECK-NEXT: }
# CHECK-NEXT: ]
+!ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/Mips/abi-flags.yaml b/llvm/test/Object/Mips/abi-flags.yaml
index 8a11fc4124c..0d9fb369423 100644
--- a/llvm/test/Object/Mips/abi-flags.yaml
+++ b/llvm/test/Object/Mips/abi-flags.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t
+# RUN: yaml2obj %s > %t
# RUN: llvm-readobj -mips-abi-flags %t | FileCheck -check-prefix=OBJ %s
# RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s
@@ -34,6 +34,7 @@
# YAML-NEXT: CPR1Size: REG_64
# YAML-NEXT: Flags1: [ ODDSPREG ]
+!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2MSB
diff --git a/llvm/test/Object/Mips/elf-abi.yaml b/llvm/test/Object/Mips/elf-abi.yaml
index 5f11b14da59..7d8e1ceca2d 100644
--- a/llvm/test/Object/Mips/elf-abi.yaml
+++ b/llvm/test/Object/Mips/elf-abi.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf -docnum=1 %s > %t.o32
+# RUN: yaml2obj -docnum=1 %s > %t.o32
# RUN: llvm-readobj -file-headers %t.o32 | FileCheck -check-prefix=O32OBJ %s
# RUN: obj2yaml %t.o32 | FileCheck -check-prefix=O32YAML %s
@@ -10,7 +10,7 @@
# O32YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32 ]
-# RUN: yaml2obj -format=elf -docnum=2 %s > %t.o64
+# RUN: yaml2obj -docnum=2 %s > %t.o64
# RUN: llvm-readobj -file-headers %t.o64 | FileCheck -check-prefix=O64OBJ %s
# RUN: obj2yaml %t.o64 | FileCheck -check-prefix=O64YAML %s
@@ -22,7 +22,7 @@
# O64YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_O64, EF_MIPS_ARCH_64 ]
-# RUN: yaml2obj -format=elf -docnum=3 %s > %t.eabi32
+# RUN: yaml2obj -docnum=3 %s > %t.eabi32
# RUN: llvm-readobj -file-headers %t.eabi32 | FileCheck -check-prefix=E32OBJ %s
# RUN: obj2yaml %t.eabi32 | FileCheck -check-prefix=E32YAML %s
@@ -34,7 +34,7 @@
# E32YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_EABI32, EF_MIPS_ARCH_32 ]
-# RUN: yaml2obj -format=elf -docnum=4 %s > %t.eabi64
+# RUN: yaml2obj -docnum=4 %s > %t.eabi64
# RUN: llvm-readobj -file-headers %t.eabi64 | FileCheck -check-prefix=E64OBJ %s
# RUN: obj2yaml %t.eabi64 | FileCheck -check-prefix=E64YAML %s
@@ -47,7 +47,7 @@
# E64YAML: Flags: [ EF_MIPS_PIC, EF_MIPS_ABI_EABI64, EF_MIPS_ARCH_64 ]
# o32
----
+--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/Mips/elf-flags.yaml b/llvm/test/Object/Mips/elf-flags.yaml
index f79be9d4e07..dceabc05c8b 100644
--- a/llvm/test/Object/Mips/elf-flags.yaml
+++ b/llvm/test/Object/Mips/elf-flags.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t
+# RUN: yaml2obj %s > %t
# RUN: llvm-readobj -file-headers %t | FileCheck -check-prefix=OBJ %s
# RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s
@@ -25,7 +25,7 @@
# YAML-NEXT: Machine: EM_MIPS
# YAML-NEXT: Flags: [ EF_MIPS_NOREORDER, EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI2, EF_MIPS_32BITMODE, EF_MIPS_FP64, EF_MIPS_NAN2008, EF_MIPS_MICROMIPS, EF_MIPS_ARCH_ASE_M16, EF_MIPS_ARCH_ASE_MDMX, EF_MIPS_ABI_O32, EF_MIPS_MACH_OCTEON, EF_MIPS_ARCH_32R6 ]
----
+--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/Mips/elf-mips64-rel.yaml b/llvm/test/Object/Mips/elf-mips64-rel.yaml
index 7c41b78e6ad..3e565553475 100644
--- a/llvm/test/Object/Mips/elf-mips64-rel.yaml
+++ b/llvm/test/Object/Mips/elf-mips64-rel.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t
+# RUN: yaml2obj %s > %t
# RUN: llvm-readobj -r %t | FileCheck -check-prefix=OBJ %s
# RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s
@@ -41,7 +41,7 @@
# YAML-NEXT: Type2: R_MIPS_LO16
# YAML-NEXT: SpecSym: RSS_GP0
----
+--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/X86/yaml2obj-elf-x86-rel.yaml b/llvm/test/Object/X86/yaml2obj-elf-x86-rel.yaml
index 5ca6614d238..0cb26fca995 100644
--- a/llvm/test/Object/X86/yaml2obj-elf-x86-rel.yaml
+++ b/llvm/test/Object/X86/yaml2obj-elf-x86-rel.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s > %t
+# RUN: yaml2obj %s > %t
# RUN: llvm-readobj -r %t | FileCheck %s
# CHECK: Relocations [
@@ -7,6 +7,7 @@
# CHECK-NEXT: }
# CHECK-NEXT: ]
+!ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/elf-unknown-type.test b/llvm/test/Object/elf-unknown-type.test
index 9993c096376..1ef4f58085d 100644
--- a/llvm/test/Object/elf-unknown-type.test
+++ b/llvm/test/Object/elf-unknown-type.test
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -file-headers - | FileCheck %s
+# RUN: yaml2obj %s | llvm-readobj -file-headers - | FileCheck %s
!ELF
FileHeader: !FileHeader
diff --git a/llvm/test/Object/obj2yaml-sectiongroup.test b/llvm/test/Object/obj2yaml-sectiongroup.test
index 66e8e3875be..2387c75494f 100644
--- a/llvm/test/Object/obj2yaml-sectiongroup.test
+++ b/llvm/test/Object/obj2yaml-sectiongroup.test
@@ -1,7 +1,7 @@
# Checks that the tool is able to read section groups with ELF.
RUN: obj2yaml %p/Inputs/sectionGroup.elf.x86-64 > %t1.sectiongroup.yaml
RUN: FileCheck %s --check-prefix ELF-GROUP < %t1.sectiongroup.yaml
-RUN: yaml2obj -format=elf %t1.sectiongroup.yaml -o %t2.o.elf
+RUN: yaml2obj %t1.sectiongroup.yaml -o %t2.o.elf
RUN: llvm-readobj -sections %t2.o.elf | FileCheck %s -check-prefix=SECTIONS
#ELF-GROUP: - Name: .group
#ELF-GROUP: Type: SHT_GROUP
diff --git a/llvm/test/Object/yaml2obj-coff-invalid-alignment.test b/llvm/test/Object/yaml2obj-coff-invalid-alignment.test
index f76f063dc44..3e760310f57 100644
--- a/llvm/test/Object/yaml2obj-coff-invalid-alignment.test
+++ b/llvm/test/Object/yaml2obj-coff-invalid-alignment.test
@@ -2,7 +2,7 @@
# CHECK: Section alignment is too large
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_AMD64
Characteristics: []
diff --git a/llvm/test/Object/yaml2obj-coff-multi-doc.test b/llvm/test/Object/yaml2obj-coff-multi-doc.test
index 1cf720306bf..0335a72bfcf 100644
--- a/llvm/test/Object/yaml2obj-coff-multi-doc.test
+++ b/llvm/test/Object/yaml2obj-coff-multi-doc.test
@@ -1,15 +1,15 @@
-# RUN: yaml2obj -format=coff -docnum=1 %s \
+# RUN: yaml2obj -docnum=1 %s \
# RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC1 %s
-# RUN: yaml2obj -format=coff -docnum=2 %s \
+# RUN: yaml2obj -docnum=2 %s \
# RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC2 %s
-# RUN: not yaml2obj -format=coff -docnum=3 %s 2>&1 \
+# RUN: not yaml2obj -docnum=3 %s 2>&1 \
# RUN: | FileCheck -check-prefix=DOC3 %s
# DOC1: Name: _sym1
# DOC2: Name: _sym2
# DOC3: yaml2obj: Cannot find the 3rd document
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_I386
Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ]
@@ -49,7 +49,7 @@ symbols:
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_I386
Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ]
diff --git a/llvm/test/Object/yaml2obj-elf-alignment.yaml b/llvm/test/Object/yaml2obj-elf-alignment.yaml
index 8f2f985177f..341966d9a5b 100644
--- a/llvm/test/Object/yaml2obj-elf-alignment.yaml
+++ b/llvm/test/Object/yaml2obj-elf-alignment.yaml
@@ -1,6 +1,6 @@
# Check that yaml2obj takes in account section AddressAlign field.
-# RUN: yaml2obj -format=elf %s > %t
+# RUN: yaml2obj %s > %t
# RUN: llvm-readobj -s %t | FileCheck %s
# CHECK: Section {
@@ -20,7 +20,7 @@
# CHECK-NEXT: EntrySize: 0
# CHECK-NEXT: }
----
+--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
diff --git a/llvm/test/Object/yaml2obj-elf-bits-endian.test b/llvm/test/Object/yaml2obj-elf-bits-endian.test
index 4be9a4465b8..e8bd2f1d8d1 100644
--- a/llvm/test/Object/yaml2obj-elf-bits-endian.test
+++ b/llvm/test/Object/yaml2obj-elf-bits-endian.test
@@ -1,7 +1,7 @@
-RUN: yaml2obj -format=elf %p/Inputs/ELF/LE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE64
-RUN: yaml2obj -format=elf %p/Inputs/ELF/BE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE64
-RUN: yaml2obj -format=elf %p/Inputs/ELF/LE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE32
-RUN: yaml2obj -format=elf %p/Inputs/ELF/BE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE32
+RUN: yaml2obj %p/Inputs/ELF/LE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE64
+RUN: yaml2obj %p/Inputs/ELF/BE64.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE64
+RUN: yaml2obj %p/Inputs/ELF/LE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix LE32
+RUN: yaml2obj %p/Inputs/ELF/BE32.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix BE32
LE64: Class: 64-bit (0x2)
LE64-NEXT: DataEncoding: LittleEndian (0x1)
diff --git a/llvm/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml b/llvm/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml
index dddc7d97f62..ad032e80d64 100644
--- a/llvm/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml
+++ b/llvm/test/Object/yaml2obj-elf-file-headers-with-e_flags.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -file-headers - | FileCheck %s
+# RUN: yaml2obj %s | llvm-readobj -file-headers - | FileCheck %s
!ELF
FileHeader:
Class: ELFCLASS32
diff --git a/llvm/test/Object/yaml2obj-elf-file-headers.yaml b/llvm/test/Object/yaml2obj-elf-file-headers.yaml
index 285170170a2..4dfee5f9387 100644
--- a/llvm/test/Object/yaml2obj-elf-file-headers.yaml
+++ b/llvm/test/Object/yaml2obj-elf-file-headers.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -file-headers - | FileCheck %s
+# RUN: yaml2obj %s | llvm-readobj -file-headers - | FileCheck %s
!ELF
FileHeader:
Class: ELFCLASS64
diff --git a/llvm/test/Object/yaml2obj-elf-multi-doc.test b/llvm/test/Object/yaml2obj-elf-multi-doc.test
index c51f803300e..b3c8335a36b 100644
--- a/llvm/test/Object/yaml2obj-elf-multi-doc.test
+++ b/llvm/test/Object/yaml2obj-elf-multi-doc.test
@@ -1,8 +1,8 @@
-# RUN: yaml2obj -format=elf -docnum=1 %s \
+# RUN: yaml2obj -docnum=1 %s \
# RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC1 %s
-# RUN: yaml2obj -format=elf -docnum=2 %s \
+# RUN: yaml2obj -docnum=2 %s \
# RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC2 %s
-# RUN: not yaml2obj -format=elf -docnum=3 %s 2>&1 \
+# RUN: not yaml2obj -docnum=3 %s 2>&1 \
# RUN: | FileCheck -check-prefix=DOC3 %s
# DOC1: Name: T1 (1)
diff --git a/llvm/test/Object/yaml2obj-elf-rel-noref.yaml b/llvm/test/Object/yaml2obj-elf-rel-noref.yaml
index 4a13acd1fd3..8eb6b0dca3b 100644
--- a/llvm/test/Object/yaml2obj-elf-rel-noref.yaml
+++ b/llvm/test/Object/yaml2obj-elf-rel-noref.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -relocations - | FileCheck %s
+# RUN: yaml2obj %s | llvm-readobj -sections -relocations - | FileCheck %s
!ELF
FileHeader: !FielHeader
diff --git a/llvm/test/Object/yaml2obj-elf-rel.yaml b/llvm/test/Object/yaml2obj-elf-rel.yaml
index ba3640cfefa..f98c8e262a7 100644
--- a/llvm/test/Object/yaml2obj-elf-rel.yaml
+++ b/llvm/test/Object/yaml2obj-elf-rel.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -relocations - | FileCheck %s
+# RUN: yaml2obj %s | llvm-readobj -sections -relocations - | FileCheck %s
!ELF
FileHeader: !FileHeader
diff --git a/llvm/test/Object/yaml2obj-elf-section-basic.yaml b/llvm/test/Object/yaml2obj-elf-section-basic.yaml
index 69d3ae91b71..c2dde8c26ff 100644
--- a/llvm/test/Object/yaml2obj-elf-section-basic.yaml
+++ b/llvm/test/Object/yaml2obj-elf-section-basic.yaml
@@ -1,5 +1,5 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -sections -section-data - | FileCheck %s
-# RUN: yaml2obj -format=elf -o %t %s
+# RUN: yaml2obj %s | llvm-readobj -sections -section-data - | FileCheck %s
+# RUN: yaml2obj -o %t %s
# RUN: llvm-readobj -sections -section-data %t | FileCheck %s
!ELF
diff --git a/llvm/test/Object/yaml2obj-elf-section-invalid-size.yaml b/llvm/test/Object/yaml2obj-elf-section-invalid-size.yaml
index d0cb370072d..b896c9d6afc 100644
--- a/llvm/test/Object/yaml2obj-elf-section-invalid-size.yaml
+++ b/llvm/test/Object/yaml2obj-elf-section-invalid-size.yaml
@@ -1,4 +1,4 @@
-# RUN: not yaml2obj -format=elf -o %t %s 2>&1 | FileCheck %s
+# RUN: not yaml2obj -o %t %s 2>&1 | FileCheck %s
!ELF
FileHeader:
diff --git a/llvm/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml b/llvm/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml
index 3c4e830c0df..c044d711a34 100644
--- a/llvm/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml
+++ b/llvm/test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -symbols - | FileCheck %s
+# RUN: yaml2obj %s | llvm-readobj -symbols - | FileCheck %s
!ELF
FileHeader:
Class: ELFCLASS64
diff --git a/llvm/test/Object/yaml2obj-elf-symbol-basic.yaml b/llvm/test/Object/yaml2obj-elf-symbol-basic.yaml
index b17c0429bd4..e1f5ce4e725 100644
--- a/llvm/test/Object/yaml2obj-elf-symbol-basic.yaml
+++ b/llvm/test/Object/yaml2obj-elf-symbol-basic.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -symbols - | FileCheck %s
+# RUN: yaml2obj %s | llvm-readobj -symbols - | FileCheck %s
!ELF
FileHeader:
Class: ELFCLASS64
diff --git a/llvm/test/Object/yaml2obj-elf-symbol-visibility.yaml b/llvm/test/Object/yaml2obj-elf-symbol-visibility.yaml
index 43d2b8f6fb4..82b3d48f0a3 100644
--- a/llvm/test/Object/yaml2obj-elf-symbol-visibility.yaml
+++ b/llvm/test/Object/yaml2obj-elf-symbol-visibility.yaml
@@ -1,6 +1,6 @@
-# RUN: yaml2obj -format=elf %s | llvm-readobj -symbols - | \
+# RUN: yaml2obj %s | llvm-readobj -symbols - | \
# RUN: FileCheck --check-prefix OBJ %s
-# RUN: yaml2obj -format=elf %s | obj2yaml - | FileCheck --check-prefix YAML %s
+# RUN: yaml2obj %s | obj2yaml - | FileCheck --check-prefix YAML %s
# OBJ: Symbol {
# OBJ: Name: default1 (36)
@@ -87,7 +87,7 @@
# YAML-NEXT: Visibility: STV_PROTECTED
# YAML-NEXT: Other: [ STO_MIPS_PIC, STO_MIPS_MICROMIPS ]
----
+--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
diff --git a/llvm/test/ObjectYAML/MachO/bind_opcode.yaml b/llvm/test/ObjectYAML/MachO/bind_opcode.yaml
index 4c010b4cd48..a83e524aef2 100644
--- a/llvm/test/ObjectYAML/MachO/bind_opcode.yaml
+++ b/llvm/test/ObjectYAML/MachO/bind_opcode.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/bogus_load_command.yaml b/llvm/test/ObjectYAML/MachO/bogus_load_command.yaml
index 4809f41df37..69c57d055cb 100644
--- a/llvm/test/ObjectYAML/MachO/bogus_load_command.yaml
+++ b/llvm/test/ObjectYAML/MachO/bogus_load_command.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/dylib_dylinker_command.yaml b/llvm/test/ObjectYAML/MachO/dylib_dylinker_command.yaml
index 5ae12d5b0bf..9184e3c5143 100644
--- a/llvm/test/ObjectYAML/MachO/dylib_dylinker_command.yaml
+++ b/llvm/test/ObjectYAML/MachO/dylib_dylinker_command.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/export_trie.yaml b/llvm/test/ObjectYAML/MachO/export_trie.yaml
index e8685c8e923..7d6513832a1 100644
--- a/llvm/test/ObjectYAML/MachO/export_trie.yaml
+++ b/llvm/test/ObjectYAML/MachO/export_trie.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/fat_macho_i386_x86_64.yaml b/llvm/test/ObjectYAML/MachO/fat_macho_i386_x86_64.yaml
index edd3338f925..75043a9de74 100644
--- a/llvm/test/ObjectYAML/MachO/fat_macho_i386_x86_64.yaml
+++ b/llvm/test/ObjectYAML/MachO/fat_macho_i386_x86_64.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !fat-mach-o
FatHeader:
diff --git a/llvm/test/ObjectYAML/MachO/lazy_bind_opcode.yaml b/llvm/test/ObjectYAML/MachO/lazy_bind_opcode.yaml
index d10541e2628..fafe7b206f7 100644
--- a/llvm/test/ObjectYAML/MachO/lazy_bind_opcode.yaml
+++ b/llvm/test/ObjectYAML/MachO/lazy_bind_opcode.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/load_commands.yaml b/llvm/test/ObjectYAML/MachO/load_commands.yaml
index 65405426014..5236cd0dd7a 100644
--- a/llvm/test/ObjectYAML/MachO/load_commands.yaml
+++ b/llvm/test/ObjectYAML/MachO/load_commands.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/mach_header.yaml b/llvm/test/ObjectYAML/MachO/mach_header.yaml
index 8af3187011e..f6cba123e72 100644
--- a/llvm/test/ObjectYAML/MachO/mach_header.yaml
+++ b/llvm/test/ObjectYAML/MachO/mach_header.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/mach_header_32_malformed.yaml b/llvm/test/ObjectYAML/MachO/mach_header_32_malformed.yaml
index 33946f3bde5..7b28c859f3e 100644
--- a/llvm/test/ObjectYAML/MachO/mach_header_32_malformed.yaml
+++ b/llvm/test/ObjectYAML/MachO/mach_header_32_malformed.yaml
@@ -1,4 +1,4 @@
-# RUN: not yaml2obj -format=macho %s 2>&1 | FileCheck %s
+# RUN: not yaml2obj %s 2>&1 | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/mach_header_64.yaml b/llvm/test/ObjectYAML/MachO/mach_header_64.yaml
index a76997004ea..620e09878be 100644
--- a/llvm/test/ObjectYAML/MachO/mach_header_64.yaml
+++ b/llvm/test/ObjectYAML/MachO/mach_header_64.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/out_of_order_linkedit.yaml b/llvm/test/ObjectYAML/MachO/out_of_order_linkedit.yaml
index 2d8bd24d508..5f259610386 100644
--- a/llvm/test/ObjectYAML/MachO/out_of_order_linkedit.yaml
+++ b/llvm/test/ObjectYAML/MachO/out_of_order_linkedit.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/rebase_opcode.yaml b/llvm/test/ObjectYAML/MachO/rebase_opcode.yaml
index 8a873be6e75..a50c80b385f 100644
--- a/llvm/test/ObjectYAML/MachO/rebase_opcode.yaml
+++ b/llvm/test/ObjectYAML/MachO/rebase_opcode.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/sections.yaml b/llvm/test/ObjectYAML/MachO/sections.yaml
index e1b2c2e7b5c..5da789dbdef 100644
--- a/llvm/test/ObjectYAML/MachO/sections.yaml
+++ b/llvm/test/ObjectYAML/MachO/sections.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/symtab.yaml b/llvm/test/ObjectYAML/MachO/symtab.yaml
index 7472d4462d3..b82d45bfa78 100644
--- a/llvm/test/ObjectYAML/MachO/symtab.yaml
+++ b/llvm/test/ObjectYAML/MachO/symtab.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/ObjectYAML/MachO/weak_bind_opcode.yaml b/llvm/test/ObjectYAML/MachO/weak_bind_opcode.yaml
index 6e652f46bae..a674b0e022e 100644
--- a/llvm/test/ObjectYAML/MachO/weak_bind_opcode.yaml
+++ b/llvm/test/ObjectYAML/MachO/weak_bind_opcode.yaml
@@ -1,4 +1,4 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !mach-o
FileHeader:
diff --git a/llvm/test/tools/llvm-ar/Inputs/coff.yaml b/llvm/test/tools/llvm-ar/Inputs/coff.yaml
index 41778d235a9..4fc1211dcf5 100644
--- a/llvm/test/tools/llvm-ar/Inputs/coff.yaml
+++ b/llvm/test/tools/llvm-ar/Inputs/coff.yaml
@@ -1,4 +1,4 @@
----
+--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_AMD64
Characteristics: [ ]
diff --git a/llvm/test/tools/llvm-ar/Inputs/elf.yaml b/llvm/test/tools/llvm-ar/Inputs/elf.yaml
index 28a264f7b3b..2651e68f78f 100644
--- a/llvm/test/tools/llvm-ar/Inputs/elf.yaml
+++ b/llvm/test/tools/llvm-ar/Inputs/elf.yaml
@@ -1,4 +1,4 @@
----
+--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
diff --git a/llvm/test/tools/llvm-ar/default-add.test b/llvm/test/tools/llvm-ar/default-add.test
index 525db85d3a5..88719e4efce 100644
--- a/llvm/test/tools/llvm-ar/default-add.test
+++ b/llvm/test/tools/llvm-ar/default-add.test
@@ -1,5 +1,5 @@
-RUN: yaml2obj -format macho %S/Inputs/macho.yaml -o %t-macho.o
-RUN: yaml2obj -format coff %S/Inputs/coff.yaml -o %t-coff.o
+RUN: yaml2obj %S/Inputs/macho.yaml -o %t-macho.o
+RUN: yaml2obj %S/Inputs/coff.yaml -o %t-coff.o
RUN: rm -f %t.ar
RUN: llvm-ar crs %t.ar %t-macho.o
diff --git a/llvm/test/tools/llvm-ar/default-coff.test b/llvm/test/tools/llvm-ar/default-coff.test
index 7921144a428..a7ce44a23d2 100644
--- a/llvm/test/tools/llvm-ar/default-coff.test
+++ b/llvm/test/tools/llvm-ar/default-coff.test
@@ -1,4 +1,4 @@
-RUN: yaml2obj -format coff %S/Inputs/coff.yaml -o %t.obj
+RUN: yaml2obj %S/Inputs/coff.yaml -o %t.obj
RUN: rm -f %t.ar
RUN: llvm-ar crs %t.ar %t.obj
diff --git a/llvm/test/tools/llvm-ar/default-elf.test b/llvm/test/tools/llvm-ar/default-elf.test
index 216e874059e..d2d35a5e18f 100644
--- a/llvm/test/tools/llvm-ar/default-elf.test
+++ b/llvm/test/tools/llvm-ar/default-elf.test
@@ -1,4 +1,4 @@
-RUN: yaml2obj -format elf %S/Inputs/elf.yaml -o %t.o
+RUN: yaml2obj %S/Inputs/elf.yaml -o %t.o
RUN: rm -f %t.ar
RUN: llvm-ar crs %t.ar %t.o
diff --git a/llvm/test/tools/llvm-ar/default-macho.test b/llvm/test/tools/llvm-ar/default-macho.test
index ee816071c8e..a9f12758a12 100644
--- a/llvm/test/tools/llvm-ar/default-macho.test
+++ b/llvm/test/tools/llvm-ar/default-macho.test
@@ -1,4 +1,4 @@
-RUN: yaml2obj -format macho %S/Inputs/macho.yaml -o %t.o
+RUN: yaml2obj %S/Inputs/macho.yaml -o %t.o
RUN: rm -f %t.ar
RUN: llvm-ar crs %t.ar %t.o
diff --git a/llvm/test/tools/llvm-ar/override.test b/llvm/test/tools/llvm-ar/override.test
index e9aa8c1ecdc..0cbf5d85982 100644
--- a/llvm/test/tools/llvm-ar/override.test
+++ b/llvm/test/tools/llvm-ar/override.test
@@ -1,4 +1,4 @@
-RUN: yaml2obj -format macho %S/Inputs/macho.yaml -o %t.o
+RUN: yaml2obj %S/Inputs/macho.yaml -o %t.o
RUN: rm -f %t.ar
RUN: llvm-ar -format gnu crs %t.ar %t.o
diff --git a/llvm/test/tools/llvm-objdump/Inputs/file-aux-record.yaml b/llvm/test/tools/llvm-objdump/Inputs/file-aux-record.yaml
index d19afaf68a8..98e5ae64df9 100644
--- a/llvm/test/tools/llvm-objdump/Inputs/file-aux-record.yaml
+++ b/llvm/test/tools/llvm-objdump/Inputs/file-aux-record.yaml
@@ -1,3 +1,4 @@
+!COFF
header: !Header
Machine: IMAGE_FILE_MACHINE_I386 # (0x14c)
Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ]
diff --git a/llvm/test/tools/llvm-readobj/Inputs/file-aux-record.yaml b/llvm/test/tools/llvm-readobj/Inputs/file-aux-record.yaml
index 89d6761a26d..2f74a9a6ef4 100644
--- a/llvm/test/tools/llvm-readobj/Inputs/file-aux-record.yaml
+++ b/llvm/test/tools/llvm-readobj/Inputs/file-aux-record.yaml
@@ -1,3 +1,4 @@
+!COFF
header: !Header
Machine: IMAGE_FILE_MACHINE_I386 # (0x14c)
Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ]
diff --git a/llvm/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml b/llvm/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml
index d5b1eec878b..42946b4fafb 100644
--- a/llvm/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml
+++ b/llvm/test/tools/llvm-readobj/Inputs/file-multiple-aux-records.yaml
@@ -1,3 +1,4 @@
+!COFF
header: !Header
Machine: IMAGE_FILE_MACHINE_I386 # (0x14c)
Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ]
diff --git a/llvm/test/tools/llvm-readobj/elf-sec-flags.test b/llvm/test/tools/llvm-readobj/elf-sec-flags.test
index 95a417a054f..842ded3e9e5 100644
--- a/llvm/test/tools/llvm-readobj/elf-sec-flags.test
+++ b/llvm/test/tools/llvm-readobj/elf-sec-flags.test
@@ -1,6 +1,6 @@
# Check that llvm-readobj shows arch specific ELF section flags.
-# RUN: yaml2obj -format=elf -docnum 1 %s > %t-amdgpu.o
+# RUN: yaml2obj -docnum 1 %s > %t-amdgpu.o
# RUN: llvm-readobj -s %t-amdgpu.o | FileCheck -check-prefix=AMD %s
# AMD: Flags [ (0x300000)
@@ -9,7 +9,7 @@
# AMD-NEXT: ]
# amdgpu.o
----
+--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
@@ -23,7 +23,7 @@ Sections:
Flags: [SHF_AMDGPU_HSA_GLOBAL, SHF_AMDGPU_HSA_READONLY]
Size: 4
-# RUN: yaml2obj -format=elf -docnum 2 %s > %t-hex.o
+# RUN: yaml2obj -docnum 2 %s > %t-hex.o
# RUN: llvm-readobj -s %t-hex.o | FileCheck -check-prefix=HEX %s
# HEX: Flags [ (0x10000000)
@@ -31,7 +31,7 @@ Sections:
# HEX-NEXT: ]
# hex.o
----
+--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
@@ -44,7 +44,7 @@ Sections:
Flags: [SHF_HEX_GPREL]
Size: 4
-# RUN: yaml2obj -format=elf -docnum 3 %s > %t-mips.o
+# RUN: yaml2obj -docnum 3 %s > %t-mips.o
# RUN: llvm-readobj -s %t-mips.o | FileCheck -check-prefix=MIPS %s
# MIPS: Flags [ (0x38000000)
@@ -54,7 +54,7 @@ Sections:
# MIPS-NEXT: ]
# mips.o
----
+--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
@@ -67,7 +67,7 @@ Sections:
Flags: [SHF_MIPS_GPREL, SHF_MIPS_MERGE, SHF_MIPS_NOSTRIP]
Size: 4
-# RUN: yaml2obj -format=elf -docnum 4 %s > %t-x86_64.o
+# RUN: yaml2obj -docnum 4 %s > %t-x86_64.o
# RUN: llvm-readobj -s %t-x86_64.o | FileCheck -check-prefix=X86_64 %s
# X86_64: Flags [ (0x10000000)
@@ -75,7 +75,7 @@ Sections:
# X86_64-NEXT: ]
# x86_64.o
----
+--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
diff --git a/llvm/test/tools/sanstats/elf.test b/llvm/test/tools/sanstats/elf.test
index 0b6292f82f8..91651bc3f9d 100644
--- a/llvm/test/tools/sanstats/elf.test
+++ b/llvm/test/tools/sanstats/elf.test
@@ -1,5 +1,5 @@
-# RUN: yaml2obj -format=elf %s > %t1.o
-# RUN: yaml2obj -format=elf %s > %t2.o
+# RUN: yaml2obj %s > %t1.o
+# RUN: yaml2obj %s > %t2.o
# RUN: echo -ne "\x04" > %t.stats
@@ -39,7 +39,7 @@
# CHECK: /tmp{{[/\\]}}f.c:2 f2 cfi-icall 12
# CHECK: /tmp{{[/\\]}}f.c:1 f1 <unknown> 14
----
+--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
diff --git a/llvm/test/tools/yaml2obj/missing_document_tag.yaml b/llvm/test/tools/yaml2obj/missing_document_tag.yaml
new file mode 100644
index 00000000000..3cec172d580
--- /dev/null
+++ b/llvm/test/tools/yaml2obj/missing_document_tag.yaml
@@ -0,0 +1,6 @@
+# RUN: not yaml2obj %s 2>&1 | FileCheck %s
+
+---
+DummyData:
+ foo: 0
+...
diff --git a/llvm/test/tools/yaml2obj/unsupported_document_tag.yaml b/llvm/test/tools/yaml2obj/unsupported_document_tag.yaml
new file mode 100644
index 00000000000..e73d450a9bb
--- /dev/null
+++ b/llvm/test/tools/yaml2obj/unsupported_document_tag.yaml
@@ -0,0 +1,8 @@
+# RUN: not yaml2obj %s 2>&1 | FileCheck %s
+
+--- !unsupported-tag
+DummyData:
+ foo: 0
+...
+
+#check error: YAML Object File unsupported document type tag '!unsupported-tag'!
diff --git a/llvm/tools/obj2yaml/macho2yaml.cpp b/llvm/tools/obj2yaml/macho2yaml.cpp
index 060a2b82726..c9a1385f173 100644
--- a/llvm/tools/obj2yaml/macho2yaml.cpp
+++ b/llvm/tools/obj2yaml/macho2yaml.cpp
@@ -10,7 +10,7 @@
#include "Error.h"
#include "obj2yaml.h"
#include "llvm/Object/MachOUniversal.h"
-#include "llvm/ObjectYAML/MachOYAML.h"
+#include "llvm/ObjectYAML/ObjectYAML.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/LEB128.h"
@@ -467,15 +467,18 @@ Error macho2yaml(raw_ostream &Out, const object::MachOObjectFile &Obj) {
if (!YAML)
return YAML.takeError();
+ yaml::YamlObjectFile YAMLFile;
+ YAMLFile.MachO = std::move(YAML.get());
+
yaml::Output Yout(Out);
- Yout << *(YAML.get());
+ Yout << YAMLFile;
return Error::success();
}
Error macho2yaml(raw_ostream &Out, const object::MachOUniversalBinary &Obj) {
- MachOYAML::MachFile YAMLFile;
- YAMLFile.isFat = true;
- MachOYAML::UniversalBinary &YAML = YAMLFile.FatFile;
+ yaml::YamlObjectFile YAMLFile;
+ YAMLFile.FatMachO.reset(new MachOYAML::UniversalBinary());
+ MachOYAML::UniversalBinary &YAML = *YAMLFile.FatMachO;
YAML.Header.magic = Obj.getMagic();
YAML.Header.nfat_arch = Obj.getNumberOfObjects();
diff --git a/llvm/tools/yaml2obj/yaml2coff.cpp b/llvm/tools/yaml2obj/yaml2coff.cpp
index 1a1d07d7944..8f3f5217952 100644
--- a/llvm/tools/yaml2obj/yaml2coff.cpp
+++ b/llvm/tools/yaml2obj/yaml2coff.cpp
@@ -18,7 +18,7 @@
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Object/COFF.h"
-#include "llvm/ObjectYAML/COFFYAML.h"
+#include "llvm/ObjectYAML/ObjectYAML.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/SourceMgr.h"
@@ -532,14 +532,7 @@ static bool writeCOFF(COFFParser &CP, raw_ostream &OS) {
return true;
}
-int yaml2coff(yaml::Input &YIn, raw_ostream &Out) {
- COFFYAML::Object Doc;
- YIn >> Doc;
- if (YIn.error()) {
- errs() << "yaml2obj: Failed to parse YAML file!\n";
- return 1;
- }
-
+int yaml2coff(llvm::COFFYAML::Object &Doc, raw_ostream &Out) {
COFFParser CP(Doc);
if (!CP.parse()) {
errs() << "yaml2obj: Failed to parse YAML file!\n";
diff --git a/llvm/tools/yaml2obj/yaml2elf.cpp b/llvm/tools/yaml2obj/yaml2elf.cpp
index a2ae5e2e756..c98093431a7 100644
--- a/llvm/tools/yaml2obj/yaml2elf.cpp
+++ b/llvm/tools/yaml2obj/yaml2elf.cpp
@@ -558,13 +558,7 @@ static bool isLittleEndian(const ELFYAML::Object &Doc) {
return Doc.Header.Data == ELFYAML::ELF_ELFDATA(ELF::ELFDATA2LSB);
}
-int yaml2elf(yaml::Input &YIn, raw_ostream &Out) {
- ELFYAML::Object Doc;
- YIn >> Doc;
- if (YIn.error()) {
- errs() << "yaml2obj: Failed to parse YAML file!\n";
- return 1;
- }
+int yaml2elf(llvm::ELFYAML::Object &Doc, raw_ostream &Out) {
using object::ELFType;
typedef ELFType<support::little, true> LE64;
typedef ELFType<support::big, true> BE64;
diff --git a/llvm/tools/yaml2obj/yaml2macho.cpp b/llvm/tools/yaml2obj/yaml2macho.cpp
index 3d8be965209..fb29e206be3 100644
--- a/llvm/tools/yaml2obj/yaml2macho.cpp
+++ b/llvm/tools/yaml2obj/yaml2macho.cpp
@@ -13,7 +13,7 @@
//===----------------------------------------------------------------------===//
#include "yaml2obj.h"
-#include "llvm/ObjectYAML/MachOYAML.h"
+#include "llvm/ObjectYAML/ObjectYAML.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/MachO.h"
@@ -426,8 +426,8 @@ Error MachOWriter::writeStringTable(raw_ostream &OS) {
class UniversalWriter {
public:
- UniversalWriter(MachOYAML::MachFile &MachFile)
- : MachFile(MachFile), fileStart(0) {}
+ UniversalWriter(yaml::YamlObjectFile &ObjectFile)
+ : ObjectFile(ObjectFile), fileStart(0) {}
Error writeMachO(raw_ostream &OS);
@@ -437,21 +437,21 @@ private:
void ZeroToOffset(raw_ostream &OS, size_t offset);
- MachOYAML::MachFile &MachFile;
+ yaml::YamlObjectFile &ObjectFile;
uint64_t fileStart;
};
Error UniversalWriter::writeMachO(raw_ostream &OS) {
fileStart = OS.tell();
- if (!MachFile.isFat) {
- MachOWriter Writer(MachFile.ThinFile);
+ if (ObjectFile.MachO) {
+ MachOWriter Writer(*ObjectFile.MachO);
return Writer.writeMachO(OS);
}
if (auto Err = writeFatHeader(OS))
return Err;
if (auto Err = writeFatArchs(OS))
return Err;
- auto &FatFile = MachFile.FatFile;
+ auto &FatFile = *ObjectFile.FatMachO;
assert(FatFile.FatArchs.size() == FatFile.Slices.size());
for (size_t i = 0; i < FatFile.Slices.size(); i++) {
ZeroToOffset(OS, FatFile.FatArchs[i].offset);
@@ -465,7 +465,7 @@ Error UniversalWriter::writeMachO(raw_ostream &OS) {
}
Error UniversalWriter::writeFatHeader(raw_ostream &OS) {
- auto &FatFile = MachFile.FatFile;
+ auto &FatFile = *ObjectFile.FatMachO;
MachO::fat_header header;
header.magic = FatFile.Header.magic;
header.nfat_arch = FatFile.Header.nfat_arch;
@@ -509,7 +509,7 @@ void writeFatArch<MachO::fat_arch_64>(MachOYAML::FatArch &Arch,
}
Error UniversalWriter::writeFatArchs(raw_ostream &OS) {
- auto &FatFile = MachFile.FatFile;
+ auto &FatFile = *ObjectFile.FatMachO;
bool is64Bit = FatFile.Header.magic == MachO::FAT_MAGIC_64;
for (auto Arch : FatFile.FatArchs) {
if (is64Bit)
@@ -529,14 +529,7 @@ void UniversalWriter::ZeroToOffset(raw_ostream &OS, size_t Offset) {
} // end anonymous namespace
-int yaml2macho(yaml::Input &YIn, raw_ostream &Out) {
- MachOYAML::MachFile Doc;
- YIn >> Doc;
- if (YIn.error()) {
- errs() << "yaml2obj: Failed to parse YAML file!\n";
- return 1;
- }
-
+int yaml2macho(yaml::YamlObjectFile &Doc, raw_ostream &Out) {
UniversalWriter Writer(Doc);
if (auto Err = Writer.writeMachO(Out)) {
errs() << toString(std::move(Err));
diff --git a/llvm/tools/yaml2obj/yaml2obj.cpp b/llvm/tools/yaml2obj/yaml2obj.cpp
index a2a8e0b8b83..f746d84a389 100644
--- a/llvm/tools/yaml2obj/yaml2obj.cpp
+++ b/llvm/tools/yaml2obj/yaml2obj.cpp
@@ -16,6 +16,7 @@
#include "yaml2obj.h"
#include "llvm/ADT/StringExtras.h"
+#include "llvm/ObjectYAML/ObjectYAML.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/ManagedStatic.h"
@@ -32,29 +33,6 @@ using namespace llvm;
static cl::opt<std::string>
Input(cl::Positional, cl::desc("<input>"), cl::init("-"));
-// TODO: The "right" way to tell what kind of object file a given YAML file
-// corresponds to is to look at YAML "tags" (e.g. `!Foo`). Then, different
-// tags (`!ELF`, `!COFF`, etc.) would be used to discriminate between them.
-// Interpreting the tags is needed eventually for when writing test cases,
-// so that we can e.g. have `!Archive` contain a sequence of `!ELF`, and
-// just Do The Right Thing. However, interpreting these tags and acting on
-// them appropriately requires some work in the YAML parser and the YAMLIO
-// library.
-enum YAMLObjectFormat {
- YOF_COFF,
- YOF_ELF,
- YOF_MACHO
-};
-
-cl::opt<YAMLObjectFormat> Format(
- "format",
- cl::desc("Interpret input as this type of object file"),
- cl::values(
- clEnumValN(YOF_COFF, "coff", "COFF object file format"),
- clEnumValN(YOF_ELF, "elf", "ELF object file format"),
- clEnumValN(YOF_MACHO, "macho", "Mach-O object file format"),
- clEnumValEnd));
-
cl::opt<unsigned>
DocNum("docnum", cl::init(1),
cl::desc("Read specified document from input (default = 1)"));
@@ -62,14 +40,26 @@ DocNum("docnum", cl::init(1),
static cl::opt<std::string> OutputFilename("o", cl::desc("Output filename"),
cl::value_desc("filename"));
-typedef int (*ConvertFuncPtr)(yaml::Input & YIn, raw_ostream &Out);
-
-static int convertYAML(yaml::Input &YIn, raw_ostream &Out,
- ConvertFuncPtr Convert) {
+static int convertYAML(yaml::Input &YIn, raw_ostream &Out) {
unsigned CurDocNum = 0;
do {
- if (++CurDocNum == DocNum)
- return Convert(YIn, Out);
+ if (++CurDocNum == DocNum) {
+ yaml::YamlObjectFile Doc;
+ YIn >> Doc;
+ if (YIn.error()) {
+ errs() << "yaml2obj: Failed to parse YAML file!\n";
+ return 1;
+ }
+
+ if (Doc.Elf)
+ return yaml2elf(*Doc.Elf, Out);
+ if (Doc.Coff)
+ return yaml2coff(*Doc.Coff, Out);
+ if (Doc.MachO || Doc.FatMachO)
+ return yaml2macho(Doc, Out);
+ errs() << "yaml2obj: Unknown document type!\n";
+ return 1;
+ }
} while (YIn.nextDocument());
errs() << "yaml2obj: Cannot find the " << DocNum
@@ -99,21 +89,9 @@ int main(int argc, char **argv) {
if (!Buf)
return 1;
- ConvertFuncPtr Convert = nullptr;
- if (Format == YOF_COFF)
- Convert = yaml2coff;
- else if (Format == YOF_ELF)
- Convert = yaml2elf;
- else if (Format == YOF_MACHO)
- Convert = yaml2macho;
- else {
- errs() << "Not yet implemented\n";
- return 1;
- }
-
yaml::Input YIn(Buf.get()->getBuffer());
- int Res = convertYAML(YIn, Out->os(), Convert);
+ int Res = convertYAML(YIn, Out->os());
if (Res == 0)
Out->keep();
diff --git a/llvm/tools/yaml2obj/yaml2obj.h b/llvm/tools/yaml2obj/yaml2obj.h
index cd9845a7731..b5025e860bd 100644
--- a/llvm/tools/yaml2obj/yaml2obj.h
+++ b/llvm/tools/yaml2obj/yaml2obj.h
@@ -14,12 +14,23 @@
namespace llvm {
class raw_ostream;
+
+namespace COFFYAML {
+struct Object;
+}
+
+namespace ELFYAML {
+struct Object;
+}
+
namespace yaml {
class Input;
+struct YamlObjectFile;
}
}
-int yaml2coff(llvm::yaml::Input &YIn, llvm::raw_ostream &Out);
-int yaml2elf(llvm::yaml::Input &YIn, llvm::raw_ostream &Out);
-int yaml2macho(llvm::yaml::Input &YIn, llvm::raw_ostream &Out);
+
+int yaml2coff(llvm::COFFYAML::Object &Doc, llvm::raw_ostream &Out);
+int yaml2elf(llvm::ELFYAML::Object &Doc, llvm::raw_ostream &Out);
+int yaml2macho(llvm::yaml::YamlObjectFile &Doc, llvm::raw_ostream &Out);
#endif
OpenPOWER on IntegriCloud