diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-31 20:57:12 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-31 20:57:12 +0000 |
commit | d8324e6983d06c3d56debcbfdc9ead0e0d4a817d (patch) | |
tree | f50eaaa3e9f03b323aab113dc92b2bc77756d2f3 /lib | |
parent | c2c98e78842b364df35a34639f217339e0bc5118 (diff) | |
download | llvm-d8324e6983d06c3d56debcbfdc9ead0e0d4a817d.tar.gz llvm-d8324e6983d06c3d56debcbfdc9ead0e0d4a817d.tar.bz2 llvm-d8324e6983d06c3d56debcbfdc9ead0e0d4a817d.tar.xz |
Simplify getSymbolFlags.
None of the object formats require extra parsing to compute these flags,
so the method cannot fail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200574 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp | 3 | ||||
-rw-r--r-- | lib/Object/COFFObjectFile.cpp | 7 | ||||
-rw-r--r-- | lib/Object/MachOObjectFile.cpp | 13 |
3 files changed, 9 insertions, 14 deletions
diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp index 6f9eefb68c..8ea941b69d 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp @@ -124,8 +124,7 @@ ObjectImage *RuntimeDyldImpl::loadObject(ObjectImage *InputObject) { Check(i->getType(SymType)); Check(i->getName(Name)); - uint32_t flags; - Check(i->getFlags(flags)); + uint32_t flags = i->getFlags(); bool isCommon = flags & SymbolRef::SF_Common; if (isCommon) { diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 43321c43a4..78cf1ab67c 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/lib/Object/COFFObjectFile.cpp @@ -155,10 +155,9 @@ error_code COFFObjectFile::getSymbolType(DataRefImpl Ref, return object_error::success; } -error_code COFFObjectFile::getSymbolFlags(DataRefImpl Ref, - uint32_t &Result) const { +uint32_t COFFObjectFile::getSymbolFlags(DataRefImpl Ref) const { const coff_symbol *Symb = toSymb(Ref); - Result = SymbolRef::SF_None; + uint32_t Result = SymbolRef::SF_None; // TODO: Correctly set SF_FormatSpecific, SF_ThreadLocal, SF_Common @@ -176,7 +175,7 @@ error_code COFFObjectFile::getSymbolFlags(DataRefImpl Ref, if (Symb->SectionNumber == COFF::IMAGE_SYM_ABSOLUTE) Result |= SymbolRef::SF_Absolute; - return object_error::success; + return Result; } error_code COFFObjectFile::getSymbolSize(DataRefImpl Ref, diff --git a/lib/Object/MachOObjectFile.cpp b/lib/Object/MachOObjectFile.cpp index aca12197ee..385d0b6be0 100644 --- a/lib/Object/MachOObjectFile.cpp +++ b/lib/Object/MachOObjectFile.cpp @@ -495,8 +495,7 @@ MachOObjectFile::getSymbolFileOffset(DataRefImpl Symb, error_code MachOObjectFile::getSymbolAlignment(DataRefImpl DRI, uint32_t &Result) const { - uint32_t flags; - this->getSymbolFlags(DRI, flags); + uint32_t flags = getSymbolFlags(DRI); if (flags & SymbolRef::SF_Common) { nlist_base Entry = getSymbolTableEntryBase(this, DRI); Result = 1 << MachO::GET_COMM_ALIGN(Entry.n_desc); @@ -520,8 +519,7 @@ error_code MachOObjectFile::getSymbolSize(DataRefImpl DRI, SectionIndex = Entry.n_sect; if (!SectionIndex) { - uint32_t flags = SymbolRef::SF_None; - this->getSymbolFlags(DRI, flags); + uint32_t flags = getSymbolFlags(DRI); if (flags & SymbolRef::SF_Common) Result = Value; else @@ -574,15 +572,14 @@ error_code MachOObjectFile::getSymbolType(DataRefImpl Symb, return object_error::success; } -error_code MachOObjectFile::getSymbolFlags(DataRefImpl DRI, - uint32_t &Result) const { +uint32_t MachOObjectFile::getSymbolFlags(DataRefImpl DRI) const { nlist_base Entry = getSymbolTableEntryBase(this, DRI); uint8_t MachOType = Entry.n_type; uint16_t MachOFlags = Entry.n_desc; // TODO: Correctly set SF_ThreadLocal - Result = SymbolRef::SF_None; + uint32_t Result = SymbolRef::SF_None; if ((MachOType & MachO::N_TYPE) == MachO::N_UNDF) Result |= SymbolRef::SF_Undefined; @@ -606,7 +603,7 @@ error_code MachOObjectFile::getSymbolFlags(DataRefImpl DRI, if ((MachOType & MachO::N_TYPE) == MachO::N_ABS) Result |= SymbolRef::SF_Absolute; - return object_error::success; + return Result; } error_code |