[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