diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-11-02 20:10:07 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-11-02 20:10:07 +0000 |
commit | 66b8ec520f84c704e2a7f89dfa9ee1452ef5bc43 (patch) | |
tree | 18944cd0e55d500b10a4ff0a97661c74a1f65a09 | |
parent | 1b6c8d1f6c834d8c3de4f78a4c99f8800f581b73 (diff) | |
download | external_llvm-66b8ec520f84c704e2a7f89dfa9ee1452ef5bc43.zip external_llvm-66b8ec520f84c704e2a7f89dfa9ee1452ef5bc43.tar.gz external_llvm-66b8ec520f84c704e2a7f89dfa9ee1452ef5bc43.tar.bz2 |
Convert another use of getSymbolNMTypeChar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193932 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Object/COFFObjectFile.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 860d812..d48f44c 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/lib/Object/COFFObjectFile.cpp @@ -149,12 +149,16 @@ error_code COFFObjectFile::getSymbolType(DataRefImpl Symb, if (symb->getComplexType() == COFF::IMAGE_SYM_DTYPE_FUNCTION) { Result = SymbolRef::ST_Function; } else { - char Type; - if (error_code ec = getSymbolNMTypeChar(Symb, Type)) - return ec; - if (Type == 'r' || Type == 'R') { - Result = SymbolRef::ST_Data; + uint32_t Characteristics = 0; + if (symb->SectionNumber > 0) { + const coff_section *Section = NULL; + if (error_code ec = getSection(symb->SectionNumber, Section)) + return ec; + Characteristics = Section->Characteristics; } + if (Characteristics & COFF::IMAGE_SCN_MEM_READ && + ~Characteristics & COFF::IMAGE_SCN_MEM_WRITE) // Read only. + Result = SymbolRef::ST_Data; } } return object_error::success; |