diff --git a/include/llvm/Object/YAML.h b/include/llvm/Object/YAML.h index 44d387b84eb..304454bd734 100644 --- a/include/llvm/Object/YAML.h +++ b/include/llvm/Object/YAML.h @@ -41,6 +41,13 @@ public: assert(isBinary); return Data; } + bool operator==(const BinaryRef &Ref) { + // Special case for default constructed BinaryRef. + if (Ref.Data.empty() && Data.empty()) + return true; + + return Ref.isBinary == isBinary && Ref.Data == Data; + } }; } diff --git a/lib/Object/COFFYAML.cpp b/lib/Object/COFFYAML.cpp index 6e8dad41f9a..e3c2a45977c 100644 --- a/lib/Object/COFFYAML.cpp +++ b/lib/Object/COFFYAML.cpp @@ -255,8 +255,9 @@ void MappingTraits::mapping(IO &IO, COFFYAML::Symbol &S) { IO.mapRequired("SimpleType", S.SimpleType); IO.mapRequired("ComplexType", S.ComplexType); IO.mapRequired("StorageClass", NS->StorageClass); - IO.mapOptional("NumberOfAuxSymbols", S.Header.NumberOfAuxSymbols); - IO.mapOptional("AuxiliaryData", S.AuxiliaryData); + IO.mapOptional("NumberOfAuxSymbols", S.Header.NumberOfAuxSymbols, + (uint8_t) 0); + IO.mapOptional("AuxiliaryData", S.AuxiliaryData, object::yaml::BinaryRef()); } void MappingTraits::mapping(IO &IO, COFFYAML::Section &Sec) { diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test index 5c145e87d5d..6c87268801f 100644 --- a/test/Object/obj2yaml.test +++ b/test/Object/obj2yaml.test @@ -150,3 +150,4 @@ COFF-X86-64-NEXT: SectionNumber: 0 COFF-X86-64-NEXT: SimpleType: IMAGE_SYM_TYPE_NULL COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_NULL COFF-X86-64-NEXT: StorageClass: IMAGE_SYM_CLASS_EXTERNAL +COFF-X86-64-NOT: NumberOfAuxSymbols