From: David Majnemer Date: Wed, 9 Apr 2014 16:38:15 +0000 (+0000) Subject: obj2yaml: Don't crash if the characteristics field is zero X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=aef1966ed6a370d448ec478e358d175e1cd6ff0d;p=oota-llvm.git obj2yaml: Don't crash if the characteristics field is zero obj2yaml would fail when seeing a Weak External auxiliary record with a characteristics field holding zero instead of one of IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY, IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY, or IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205911 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Object/COFFYAML.cpp b/lib/Object/COFFYAML.cpp index d05576fc49d..49c5ddaee0a 100644 --- a/lib/Object/COFFYAML.cpp +++ b/lib/Object/COFFYAML.cpp @@ -38,6 +38,7 @@ void ScalarEnumerationTraits::enumeration( void ScalarEnumerationTraits::enumeration( IO &IO, COFFYAML::WeakExternalCharacteristics &Value) { + IO.enumCase(Value, "0", 0); ECase(IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY); ECase(IMAGE_WEAK_EXTERN_SEARCH_LIBRARY); ECase(IMAGE_WEAK_EXTERN_SEARCH_ALIAS); diff --git a/test/Object/Inputs/COFF/weak-external.yaml b/test/Object/Inputs/COFF/weak-external.yaml new file mode 100644 index 00000000000..064b44a4a38 --- /dev/null +++ b/test/Object/Inputs/COFF/weak-external.yaml @@ -0,0 +1,43 @@ +--- +header: + Machine: IMAGE_FILE_MACHINE_I386 + Characteristics: [ IMAGE_FILE_LINE_NUMS_STRIPPED, IMAGE_FILE_32BIT_MACHINE ] +sections: + - Name: .text + Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] + Alignment: 4 + SectionData: 5589E583E4F0E800000000B800000000C9C39090 + Relocations: + - VirtualAddress: 7 + SymbolName: ___main + Type: IMAGE_REL_I386_REL32 +symbols: + - Name: .file + Value: 0 + SectionNumber: 65534 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_FILE + File: 'file' + - Name: .text + Value: 0 + SectionNumber: 1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 18 + NumberOfRelocations: 1 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 0 + - Name: ___main + Value: 0 + SectionNumber: 0 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + WeakExternal: + TagIndex: 0 + Characteristics: 0 +... diff --git a/test/Object/obj2yaml-coff-weak-external.test b/test/Object/obj2yaml-coff-weak-external.test new file mode 100644 index 00000000000..4ecdc1bf6f5 --- /dev/null +++ b/test/Object/obj2yaml-coff-weak-external.test @@ -0,0 +1,3 @@ +RUN: yaml2obj %p/Inputs/COFF/weak-external.yaml | obj2yaml | FileCheck %s --check-prefix COFF-I386 + +COFF-I386: Characteristics: 0