[llvm] [DirectX] Add ObjectFile boilerplate for objdump (PR #151434)
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 31 11:20:15 PDT 2025
================
@@ -584,6 +586,85 @@ class DXContainer {
}
};
+class DXContainerObjectFile : public ObjectFile {
+private:
+ friend class ObjectFile;
+ DXContainer Container;
+
+ using PartData = DXContainer::PartIterator::PartData;
+ llvm::SmallVector<PartData> Parts;
+ using PartIterator = llvm::SmallVector<PartData>::iterator;
+
+ DXContainerObjectFile(DXContainer C)
+ : ObjectFile(ID_DXContainer, MemoryBufferRef(C.getData(), "")),
+ Container(C) {
+ for (auto &P : C)
+ Parts.push_back(P);
+ }
+
+public:
+ static bool classof(const Binary *v) { return v->isDXContainer(); }
+
+ Expected<StringRef> getSymbolName(DataRefImpl) const override { return ""; }
+ Expected<uint64_t> getSymbolAddress(DataRefImpl Symb) const override;
+ uint64_t getSymbolValueImpl(DataRefImpl Symb) const override { return 0; }
+ uint64_t getCommonSymbolSizeImpl(DataRefImpl Symb) const override {
+ return 0;
+ }
+ Expected<SymbolRef::Type> getSymbolType(DataRefImpl Symb) const override {
+ return SymbolRef::Type::ST_Unknown;
+ }
----------------
bogner wrote:
Can `getSymbolName` and `getSymbolType` return errors like the other symbol-related `Expected<T>` functions here? Alternatively, the specific symbol APIs could probably all be made `llvm_unreachable()` as in my other suggestion, as I don't think they should be dynamically reachable.
https://github.com/llvm/llvm-project/pull/151434
More information about the llvm-commits
mailing list