summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-11-02 20:10:07 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-11-02 20:10:07 +0000
commit66b8ec520f84c704e2a7f89dfa9ee1452ef5bc43 (patch)
tree18944cd0e55d500b10a4ff0a97661c74a1f65a09 /lib
parent1b6c8d1f6c834d8c3de4f78a4c99f8800f581b73 (diff)
downloadllvm-66b8ec520f84c704e2a7f89dfa9ee1452ef5bc43.tar.gz
llvm-66b8ec520f84c704e2a7f89dfa9ee1452ef5bc43.tar.bz2
llvm-66b8ec520f84c704e2a7f89dfa9ee1452ef5bc43.tar.xz
Convert another use of getSymbolNMTypeChar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193932 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Object/COFFObjectFile.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp
index 860d8123a7..d48f44c75a 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;