[llvm] r202264 - Move getELFDynamicSymbolIterators to a public header.
Rafael EspĂndola
rafael.espindola at gmail.com
Thu Feb 27 10:20:42 PST 2014
On 26 February 2014 07:51, Alexey Samsonov <samsonov at google.com> wrote:
> Author: samsonov
> Date: Wed Feb 26 06:51:19 2014
> New Revision: 202264
>
> URL: http://llvm.org/viewvc/llvm-project?rev=202264&view=rev
> Log:
> Move getELFDynamicSymbolIterators to a public header.
>
> Modified:
> llvm/trunk/include/llvm/Object/ELFObjectFile.h
> llvm/trunk/tools/llvm-nm/llvm-nm.cpp
>
> Modified: llvm/trunk/include/llvm/Object/ELFObjectFile.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELFObjectFile.h?rev=202264&r1=202263&r2=202264&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/ELFObjectFile.h (original)
> +++ llvm/trunk/include/llvm/Object/ELFObjectFile.h Wed Feb 26 06:51:19 2014
> @@ -1015,6 +1015,25 @@ static inline error_code getELFRelocatio
> llvm_unreachable("Object passed to getELFRelocationAddend() is not ELF");
> }
>
> +static inline std::pair<symbol_iterator, symbol_iterator>
Why static?
> +getELFDynamicSymbolIterators(SymbolicFile *Obj) {
> + if (const ELF32LEObjectFile *ELF = dyn_cast<ELF32LEObjectFile>(Obj))
> + return std::make_pair(ELF->dynamic_symbol_begin(),
> + ELF->dynamic_symbol_end());
> + if (const ELF64LEObjectFile *ELF = dyn_cast<ELF64LEObjectFile>(Obj))
> + return std::make_pair(ELF->dynamic_symbol_begin(),
> + ELF->dynamic_symbol_end());
> + if (const ELF32BEObjectFile *ELF = dyn_cast<ELF32BEObjectFile>(Obj))
> + return std::make_pair(ELF->dynamic_symbol_begin(),
> + ELF->dynamic_symbol_end());
> + if (const ELF64BEObjectFile *ELF = cast<ELF64BEObjectFile>(Obj))
> + return std::make_pair(ELF->dynamic_symbol_begin(),
> + ELF->dynamic_symbol_end());
> +
> + llvm_unreachable(
> + "Object passed to getELFDynamicSymbolIterators() is not ELF");
> +}
> +
> /// This is a generic interface for retrieving GNU symbol version
> /// information from an ELFObjectFile.
> static inline error_code GetELFSymbolVersion(const ObjectFile *Obj,
>
> 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=202264&r1=202263&r2=202264&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-nm/llvm-nm.cpp (original)
> +++ llvm/trunk/tools/llvm-nm/llvm-nm.cpp Wed Feb 26 06:51:19 2014
> @@ -462,30 +462,6 @@ static char getNMTypeChar(SymbolicFile *
> return Ret;
> }
>
> -static void getDynamicSymbolIterators(SymbolicFile *Obj,
> - basic_symbol_iterator &Begin,
> - basic_symbol_iterator &End) {
> - if (ELF32LEObjectFile *ELF = dyn_cast<ELF32LEObjectFile>(Obj)) {
> - Begin = ELF->dynamic_symbol_begin();
> - End = ELF->dynamic_symbol_end();
> - return;
> - }
> - if (ELF64LEObjectFile *ELF = dyn_cast<ELF64LEObjectFile>(Obj)) {
> - Begin = ELF->dynamic_symbol_begin();
> - End = ELF->dynamic_symbol_end();
> - return;
> - }
> - if (ELF32BEObjectFile *ELF = dyn_cast<ELF32BEObjectFile>(Obj)) {
> - Begin = ELF->dynamic_symbol_begin();
> - End = ELF->dynamic_symbol_end();
> - return;
> - }
> - ELF64BEObjectFile *ELF = cast<ELF64BEObjectFile>(Obj);
> - Begin = ELF->dynamic_symbol_begin();
> - End = ELF->dynamic_symbol_end();
> - return;
> -}
> -
> static void dumpSymbolNamesFromObject(SymbolicFile *Obj) {
> basic_symbol_iterator IBegin = Obj->symbol_begin();
> basic_symbol_iterator IEnd = Obj->symbol_end();
> @@ -494,7 +470,10 @@ static void dumpSymbolNamesFromObject(Sy
> error("File format has no dynamic symbol table", Obj->getFileName());
> return;
> }
> - getDynamicSymbolIterators(Obj, IBegin, IEnd);
> + std::pair<symbol_iterator, symbol_iterator> IDyn =
> + getELFDynamicSymbolIterators(Obj);
> + IBegin = IDyn.first;
> + IEnd = IDyn.second;
> }
> std::string NameBuffer;
> raw_string_ostream OS(NameBuffer);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list