diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2010-11-27 13:52:53 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2010-11-27 13:52:53 +0000 |
| commit | 83224fc391438fcb0792f653cb2a6229017fac32 (patch) | |
| tree | 70d9febcd7f11b947ed6edbd3f16891c710d6e65 /llvm/lib/Object/MachOObject.cpp | |
| parent | 8680ce6ffc72ca133ad58409afe0362c58095784 (diff) | |
| download | llvm-83224fc391438fcb0792f653cb2a6229017fac32.zip llvm-83224fc391438fcb0792f653cb2a6229017fac32.tar.gz llvm-83224fc391438fcb0792f653cb2a6229017fac32.tar.bz2 | |
macho-dump: Add support for dumping symbol table entries.
llvm-svn: 120218
Diffstat (limited to 'llvm/lib/Object/MachOObject.cpp')
| -rw-r--r-- | llvm/lib/Object/MachOObject.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/lib/Object/MachOObject.cpp b/llvm/lib/Object/MachOObject.cpp index 45c9bff..33890f6 100644 --- a/llvm/lib/Object/MachOObject.cpp +++ b/llvm/lib/Object/MachOObject.cpp @@ -308,3 +308,31 @@ void MachOObject::ReadRelocationEntry(uint64_t RelocationTableOffset, Index * sizeof(macho::RelocationEntry)); ReadInMemoryStruct(*this, Buffer->getBuffer(), Offset, Res); } + +template<> +void SwapStruct(macho::SymbolTableEntry &Value) { + SwapValue(Value.StringIndex); + SwapValue(Value.Flags); + SwapValue(Value.Value); +} +void MachOObject::ReadSymbolTableEntry(uint64_t SymbolTableOffset, + unsigned Index, + InMemoryStruct<macho::SymbolTableEntry> &Res) const { + uint64_t Offset = (SymbolTableOffset + + Index * sizeof(macho::SymbolTableEntry)); + ReadInMemoryStruct(*this, Buffer->getBuffer(), Offset, Res); +} + +template<> +void SwapStruct(macho::Symbol64TableEntry &Value) { + SwapValue(Value.StringIndex); + SwapValue(Value.Flags); + SwapValue(Value.Value); +} +void MachOObject::ReadSymbol64TableEntry(uint64_t SymbolTableOffset, + unsigned Index, + InMemoryStruct<macho::Symbol64TableEntry> &Res) const { + uint64_t Offset = (SymbolTableOffset + + Index * sizeof(macho::Symbol64TableEntry)); + ReadInMemoryStruct(*this, Buffer->getBuffer(), Offset, Res); +} |
