[llvm] r200574 - Simplify getSymbolFlags.
Rafael Espindola
rafael.espindola at gmail.com
Fri Jan 31 12:57:12 PST 2014
Author: rafael
Date: Fri Jan 31 14:57:12 2014
New Revision: 200574
URL: http://llvm.org/viewvc/llvm-project?rev=200574&view=rev
Log:
Simplify getSymbolFlags.
None of the object formats require extra parsing to compute these flags,
so the method cannot fail.
Modified:
llvm/trunk/include/llvm/Object/COFF.h
llvm/trunk/include/llvm/Object/ELFObjectFile.h
llvm/trunk/include/llvm/Object/MachO.h
llvm/trunk/include/llvm/Object/ObjectFile.h
llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
llvm/trunk/lib/Object/COFFObjectFile.cpp
llvm/trunk/lib/Object/MachOObjectFile.cpp
llvm/trunk/tools/llvm-ar/llvm-ar.cpp
llvm/trunk/tools/llvm-nm/llvm-nm.cpp
llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
Modified: llvm/trunk/include/llvm/Object/COFF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/COFF.h?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/COFF.h (original)
+++ llvm/trunk/include/llvm/Object/COFF.h Fri Jan 31 14:57:12 2014
@@ -279,8 +279,7 @@ protected:
error_code getSymbolFileOffset(DataRefImpl Symb, uint64_t &Res) const
LLVM_OVERRIDE;
error_code getSymbolSize(DataRefImpl Symb, uint64_t &Res) const LLVM_OVERRIDE;
- error_code getSymbolFlags(DataRefImpl Symb, uint32_t &Res) const
- LLVM_OVERRIDE;
+ uint32_t getSymbolFlags(DataRefImpl Symb) const LLVM_OVERRIDE;
error_code getSymbolType(DataRefImpl Symb, SymbolRef::Type &Res) const
LLVM_OVERRIDE;
error_code getSymbolSection(DataRefImpl Symb, section_iterator &Res) const
Modified: llvm/trunk/include/llvm/Object/ELFObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELFObjectFile.h?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ELFObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ELFObjectFile.h Fri Jan 31 14:57:12 2014
@@ -65,7 +65,7 @@ protected:
error_code getSymbolAlignment(DataRefImpl Symb, uint32_t &Res) const
LLVM_OVERRIDE;
error_code getSymbolSize(DataRefImpl Symb, uint64_t &Res) const LLVM_OVERRIDE;
- error_code getSymbolFlags(DataRefImpl Symb, uint32_t &Res) const;
+ uint32_t getSymbolFlags(DataRefImpl Symb) const LLVM_OVERRIDE;
error_code getSymbolType(DataRefImpl Symb, SymbolRef::Type &Res) const
LLVM_OVERRIDE;
error_code getSymbolSection(DataRefImpl Symb, section_iterator &Res) const
@@ -378,11 +378,10 @@ error_code ELFObjectFile<ELFT>::getSymbo
}
template <class ELFT>
-error_code ELFObjectFile<ELFT>::getSymbolFlags(DataRefImpl Symb,
- uint32_t &Result) const {
+uint32_t ELFObjectFile<ELFT>::getSymbolFlags(DataRefImpl Symb) const {
const Elf_Sym *ESym = getSymbol(Symb);
- Result = SymbolRef::SF_None;
+ uint32_t Result = SymbolRef::SF_None;
if (ESym->getBinding() != ELF::STB_LOCAL)
Result |= SymbolRef::SF_Global;
@@ -407,7 +406,7 @@ error_code ELFObjectFile<ELFT>::getSymbo
if (ESym->getType() == ELF::STT_TLS)
Result |= SymbolRef::SF_ThreadLocal;
- return object_error::success;
+ return Result;
}
template <class ELFT>
Modified: llvm/trunk/include/llvm/Object/MachO.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/MachO.h?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/MachO.h (original)
+++ llvm/trunk/include/llvm/Object/MachO.h Fri Jan 31 14:57:12 2014
@@ -71,8 +71,7 @@ public:
error_code getSymbolSize(DataRefImpl Symb, uint64_t &Res) const LLVM_OVERRIDE;
error_code getSymbolType(DataRefImpl Symb, SymbolRef::Type &Res) const
LLVM_OVERRIDE;
- error_code getSymbolFlags(DataRefImpl Symb, uint32_t &Res) const
- LLVM_OVERRIDE;
+ uint32_t getSymbolFlags(DataRefImpl Symb) const LLVM_OVERRIDE;
error_code getSymbolSection(DataRefImpl Symb, section_iterator &Res) const
LLVM_OVERRIDE;
error_code getSymbolValue(DataRefImpl Symb, uint64_t &Val) const
Modified: llvm/trunk/include/llvm/Object/ObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ObjectFile.h?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ObjectFile.h Fri Jan 31 14:57:12 2014
@@ -219,7 +219,7 @@ public:
error_code getType(SymbolRef::Type &Result) const;
/// Get symbol flags (bitwise OR of SymbolRef::Flags)
- error_code getFlags(uint32_t &Result) const;
+ uint32_t getFlags() const;
/// @brief Get section this symbol is defined in reference to. Result is
/// end_sections() if it is undefined or is an absolute symbol.
@@ -289,8 +289,7 @@ protected:
virtual error_code getSymbolSize(DataRefImpl Symb, uint64_t &Res) const = 0;
virtual error_code getSymbolType(DataRefImpl Symb,
SymbolRef::Type &Res) const = 0;
- virtual error_code getSymbolFlags(DataRefImpl Symb,
- uint32_t &Res) const = 0;
+ virtual uint32_t getSymbolFlags(DataRefImpl Symb) const = 0;
virtual error_code getSymbolSection(DataRefImpl Symb,
section_iterator &Res) const = 0;
virtual error_code getSymbolValue(DataRefImpl Symb, uint64_t &Val) const = 0;
@@ -428,8 +427,8 @@ inline error_code SymbolRef::getSize(uin
return OwningObject->getSymbolSize(SymbolPimpl, Result);
}
-inline error_code SymbolRef::getFlags(uint32_t &Result) const {
- return OwningObject->getSymbolFlags(SymbolPimpl, Result);
+inline uint32_t SymbolRef::getFlags() const {
+ return OwningObject->getSymbolFlags(SymbolPimpl);
}
inline error_code SymbolRef::getSection(section_iterator &Result) const {
Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp Fri Jan 31 14:57:12 2014
@@ -124,8 +124,7 @@ ObjectImage *RuntimeDyldImpl::loadObject
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) {
Modified: llvm/trunk/lib/Object/COFFObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/COFFObjectFile.cpp?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/lib/Object/COFFObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/COFFObjectFile.cpp Fri Jan 31 14:57:12 2014
@@ -155,10 +155,9 @@ error_code COFFObjectFile::getSymbolType
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::getSymbolFlag
if (Symb->SectionNumber == COFF::IMAGE_SYM_ABSOLUTE)
Result |= SymbolRef::SF_Absolute;
- return object_error::success;
+ return Result;
}
error_code COFFObjectFile::getSymbolSize(DataRefImpl Ref,
Modified: llvm/trunk/lib/Object/MachOObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/MachOObjectFile.cpp?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/lib/Object/MachOObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/MachOObjectFile.cpp Fri Jan 31 14:57:12 2014
@@ -495,8 +495,7 @@ MachOObjectFile::getSymbolFileOffset(Dat
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::getSymbolSiz
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::getSymbolTyp
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::getSymbolFla
if ((MachOType & MachO::N_TYPE) == MachO::N_ABS)
Result |= SymbolRef::SF_Absolute;
- return object_error::success;
+ return Result;
}
error_code
Modified: llvm/trunk/tools/llvm-ar/llvm-ar.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-ar/llvm-ar.cpp?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-ar/llvm-ar.cpp (original)
+++ llvm/trunk/tools/llvm-ar/llvm-ar.cpp Fri Jan 31 14:57:12 2014
@@ -719,8 +719,7 @@ static void writeSymbolTable(
for (object::symbol_iterator I = Obj->begin_symbols(),
E = Obj->end_symbols();
I != E; ++I) {
- uint32_t Symflags;
- failIfError(I->getFlags(Symflags));
+ uint32_t Symflags = I->getFlags();;
if (Symflags & object::SymbolRef::SF_FormatSpecific)
continue;
if (!(Symflags & object::SymbolRef::SF_Global))
Modified: llvm/trunk/tools/llvm-nm/llvm-nm.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-nm/llvm-nm.cpp?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-nm/llvm-nm.cpp (original)
+++ llvm/trunk/tools/llvm-nm/llvm-nm.cpp Fri Jan 31 14:57:12 2014
@@ -561,9 +561,7 @@ static void dumpSymbolNamesFromObject(Ob
getDynamicSymbolIterators(Obj, IBegin, IEnd);
}
for (symbol_iterator I = IBegin; I != IEnd; ++I) {
- uint32_t SymFlags;
- if (error(I->getFlags(SymFlags)))
- break;
+ uint32_t SymFlags = I->getFlags();
if (!DebugSyms && (SymFlags & SymbolRef::SF_FormatSpecific))
continue;
NMSymbol S;
Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=200574&r1=200573&r2=200574&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Fri Jan 31 14:57:12 2014
@@ -702,11 +702,10 @@ static void PrintSymbolTable(const Objec
uint64_t Address;
SymbolRef::Type Type;
uint64_t Size;
- uint32_t Flags;
+ uint32_t Flags = si->getFlags();
section_iterator Section = o->end_sections();
if (error(si->getName(Name))) continue;
if (error(si->getAddress(Address))) continue;
- if (error(si->getFlags(Flags))) continue;
if (error(si->getType(Type))) continue;
if (error(si->getSize(Size))) continue;
if (error(si->getSection(Section))) continue;
More information about the llvm-commits
mailing list