mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 07:17:36 +00:00
llvm-symbolizer: teach it about PowerPC64 ELF function descriptors
Summary: Teach llvm-symbolizer about PowerPC64 ELF function descriptors. Symbols in the .opd section point to function descriptors, the first word of which is a pointer to the real function. For the purposes of symbolizing we pretend that the symbol points directly to the function. This is enough to get decent function names in stack traces for unoptimized binaries, which fixes the sanitizer print-stack-trace test on PowerPC64 Linux. Reviewers: kcc, willschm, samsonov Reviewed By: samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D6110 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221514 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/Object/MachOUniversal.h"
|
||||
#include "llvm/Object/ObjectFile.h"
|
||||
#include "llvm/Support/DataExtractor.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include <map>
|
||||
#include <memory>
|
||||
@@ -115,7 +116,11 @@ private:
|
||||
bool getNameFromSymbolTable(SymbolRef::Type Type, uint64_t Address,
|
||||
std::string &Name, uint64_t &Addr,
|
||||
uint64_t &Size) const;
|
||||
void addSymbol(const SymbolRef &Symbol);
|
||||
// For big-endian PowerPC64 ELF, OpdAddress is the address of the .opd
|
||||
// (function descriptor) section and OpdExtractor refers to its contents.
|
||||
void addSymbol(const SymbolRef &Symbol,
|
||||
DataExtractor *OpdExtractor = nullptr,
|
||||
uint64_t OpdAddress = 0);
|
||||
ObjectFile *Module;
|
||||
std::unique_ptr<DIContext> DebugInfoContext;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user