aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib
diff options
context:
space:
mode:
authorEsme-Yi <esme.yi@ibm.com>2021-06-10 04:37:06 +0000
committerEsme-Yi <esme.yi@ibm.com>2021-06-10 04:37:06 +0000
commit8a23f74eb79f85879507809553555892673a9c01 (patch)
treec68449d28f7f5439dc4946b2377ffd7e83eb63fb /llvm/lib
parent5b5ab80e31958b3b4a52de13ce4306a2c6c8765d (diff)
downloadllvm-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.cpp6
-rw-r--r--llvm/lib/Object/XCOFFObjectFile.cpp9
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);
}