[llvm-commits] [llvm] r166918 - in /llvm/trunk: include/llvm/Object/COFF.h include/llvm/Object/ELF.h include/llvm/Object/MachO.h include/llvm/Object/ObjectFile.h lib/Object/COFFObjectFile.cpp lib/Object/MachOObjectFile.cpp
Chandler Carruth
chandlerc at google.com
Mon Oct 29 07:41:30 PDT 2012
Are there no unit tests to test new interface points of libObject?
On Oct 29, 2012 3:48 AM, "Tim Northover" <Tim.Northover at arm.com> wrote:
> Author: tnorthover
> Date: Mon Oct 29 05:47:00 2012
> New Revision: 166918
>
> URL: http://llvm.org/viewvc/llvm-project?rev=166918&view=rev
> Log:
> Add interface for querying object files for symbol values.
>
> Currently only implemented for ELF.
>
> Patch by Amara Emerson.
>
> Modified:
> llvm/trunk/include/llvm/Object/COFF.h
> llvm/trunk/include/llvm/Object/ELF.h
> llvm/trunk/include/llvm/Object/MachO.h
> llvm/trunk/include/llvm/Object/ObjectFile.h
> llvm/trunk/lib/Object/COFFObjectFile.cpp
> llvm/trunk/lib/Object/MachOObjectFile.cpp
>
> Modified: llvm/trunk/include/llvm/Object/COFF.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/COFF.h?rev=166918&r1=166917&r2=166918&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/COFF.h (original)
> +++ llvm/trunk/include/llvm/Object/COFF.h Mon Oct 29 05:47:00 2012
> @@ -116,6 +116,7 @@
> virtual error_code getSymbolType(DataRefImpl Symb, SymbolRef::Type
> &Res) const;
> virtual error_code getSymbolSection(DataRefImpl Symb,
> section_iterator &Res) const;
> + virtual error_code getSymbolValue(DataRefImpl Symb, uint64_t &Val)
> const;
>
> virtual error_code getSectionNext(DataRefImpl Sec, SectionRef &Res)
> const;
> virtual error_code getSectionName(DataRefImpl Sec, StringRef &Res)
> const;
>
> Modified: llvm/trunk/include/llvm/Object/ELF.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELF.h?rev=166918&r1=166917&r2=166918&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/ELF.h (original)
> +++ llvm/trunk/include/llvm/Object/ELF.h Mon Oct 29 05:47:00 2012
> @@ -620,6 +620,7 @@
> virtual error_code getSymbolType(DataRefImpl Symb, SymbolRef::Type
> &Res) const;
> virtual error_code getSymbolSection(DataRefImpl Symb,
> section_iterator &Res) const;
> + virtual error_code getSymbolValue(DataRefImpl Symb, uint64_t &Val)
> const;
>
> friend class DynRefImpl<target_endianness, is64Bits>;
> virtual error_code getDynNext(DataRefImpl DynData, DynRef &Result)
> const;
> @@ -1162,6 +1163,16 @@
>
> template<support::endianness target_endianness, bool is64Bits>
> error_code ELFObjectFile<target_endianness, is64Bits>
> + ::getSymbolValue(DataRefImpl Symb,
> + uint64_t &Val) const {
> + validateSymbol(Symb);
> + const Elf_Sym *symb = getSymbol(Symb);
> + Val = symb->st_value;
> + return object_error::success;
> +}
> +
> +template<support::endianness target_endianness, bool is64Bits>
> +error_code ELFObjectFile<target_endianness, is64Bits>
> ::getSectionNext(DataRefImpl Sec, SectionRef
> &Result) const {
> const uint8_t *sec = reinterpret_cast<const uint8_t *>(Sec.p);
> sec += Header->e_shentsize;
>
> Modified: llvm/trunk/include/llvm/Object/MachO.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/MachO.h?rev=166918&r1=166917&r2=166918&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/MachO.h (original)
> +++ llvm/trunk/include/llvm/Object/MachO.h Mon Oct 29 05:47:00 2012
> @@ -61,6 +61,7 @@
> virtual error_code getSymbolType(DataRefImpl Symb, SymbolRef::Type
> &Res) const;
> virtual error_code getSymbolSection(DataRefImpl Symb,
> section_iterator &Res) const;
> + virtual error_code getSymbolValue(DataRefImpl Symb, uint64_t &Val)
> const;
>
> virtual error_code getSectionNext(DataRefImpl Sec, SectionRef &Res)
> const;
> virtual error_code getSectionName(DataRefImpl Sec, StringRef &Res)
> const;
>
> Modified: llvm/trunk/include/llvm/Object/ObjectFile.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ObjectFile.h?rev=166918&r1=166917&r2=166918&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/ObjectFile.h (original)
> +++ llvm/trunk/include/llvm/Object/ObjectFile.h Mon Oct 29 05:47:00 2012
> @@ -234,6 +234,9 @@
> /// end_sections() if it is undefined or is an absolute symbol.
> error_code getSection(section_iterator &Result) const;
>
> + /// @brief Get value of the symbol in the symbol table.
> + error_code getValue(uint64_t &Val) const;
> +
> DataRefImpl getRawDataRefImpl() const;
> };
> typedef content_iterator<SymbolRef> symbol_iterator;
> @@ -300,6 +303,7 @@
> uint32_t &Res) const = 0;
> virtual error_code getSymbolSection(DataRefImpl Symb,
> section_iterator &Res) const = 0;
> + virtual error_code getSymbolValue(DataRefImpl Symb, uint64_t &Val)
> const = 0;
>
> // Same as above for SectionRef.
> friend class SectionRef;
> @@ -444,6 +448,10 @@
> return OwningObject->getSymbolType(SymbolPimpl, Result);
> }
>
> +inline error_code SymbolRef::getValue(uint64_t &Val) const {
> + return OwningObject->getSymbolValue(SymbolPimpl, Val);
> +}
> +
> inline DataRefImpl SymbolRef::getRawDataRefImpl() const {
> return SymbolPimpl;
> }
>
> Modified: llvm/trunk/lib/Object/COFFObjectFile.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/COFFObjectFile.cpp?rev=166918&r1=166917&r2=166918&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Object/COFFObjectFile.cpp (original)
> +++ llvm/trunk/lib/Object/COFFObjectFile.cpp Mon Oct 29 05:47:00 2012
> @@ -288,6 +288,11 @@
> return object_error::success;
> }
>
> +error_code COFFObjectFile::getSymbolValue(DataRefImpl Symb,
> + uint64_t &Val) const {
> + report_fatal_error("getSymbolValue unimplemented in COFFObjectFile");
> +}
> +
> error_code COFFObjectFile::getSectionNext(DataRefImpl Sec,
> SectionRef &Result) const {
> const coff_section *sec = toSec(Sec);
>
> Modified: llvm/trunk/lib/Object/MachOObjectFile.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/MachOObjectFile.cpp?rev=166918&r1=166917&r2=166918&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Object/MachOObjectFile.cpp (original)
> +++ llvm/trunk/lib/Object/MachOObjectFile.cpp Mon Oct 29 05:47:00 2012
> @@ -363,6 +363,10 @@
> return object_error::success;
> }
>
> +error_code MachOObjectFile::getSymbolValue(DataRefImpl Symb,
> + uint64_t &Val) const {
> + report_fatal_error("getSymbolValue unimplemented in MachOObjectFile");
> +}
>
> symbol_iterator MachOObjectFile::begin_symbols() const {
> // DRI.d.a = segment number; DRI.d.b = symbol index.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121029/bbd0f66c/attachment.html>
More information about the llvm-commits
mailing list