diff --git a/test/Object/Inputs/COFF/i386.yaml b/test/Object/Inputs/COFF/i386.yaml
index ca90222..aec7a58 100644
--- a/test/Object/Inputs/COFF/i386.yaml
+++ b/test/Object/Inputs/COFF/i386.yaml
@@ -1,5 +1,6 @@
 header: !Header
   Machine: IMAGE_FILE_MACHINE_I386 # (0x14c)
+  Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ]
 
 sections:
   - !Section
diff --git a/test/Object/yaml2obj-readobj.test b/test/Object/yaml2obj-readobj.test
new file mode 100644
index 0000000..545ccc4
--- /dev/null
+++ b/test/Object/yaml2obj-readobj.test
@@ -0,0 +1,5 @@
+RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-readobj -file-headers - | FileCheck %s --check-prefix COFF-I386
+
+// COFF-I386:  Characteristics [ (0x200)
+// COFF-I386-NEXT:    IMAGE_FILE_DEBUG_STRIPPED (0x200)
+// COFF-I386-NEXT:  ]
diff --git a/utils/yaml2obj/yaml2obj.cpp b/utils/yaml2obj/yaml2obj.cpp
index 2f01d19..17b65ae 100644
--- a/utils/yaml2obj/yaml2obj.cpp
+++ b/utils/yaml2obj/yaml2obj.cpp
@@ -129,6 +129,7 @@
 
   struct Header {
     COFF::MachineTypes Machine;
+    std::vector<COFF::Characteristics> Characteristics;
   };
 
   struct Symbol {
@@ -159,6 +160,18 @@
     StringTable.append(4, 0);
   }
 
+  void parseHeader() {
+    Header.Machine = Obj.HeaderData.Machine;
+
+    const std::vector<COFF::Characteristics> &Characteristics =
+      Obj.HeaderData.Characteristics;
+    for (std::vector<COFF::Characteristics>::const_iterator I =
+           Characteristics.begin(), E = Characteristics.end(); I != E; ++I) {
+      uint16_t Characteristic = *I;
+      Header.Characteristics |= Characteristic;
+    }
+  }
+
   bool parseSections() {
     for (std::vector<COFFYAML::Section>::iterator i = Obj.Sections.begin(),
            e = Obj.Sections.end(); i != e; ++i) {
@@ -239,7 +252,7 @@
   }
 
   bool parse() {
-    Header.Machine = Obj.HeaderData.Machine;
+    parseHeader();
     if (!parseSections())
       return false;
     if (!parseSymbols())
@@ -409,6 +422,7 @@
 
 LLVM_YAML_IS_SEQUENCE_VECTOR(COFFYAML::Relocation)
 LLVM_YAML_IS_SEQUENCE_VECTOR(COFF::SectionCharacteristics)
+LLVM_YAML_IS_SEQUENCE_VECTOR(COFF::Characteristics)
 LLVM_YAML_IS_SEQUENCE_VECTOR(COFFYAML::Section)
 LLVM_YAML_IS_SEQUENCE_VECTOR(COFFYAML::Symbol)
 
@@ -511,6 +525,27 @@
 };
 
 template <>
+struct ScalarEnumerationTraits<COFF::Characteristics> {
+  static void enumeration(IO &IO, COFF::Characteristics &Value) {
+    ECase(IMAGE_FILE_RELOCS_STRIPPED);
+    ECase(IMAGE_FILE_EXECUTABLE_IMAGE);
+    ECase(IMAGE_FILE_LINE_NUMS_STRIPPED);
+    ECase(IMAGE_FILE_LOCAL_SYMS_STRIPPED);
+    ECase(IMAGE_FILE_AGGRESSIVE_WS_TRIM);
+    ECase(IMAGE_FILE_LARGE_ADDRESS_AWARE);
+    ECase(IMAGE_FILE_BYTES_REVERSED_LO);
+    ECase(IMAGE_FILE_32BIT_MACHINE);
+    ECase(IMAGE_FILE_DEBUG_STRIPPED);
+    ECase(IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP);
+    ECase(IMAGE_FILE_NET_RUN_FROM_SWAP);
+    ECase(IMAGE_FILE_SYSTEM);
+    ECase(IMAGE_FILE_DLL);
+    ECase(IMAGE_FILE_UP_SYSTEM_ONLY);
+    ECase(IMAGE_FILE_BYTES_REVERSED_HI);
+  }
+};
+
+template <>
 struct ScalarEnumerationTraits<COFF::SectionCharacteristics> {
   static void enumeration(IO &IO, COFF::SectionCharacteristics &Value) {
     ECase(IMAGE_SCN_TYPE_NO_PAD);
@@ -605,6 +640,7 @@
 struct MappingTraits<COFFYAML::Header> {
   static void mapping(IO &IO, COFFYAML::Header &H) {
     IO.mapRequired("Machine", H.Machine);
+    IO.mapOptional("Characteristics", H.Characteristics);
   }
 };
 
