[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:14 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;
+  }
----------------
bogner wrote:

These can probably be replaced with `llvm_unreachable("DXContainer does not have symbols")` or something like that. Similarly for `getSymbolFlags` and `moveSymbolNext` below - they should never actually be called since the symbol iterator is an empty list.

https://github.com/llvm/llvm-project/pull/151434


More information about the llvm-commits mailing list