================
@@ -43,13 +44,65 @@ static StringRef getImageName(const OffloadBinary &OB) {
}
}
+static void printOffloadBinaryMetadata(const OffloadBinary &OB,
+ uint64_t level) {
+ const std::string Indent(level * 2, ' ');
+
+ outs() << Indent << left_justify("kind", 16) << getImageName(OB) << "\n";
+ outs() << Indent << left_justify("arch", 16) << OB.getArch() << "\n";
+ outs() << Indent << left_justify("triple", 16) << OB.getTriple() << "\n";
+ outs() << Indent << left_justify("producer", 16)
+ << getOffloadKindName(OB.getOffloadKind()) << "\n";
+
+ StringRef InnerImage = OB.getImage();
+ outs() << Indent << left_justify("image size", 16) << InnerImage.size()
+ << " bytes\n";
+}
+
+/// Print information about nested OffloadBinary (inner layer)
+static void printNestedOffloadBinary(const OffloadBinary &OuterOB,
+ uint64_t Index) {
+ StringRef ImageData = OuterOB.getImage();
+
+ // Parse inner OffloadBinary
+ MemoryBufferRef InnerBuffer(ImageData, "inner-offload-binary");
+ auto InnerBinariesOrErr = OffloadBinary::create(InnerBuffer);
+ if (!InnerBinariesOrErr) {
+ reportWarning("failed to parse nested OffloadBinary: " +
+ toString(InnerBinariesOrErr.takeError()),
+ OuterOB.getFileName());
+ return;
+ }
+
+ auto &InnerBinaries = *InnerBinariesOrErr;
+ if (InnerBinaries.empty()) {
+ reportWarning("nested OffloadBinary contains no entries",
+ OuterOB.getFileName());
+ return;
+ }
+
+ outs() << " [Nested OffloadBinary format detected]\n";
+ outs() << " Number of inner images: " << InnerBinaries.size() << "\n";
+
+ // Display information for each inner image
+ for (uint64_t I = 0, E = InnerBinaries.size(); I != E; ++I) {
+ const OffloadBinary *InnerOB = InnerBinaries[I].get();
+
+ if (InnerBinaries.size() > 1)
+ outs() << " Inner image [" << I << "]:\n";
+
+ printOffloadBinaryMetadata(*InnerOB, 1);
----------------
adurang wrote:
No, I don't think it would be too complicated (I think I said easily, didn't
I?) other than making sure the format spacing remains more or less consistent.
https://github.com/llvm/llvm-project/pull/185425
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits