diff options
author | Esme-Yi <esme.yi@ibm.com> | 2021-06-10 04:37:06 +0000 |
---|---|---|
committer | Esme-Yi <esme.yi@ibm.com> | 2021-06-10 04:37:06 +0000 |
commit | 8a23f74eb79f85879507809553555892673a9c01 (patch) | |
tree | c68449d28f7f5439dc4946b2377ffd7e83eb63fb /llvm/lib | |
parent | 5b5ab80e31958b3b4a52de13ce4306a2c6c8765d (diff) | |
download | llvm-8a23f74eb79f85879507809553555892673a9c01.zip llvm-8a23f74eb79f85879507809553555892673a9c01.tar.gz llvm-8a23f74eb79f85879507809553555892673a9c01.tar.bz2 |
[llvm-objdump][XCOFF] Enable the -l (--line-numbers) option.
Summary: Add support for dumping line number
information for XCOFF object files in llvm-objdump.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D101272
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Object/SymbolSize.cpp | 6 | ||||
-rw-r--r-- | llvm/lib/Object/XCOFFObjectFile.cpp | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/llvm/lib/Object/SymbolSize.cpp b/llvm/lib/Object/SymbolSize.cpp index 97baabe..e42dbe6 100644 --- a/llvm/lib/Object/SymbolSize.cpp +++ b/llvm/lib/Object/SymbolSize.cpp @@ -12,6 +12,7 @@ #include "llvm/Object/ELFObjectFile.h" #include "llvm/Object/MachO.h" #include "llvm/Object/Wasm.h" +#include "llvm/Object/XCOFFObjectFile.h" using namespace llvm; using namespace object; @@ -30,7 +31,8 @@ static unsigned getSectionID(const ObjectFile &O, SectionRef Sec) { return M->getSectionID(Sec); if (isa<WasmObjectFile>(&O)) return Sec.getIndex(); - + if (isa<XCOFFObjectFile>(&O)) + return Sec.getIndex(); return cast<COFFObjectFile>(O).getSectionID(Sec); } @@ -39,6 +41,8 @@ static unsigned getSymbolSectionID(const ObjectFile &O, SymbolRef Sym) { return M->getSymbolSectionID(Sym); if (const auto *M = dyn_cast<WasmObjectFile>(&O)) return M->getSymbolSectionId(Sym); + if (const auto *M = dyn_cast<XCOFFObjectFile>(&O)) + return M->getSymbolSectionID(Sym); return cast<COFFObjectFile>(O).getSymbolSectionID(Sym); } diff --git a/llvm/lib/Object/XCOFFObjectFile.cpp b/llvm/lib/Object/XCOFFObjectFile.cpp index 6e54e4a..86e8c2ea 100644 --- a/llvm/lib/Object/XCOFFObjectFile.cpp +++ b/llvm/lib/Object/XCOFFObjectFile.cpp @@ -214,7 +214,7 @@ uint64_t XCOFFObjectFile::getCommonSymbolSizeImpl(DataRefImpl Symb) const { Expected<SymbolRef::Type> XCOFFObjectFile::getSymbolType(DataRefImpl Symb) const { - llvm_unreachable("Not yet implemented!"); + // TODO: Return the correct symbol type. return SymbolRef::ST_Other; } @@ -394,7 +394,7 @@ void XCOFFObjectFile::getRelocationTypeName( Expected<uint32_t> XCOFFObjectFile::getSymbolFlags(DataRefImpl Symb) const { uint32_t Result = 0; - llvm_unreachable("Not yet implemented!"); + // TODO: Return correct symbol flags. return Result; } @@ -513,6 +513,11 @@ XCOFFObjectFile::getSymbolSectionName(XCOFFSymbolRef SymEntPtr) const { } } +unsigned XCOFFObjectFile::getSymbolSectionID(SymbolRef Sym) const { + XCOFFSymbolRef XCOFFSymRef(Sym.getRawDataRefImpl(), this); + return XCOFFSymRef.getSectionNumber(); +} + bool XCOFFObjectFile::isReservedSectionNumber(int16_t SectionNumber) { return (SectionNumber <= 0 && SectionNumber >= -2); } |