From 5e3a082c797f0214d44858b05a13543872dfd413 Mon Sep 17 00:00:00 2001 From: "Michael J. Spencer" Date: Tue, 18 Oct 2011 19:31:59 +0000 Subject: [PATCH] Object/COFF: Change type from a struct to a uint16_t. The struct would be incorrect for bigendian systems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142403 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/COFF.h | 13 +++++++++---- lib/Object/COFFObjectFile.cpp | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/llvm/Object/COFF.h b/include/llvm/Object/COFF.h index db05c98aafa..1f577c74339 100644 --- a/include/llvm/Object/COFF.h +++ b/include/llvm/Object/COFF.h @@ -45,13 +45,18 @@ struct coff_symbol { support::ulittle32_t Value; support::little16_t SectionNumber; - struct { - support::ulittle8_t BaseType; - support::ulittle8_t ComplexType; - } Type; + support::ulittle16_t Type; support::ulittle8_t StorageClass; support::ulittle8_t NumberOfAuxSymbols; + + uint8_t getBaseType() const { + return Type & 0x0F; + } + + uint8_t getComplexType() const { + return (Type & 0xF0) >> 4; + } }; struct coff_section { diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 13356520d7b..e52a31f67f9 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/lib/Object/COFFObjectFile.cpp @@ -147,7 +147,7 @@ error_code COFFObjectFile::getSymbolType(DataRefImpl Symb, symb->SectionNumber == COFF::IMAGE_SYM_UNDEFINED) { Result = SymbolRef::ST_External; } else { - if (symb->Type.ComplexType == COFF::IMAGE_SYM_DTYPE_FUNCTION) { + if (symb->getComplexType() == COFF::IMAGE_SYM_DTYPE_FUNCTION) { Result = SymbolRef::ST_Function; } else { char Type;