[llvm-branch-commits] [llvm] [DirectX] Add support for `remove-section` of `DXContainer` for `llvm-objcopy` (PR #153246)
Finn Plummer via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Aug 14 09:48:24 PDT 2025
https://github.com/inbelic updated https://github.com/llvm/llvm-project/pull/153246
>From d450f5e5a17acc84dd3f3e2c74fdaf0e22dda918 Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienfinn at gmail.com>
Date: Tue, 12 Aug 2025 18:05:54 +0000
Subject: [PATCH 1/7] self-review: correct header filesize
---
llvm/test/tools/llvm-objcopy/DXContainer/headers-copy.test | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/headers-copy.test b/llvm/test/tools/llvm-objcopy/DXContainer/headers-copy.test
index 5a681a6a7b28f..fa90f263eead2 100644
--- a/llvm/test/tools/llvm-objcopy/DXContainer/headers-copy.test
+++ b/llvm/test/tools/llvm-objcopy/DXContainer/headers-copy.test
@@ -12,7 +12,7 @@ Header:
Version:
Major: 1
Minor: 0
- FileSize: 3548
+ FileSize: 1996
PartCount: 7
PartOffsets: [ 60, 76, 92, 108, 236, 1932, 1960 ]
Parts:
>From 09a5ebed14fd86cd4ea8b2cb2c7c45f75bf532cb Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienfinn at gmail.com>
Date: Tue, 12 Aug 2025 18:06:12 +0000
Subject: [PATCH 2/7] [DirectX] Add suport to remove specified sections (parts)
---
llvm/lib/ObjCopy/CMakeLists.txt | 1 +
.../DXContainer/DXContainerObjcopy.cpp | 12 ++++++++
.../ObjCopy/DXContainer/DXContainerObject.cpp | 30 +++++++++++++++++++
.../ObjCopy/DXContainer/DXContainerObject.h | 7 +++++
4 files changed, 50 insertions(+)
create mode 100644 llvm/lib/ObjCopy/DXContainer/DXContainerObject.cpp
diff --git a/llvm/lib/ObjCopy/CMakeLists.txt b/llvm/lib/ObjCopy/CMakeLists.txt
index 54d0ea99fbc28..960f1d1fae2d0 100644
--- a/llvm/lib/ObjCopy/CMakeLists.txt
+++ b/llvm/lib/ObjCopy/CMakeLists.txt
@@ -44,6 +44,7 @@ source_group("Source Files\\DXContainer" REGULAR_EXPRESSION
add_llvm_component_library(LLVMObjCopy
Archive.cpp
DXContainer/DXContainerObjcopy.cpp
+ DXContainer/DXContainerObject.cpp
DXContainer/DXContainerReader.cpp
DXContainer/DXContainerWriter.cpp
CommonConfig.cpp
diff --git a/llvm/lib/ObjCopy/DXContainer/DXContainerObjcopy.cpp b/llvm/lib/ObjCopy/DXContainer/DXContainerObjcopy.cpp
index 38155f0a84498..a6a978d969255 100644
--- a/llvm/lib/ObjCopy/DXContainer/DXContainerObjcopy.cpp
+++ b/llvm/lib/ObjCopy/DXContainer/DXContainerObjcopy.cpp
@@ -19,6 +19,18 @@ namespace dxbc {
using namespace object;
static Error handleArgs(const CommonConfig &Config, Object &Obj) {
+ std::function<bool(const Part &)> RemovePred = [](const Part &) {
+ return false;
+ };
+
+ if (!Config.ToRemove.empty())
+ RemovePred = [&Config](const Part &P) {
+ return Config.ToRemove.matches(P.Name);
+ };
+
+ if (auto E = Obj.removeParts(RemovePred))
+ return E;
+
return Error::success();
}
diff --git a/llvm/lib/ObjCopy/DXContainer/DXContainerObject.cpp b/llvm/lib/ObjCopy/DXContainer/DXContainerObject.cpp
new file mode 100644
index 0000000000000..d7c2462d803c9
--- /dev/null
+++ b/llvm/lib/ObjCopy/DXContainer/DXContainerObject.cpp
@@ -0,0 +1,30 @@
+//===- DXContainerObject.cpp ----------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "DXContainerObject.h"
+
+namespace llvm {
+namespace objcopy {
+namespace dxbc {
+
+Error Object::removeParts(PartPred ToRemove) {
+ erase_if(Parts, ToRemove);
+ recomputeHeader();
+ return Error::success();
+}
+
+void Object::recomputeHeader() {
+ Header.FileSize = headerSize();
+ Header.PartCount = Parts.size();
+ for (const Part &P : Parts)
+ Header.FileSize += P.size();
+}
+
+} // end namespace dxbc
+} // end namespace objcopy
+} // end namespace llvm
diff --git a/llvm/lib/ObjCopy/DXContainer/DXContainerObject.h b/llvm/lib/ObjCopy/DXContainer/DXContainerObject.h
index 160a235bbc1ff..9dcf01e3a3a2a 100644
--- a/llvm/lib/ObjCopy/DXContainer/DXContainerObject.h
+++ b/llvm/lib/ObjCopy/DXContainer/DXContainerObject.h
@@ -30,6 +30,8 @@ struct Part {
}
};
+using PartPred = llvm::function_ref<bool(const Part &)>;
+
struct Object {
::llvm::dxbc::Header Header;
SmallVector<Part> Parts;
@@ -38,6 +40,11 @@ struct Object {
return sizeof(::llvm::dxbc::Header) // base header
+ sizeof(uint32_t) * Parts.size(); // part offset values
}
+
+ Error removeParts(PartPred ToRemove);
+
+private:
+ void recomputeHeader();
};
} // end namespace dxbc
>From d8bc47e81ca8350ea0cb54b1ff92af1d039b10d4 Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienfinn at gmail.com>
Date: Tue, 12 Aug 2025 18:09:06 +0000
Subject: [PATCH 3/7] Add `ToRemove` to implemented options
---
llvm/lib/ObjCopy/ConfigManager.cpp | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/llvm/lib/ObjCopy/ConfigManager.cpp b/llvm/lib/ObjCopy/ConfigManager.cpp
index afbf42f4f1feb..c598795d4c006 100644
--- a/llvm/lib/ObjCopy/ConfigManager.cpp
+++ b/llvm/lib/ObjCopy/ConfigManager.cpp
@@ -117,14 +117,14 @@ ConfigManager::getDXContainerConfig() const {
!Common.AllocSectionsPrefix.empty() ||
Common.DiscardMode != DiscardType::None || !Common.AddSection.empty() ||
!Common.DumpSection.empty() || !Common.KeepSection.empty() ||
- !Common.OnlySection.empty() || !Common.ToRemove.empty() ||
- !Common.SectionsToRename.empty() || !Common.SetSectionAlignment.empty() ||
- !Common.SetSectionFlags.empty() || !Common.SetSectionType.empty() ||
- Common.ExtractDWO || Common.OnlyKeepDebug || Common.StripAllGNU ||
- Common.StripDWO || Common.StripDebug || Common.StripNonAlloc ||
- Common.StripSections || Common.StripUnneeded ||
- Common.DecompressDebugSections || Common.GapFill != 0 ||
- Common.PadTo != 0 || Common.ChangeSectionLMAValAll != 0 ||
+ !Common.OnlySection.empty() || !Common.SectionsToRename.empty() ||
+ !Common.SetSectionAlignment.empty() || !Common.SetSectionFlags.empty() ||
+ !Common.SetSectionType.empty() || Common.ExtractDWO ||
+ Common.OnlyKeepDebug || Common.StripAllGNU || Common.StripDWO ||
+ Common.StripDebug || Common.StripNonAlloc || Common.StripSections ||
+ Common.StripUnneeded || Common.DecompressDebugSections ||
+ Common.GapFill != 0 || Common.PadTo != 0 ||
+ Common.ChangeSectionLMAValAll != 0 ||
!Common.ChangeSectionAddress.empty()) {
return createStringError(
llvm::errc::invalid_argument,
@@ -132,6 +132,6 @@ ConfigManager::getDXContainerConfig() const {
}
// If a flag is listed here, then it has support for DXContainer:
- // Common.PreserveDates
+ // Common.PreserveDates, Common.ToRemove
return DXContainer;
}
>From 325809da9d47aaf3a74e1f7da8977cd68575fb60 Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienfinn at gmail.com>
Date: Tue, 12 Aug 2025 18:34:28 +0000
Subject: [PATCH 4/7] add basic test cases
---
.../DXContainer/basic-remove.test | 300 ++++++++++++++++++
.../DXContainer/headers-remove.test | 50 +++
2 files changed, 350 insertions(+)
create mode 100644 llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
create mode 100644 llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test b/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
new file mode 100644
index 0000000000000..3af18d256fabc
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
@@ -0,0 +1,300 @@
+## Tests that the RTS0 (root signature) part is correctly removed from the
+## copied DXContainer
+
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-objcopy --remove-section=RTS0 %t %t.out
+# RUN: obj2yaml %t.out | FileCheck %s
+
+## The DXContainer described below was generated with:
+
+## `clang-dxc -T cs_6_7 test.hlsl /Fo temp.dxo`
+## `obj2yaml temp.dxo`
+
+## ``` test.hlsl
+## [RootSignature("")]
+## [numthreads(1,1,1)]
+## void main() {}
+## ```
+
+--- !dxcontainer
+Header:
+ Hash: [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 ]
+ Version:
+ Major: 1
+ Minor: 0
+## FileSize = 1984 - 24 (RTS0 content) - 4 (1 part offset) - 8 (1 part header)
+## = 1948
+## CHECK: FileSize: 1948
+ FileSize: 1984
+## CHECK: PartCount: 6
+ PartCount: 7
+ PartOffsets: [ 60, 1792, 1808, 1836, 1852, 1868, 1900 ]
+Parts:
+## CHECK-NOT: RTS0
+ - Name: DXIL
+ Size: 1724
+ Program:
+ MajorVersion: 6
+ MinorVersion: 7
+ ShaderKind: 5
+ Size: 431
+ DXILMajorVersion: 1
+ DXILMinorVersion: 7
+ DXILSize: 1700
+ DXIL: [ 0x42, 0x43, 0xC0, 0xDE, 0x21, 0xC, 0x0, 0x0, 0xA6,
+ 0x1, 0x0, 0x0, 0xB, 0x82, 0x20, 0x0, 0x2, 0x0,
+ 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x7, 0x81, 0x23,
+ 0x91, 0x41, 0xC8, 0x4, 0x49, 0x6, 0x10, 0x32,
+ 0x39, 0x92, 0x1, 0x84, 0xC, 0x25, 0x5, 0x8, 0x19,
+ 0x1E, 0x4, 0x8B, 0x62, 0x80, 0x10, 0x45, 0x2,
+ 0x42, 0x92, 0xB, 0x42, 0x84, 0x10, 0x32, 0x14,
+ 0x38, 0x8, 0x18, 0x4B, 0xA, 0x32, 0x42, 0x88,
+ 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xA5,
+ 0x0, 0x19, 0x32, 0x42, 0xE4, 0x48, 0xE, 0x90,
+ 0x11, 0x22, 0xC4, 0x50, 0x41, 0x51, 0x81, 0x8C,
+ 0xE1, 0x83, 0xE5, 0x8A, 0x4, 0x21, 0x46, 0x6,
+ 0x51, 0x18, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1B,
+ 0x90, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7, 0xC0,
+ 0x1, 0x24, 0x80, 0x2, 0x0, 0x0, 0x0, 0x49, 0x18,
+ 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x13, 0x82, 0x0,
+ 0x0, 0x89, 0x20, 0x0, 0x0, 0x11, 0x0, 0x0, 0x0,
+ 0x32, 0x22, 0x8, 0x9, 0x20, 0x64, 0x85, 0x4, 0x13,
+ 0x22, 0xA4, 0x84, 0x4, 0x13, 0x22, 0xE3, 0x84,
+ 0xA1, 0x90, 0x14, 0x12, 0x4C, 0x88, 0x8C, 0xB,
+ 0x84, 0x84, 0x4C, 0x10, 0x20, 0x73, 0x4, 0x8,
+ 0xC1, 0x65, 0xC3, 0x85, 0x2C, 0xE8, 0x3, 0x40,
+ 0x14, 0x91, 0x4E, 0xD1, 0x4A, 0x48, 0x44, 0x54,
+ 0x11, 0xC3, 0x9, 0x30, 0xC4, 0x18, 0x1, 0x30,
+ 0x2, 0x50, 0x82, 0x21, 0x1A, 0x8, 0x98, 0x23,
+ 0x0, 0x3, 0x0, 0x13, 0x14, 0x72, 0xC0, 0x87, 0x74,
+ 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x3,
+ 0x72, 0xC0, 0x87, 0xD, 0xAE, 0x50, 0xE, 0x6D,
+ 0xD0, 0xE, 0x7A, 0x50, 0xE, 0x6D, 0x0, 0xF, 0x7A,
+ 0x30, 0x7, 0x72, 0xA0, 0x7, 0x73, 0x20, 0x7, 0x6D,
+ 0x90, 0xE, 0x71, 0xA0, 0x7, 0x73, 0x20, 0x7, 0x6D,
+ 0x90, 0xE, 0x78, 0xA0, 0x7, 0x78, 0xD0, 0x6, 0xE9,
+ 0x10, 0x7, 0x76, 0xA0, 0x7, 0x71, 0x60, 0x7, 0x6D,
+ 0x90, 0xE, 0x73, 0x20, 0x7, 0x7A, 0x30, 0x7, 0x72,
+ 0xD0, 0x6, 0xE9, 0x60, 0x7, 0x74, 0xA0, 0x7, 0x76,
+ 0x40, 0x7, 0x6D, 0x60, 0xE, 0x71, 0x60, 0x7, 0x7A,
+ 0x10, 0x7, 0x76, 0xD0, 0x6, 0xE6, 0x30, 0x7, 0x72,
+ 0xA0, 0x7, 0x73, 0x20, 0x7, 0x6D, 0x60, 0xE, 0x76,
+ 0x40, 0x7, 0x7A, 0x60, 0x7, 0x74, 0xD0, 0x6, 0xEE,
+ 0x80, 0x7, 0x7A, 0x10, 0x7, 0x76, 0xA0, 0x7, 0x73,
+ 0x20, 0x7, 0x7A, 0x60, 0x7, 0x74, 0x30, 0xE4,
+ 0x21, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x2, 0x0,
+ 0x0, 0x0, 0x20, 0xB, 0x4, 0x7, 0x0, 0x0, 0x0,
+ 0x32, 0x1E, 0x98, 0xC, 0x19, 0x11, 0x4C, 0x90,
+ 0x8C, 0x9, 0x26, 0x47, 0xC6, 0x4, 0x43, 0xBA,
+ 0x12, 0x28, 0x88, 0x62, 0x28, 0x87, 0x42, 0x28,
+ 0x2, 0x0, 0x0, 0x0, 0x79, 0x18, 0x0, 0x0, 0xE2,
+ 0x0, 0x0, 0x0, 0x33, 0x8, 0x80, 0x1C, 0xC4, 0xE1,
+ 0x1C, 0x66, 0x14, 0x1, 0x3D, 0x88, 0x43, 0x38,
+ 0x84, 0xC3, 0x8C, 0x42, 0x80, 0x7, 0x79, 0x78,
+ 0x7, 0x73, 0x98, 0x71, 0xC, 0xE6, 0x0, 0xF, 0xED,
+ 0x10, 0xE, 0xF4, 0x80, 0xE, 0x33, 0xC, 0x42, 0x1E,
+ 0xC2, 0xC1, 0x1D, 0xCE, 0xA1, 0x1C, 0x66, 0x30,
+ 0x5, 0x3D, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1B,
+ 0xCC, 0x3, 0x3D, 0xC8, 0x43, 0x3D, 0x8C, 0x3,
+ 0x3D, 0xCC, 0x78, 0x8C, 0x74, 0x70, 0x7, 0x7B,
+ 0x8, 0x7, 0x79, 0x48, 0x87, 0x70, 0x70, 0x7, 0x7A,
+ 0x70, 0x3, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87,
+ 0x19, 0xCC, 0x11, 0xE, 0xEC, 0x90, 0xE, 0xE1,
+ 0x30, 0xF, 0x6E, 0x30, 0xF, 0xE3, 0xF0, 0xE, 0xF0,
+ 0x50, 0xE, 0x33, 0x10, 0xC4, 0x1D, 0xDE, 0x21,
+ 0x1C, 0xD8, 0x21, 0x1D, 0xC2, 0x61, 0x1E, 0x66,
+ 0x30, 0x89, 0x3B, 0xBC, 0x83, 0x3B, 0xD0, 0x43,
+ 0x39, 0xB4, 0x3, 0x3C, 0xBC, 0x83, 0x3C, 0x84,
+ 0x3, 0x3B, 0xCC, 0xF0, 0x14, 0x76, 0x60, 0x7,
+ 0x7B, 0x68, 0x7, 0x37, 0x68, 0x87, 0x72, 0x68,
+ 0x7, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70,
+ 0x60, 0x7, 0x76, 0x28, 0x7, 0x76, 0xF8, 0x5, 0x76,
+ 0x78, 0x87, 0x77, 0x80, 0x87, 0x5F, 0x8, 0x87,
+ 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98,
+ 0x81, 0x2C, 0xEE, 0xF0, 0xE, 0xEE, 0xE0, 0xE,
+ 0xF5, 0xC0, 0xE, 0xEC, 0x30, 0x3, 0x62, 0xC8,
+ 0xA1, 0x1C, 0xE4, 0xA1, 0x1C, 0xCC, 0xA1, 0x1C,
+ 0xE4, 0xA1, 0x1C, 0xDC, 0x61, 0x1C, 0xCA, 0x21,
+ 0x1C, 0xC4, 0x81, 0x1D, 0xCA, 0x61, 0x6, 0xD6,
+ 0x90, 0x43, 0x39, 0xC8, 0x43, 0x39, 0x98, 0x43,
+ 0x39, 0xC8, 0x43, 0x39, 0xB8, 0xC3, 0x38, 0x94,
+ 0x43, 0x38, 0x88, 0x3, 0x3B, 0x94, 0xC3, 0x2F,
+ 0xBC, 0x83, 0x3C, 0xFC, 0x82, 0x3B, 0xD4, 0x3,
+ 0x3B, 0xB0, 0xC3, 0xC, 0xC7, 0x69, 0x87, 0x70,
+ 0x58, 0x87, 0x72, 0x70, 0x83, 0x74, 0x68, 0x7,
+ 0x78, 0x60, 0x87, 0x74, 0x18, 0x87, 0x74, 0xA0,
+ 0x87, 0x19, 0xCE, 0x53, 0xF, 0xEE, 0x0, 0xF, 0xF2,
+ 0x50, 0xE, 0xE4, 0x90, 0xE, 0xE3, 0x40, 0xF, 0xE1,
+ 0x20, 0xE, 0xEC, 0x50, 0xE, 0x33, 0x20, 0x28,
+ 0x1D, 0xDC, 0xC1, 0x1E, 0xC2, 0x41, 0x1E, 0xD2,
+ 0x21, 0x1C, 0xDC, 0x81, 0x1E, 0xDC, 0xE0, 0x1C,
+ 0xE4, 0xE1, 0x1D, 0xEA, 0x1, 0x1E, 0x66, 0x18,
+ 0x51, 0x38, 0xB0, 0x43, 0x3A, 0x9C, 0x83, 0x3B,
+ 0xCC, 0x50, 0x24, 0x76, 0x60, 0x7, 0x7B, 0x68,
+ 0x7, 0x37, 0x60, 0x87, 0x77, 0x78, 0x7, 0x78,
+ 0x98, 0x51, 0x4C, 0xF4, 0x90, 0xF, 0xF0, 0x50,
+ 0xE, 0x33, 0x1E, 0x6A, 0x1E, 0xCA, 0x61, 0x1C,
+ 0xE8, 0x21, 0x1D, 0xDE, 0xC1, 0x1D, 0x7E, 0x1,
+ 0x1E, 0xE4, 0xA1, 0x1C, 0xCC, 0x21, 0x1D, 0xF0,
+ 0x61, 0x6, 0x54, 0x85, 0x83, 0x38, 0xCC, 0xC3,
+ 0x3B, 0xB0, 0x43, 0x3D, 0xD0, 0x43, 0x39, 0xFC,
+ 0xC2, 0x3C, 0xE4, 0x43, 0x3B, 0x88, 0xC3, 0x3B,
+ 0xB0, 0xC3, 0x8C, 0xC5, 0xA, 0x87, 0x79, 0x98,
+ 0x87, 0x77, 0x18, 0x87, 0x74, 0x8, 0x7, 0x7A,
+ 0x28, 0x7, 0x72, 0x98, 0x81, 0x5C, 0xE3, 0x10,
+ 0xE, 0xEC, 0xC0, 0xE, 0xE5, 0x50, 0xE, 0xF3, 0x30,
+ 0x23, 0xC1, 0xD2, 0x41, 0x1E, 0xE4, 0xE1, 0x17,
+ 0xD8, 0xE1, 0x1D, 0xDE, 0x1, 0x1E, 0x66, 0x48,
+ 0x19, 0x3B, 0xB0, 0x83, 0x3D, 0xB4, 0x83, 0x1B,
+ 0x84, 0xC3, 0x38, 0x8C, 0x43, 0x39, 0xCC, 0xC3,
+ 0x3C, 0xB8, 0xC1, 0x39, 0xC8, 0xC3, 0x3B, 0xD4,
+ 0x3, 0x3C, 0xCC, 0x48, 0xB4, 0x71, 0x8, 0x7, 0x76,
+ 0x60, 0x7, 0x71, 0x8, 0x87, 0x71, 0x58, 0x87,
+ 0x19, 0xDB, 0xC6, 0xE, 0xEC, 0x60, 0xF, 0xED,
+ 0xE0, 0x6, 0xF0, 0x20, 0xF, 0xE5, 0x30, 0xF, 0xE5,
+ 0x20, 0xF, 0xF6, 0x50, 0xE, 0x6E, 0x10, 0xE, 0xE3,
+ 0x30, 0xE, 0xE5, 0x30, 0xF, 0xF3, 0xE0, 0x6, 0xE9,
+ 0xE0, 0xE, 0xE4, 0x50, 0xE, 0xF8, 0x30, 0x23,
+ 0xE2, 0xEC, 0x61, 0x1C, 0xC2, 0x81, 0x1D, 0xD8,
+ 0xE1, 0x17, 0xEC, 0x21, 0x1D, 0xE6, 0x21, 0x1D,
+ 0xC4, 0x21, 0x1D, 0xD8, 0x21, 0x1D, 0xE8, 0x21,
+ 0x1F, 0x66, 0x20, 0x9D, 0x3B, 0xBC, 0x43, 0x3D,
+ 0xB8, 0x3, 0x39, 0x94, 0x83, 0x39, 0xCC, 0x58,
+ 0xBC, 0x70, 0x70, 0x7, 0x77, 0x78, 0x7, 0x7A,
+ 0x8, 0x7, 0x7A, 0x48, 0x87, 0x77, 0x70, 0x87,
+ 0x19, 0xCB, 0xE7, 0xE, 0xEF, 0x30, 0xF, 0xE1,
+ 0xE0, 0xE, 0xE9, 0x40, 0xF, 0xE9, 0xA0, 0xF, 0xE5,
+ 0x30, 0xC3, 0x1, 0x3, 0x73, 0xA8, 0x7, 0x77, 0x18,
+ 0x87, 0x5F, 0x98, 0x87, 0x70, 0x70, 0x87, 0x74,
+ 0xA0, 0x87, 0x74, 0xD0, 0x87, 0x72, 0x98, 0x81,
+ 0x84, 0x41, 0x39, 0xE0, 0xC3, 0x38, 0xB0, 0x43,
+ 0x3D, 0x90, 0x43, 0x39, 0xCC, 0x40, 0xC4, 0xA0,
+ 0x1D, 0xCA, 0xA1, 0x1D, 0xE0, 0x41, 0x1E, 0xDE,
+ 0xC1, 0x1C, 0x66, 0x24, 0x63, 0x30, 0xE, 0xE1,
+ 0xC0, 0xE, 0xEC, 0x30, 0xF, 0xE9, 0x40, 0xF, 0xE5,
+ 0x30, 0x43, 0x21, 0x83, 0x75, 0x18, 0x7, 0x73,
+ 0x48, 0x87, 0x5F, 0xA0, 0x87, 0x7C, 0x80, 0x87,
+ 0x72, 0x98, 0xB1, 0x94, 0x1, 0x3C, 0x8C, 0xC3,
+ 0x3C, 0x94, 0xC3, 0x38, 0xD0, 0x43, 0x3A, 0xBC,
+ 0x83, 0x3B, 0xCC, 0xC3, 0x8C, 0xC5, 0xC, 0x48,
+ 0x21, 0x15, 0x42, 0x61, 0x1E, 0xE6, 0x21, 0x1D,
+ 0xCE, 0xC1, 0x1D, 0x52, 0x81, 0x14, 0x66, 0x4C,
+ 0x67, 0x30, 0xE, 0xEF, 0x20, 0xF, 0xEF, 0xE0,
+ 0x6, 0xEF, 0x50, 0xF, 0xF4, 0x30, 0xF, 0xE9, 0x40,
+ 0xE, 0xE5, 0xE0, 0x6, 0xE6, 0x20, 0xF, 0xE1, 0xD0,
+ 0xE, 0xE5, 0x30, 0xA3, 0x40, 0x83, 0x76, 0x68,
+ 0x7, 0x79, 0x8, 0x87, 0x19, 0x52, 0x1A, 0xB8,
+ 0xC3, 0x3B, 0x84, 0x3, 0x3B, 0xA4, 0x43, 0x38,
+ 0xCC, 0x83, 0x1B, 0x84, 0x3, 0x39, 0x90, 0x83,
+ 0x3C, 0xCC, 0x3, 0x3C, 0x84, 0xC3, 0x38, 0x94,
+ 0xC3, 0xC, 0x46, 0xD, 0xC6, 0x21, 0x1C, 0xD8,
+ 0x81, 0x1D, 0xCA, 0xA1, 0x1C, 0x7E, 0x81, 0x1E,
+ 0xF2, 0x1, 0x1E, 0xCA, 0x61, 0x86, 0xB3, 0x6,
+ 0xE4, 0x80, 0xF, 0x6E, 0xE0, 0xE, 0xEF, 0xE0,
+ 0xE, 0xF5, 0xE0, 0xE, 0xE9, 0x60, 0xE, 0xEF, 0x20,
+ 0xF, 0xED, 0x30, 0xA3, 0x62, 0x3, 0x72, 0xC0,
+ 0x7, 0x37, 0x18, 0x87, 0x77, 0x70, 0x7, 0x7A,
+ 0x90, 0x87, 0x77, 0x60, 0x7, 0x73, 0x60, 0x87,
+ 0x77, 0xB8, 0x7, 0x37, 0x40, 0x87, 0x74, 0x70,
+ 0x7, 0x7A, 0x98, 0x87, 0x19, 0x4B, 0x1B, 0x90,
+ 0x3, 0x3E, 0xB8, 0x1, 0x3C, 0xC8, 0x43, 0x39,
+ 0x8C, 0x43, 0x3A, 0xCC, 0x43, 0x39, 0x0, 0x0,
+ 0x79, 0x28, 0x0, 0x0, 0x53, 0x0, 0x0, 0x0, 0xC2,
+ 0x3C, 0x90, 0x40, 0x86, 0x10, 0x19, 0x32, 0xE2,
+ 0x64, 0x90, 0x40, 0x46, 0x2, 0x19, 0x23, 0x23,
+ 0x46, 0x2, 0x13, 0x24, 0xC6, 0x0, 0x13, 0x74,
+ 0xD4, 0x61, 0x8C, 0x2D, 0xCC, 0xED, 0xC, 0xC4,
+ 0xAE, 0x4C, 0x6E, 0x2E, 0xED, 0xCD, 0xD, 0x44,
+ 0x46, 0xC6, 0x5, 0xC6, 0x5, 0xE6, 0x2C, 0x8D,
+ 0xE, 0x4, 0xE5, 0x2C, 0x8D, 0xE, 0xE8, 0x2C, 0x8D,
+ 0xE, 0xAD, 0x4E, 0xCC, 0x65, 0xEC, 0xAD, 0x4D,
+ 0x27, 0xCD, 0x4D, 0xAC, 0x8C, 0x2D, 0x6D, 0xEC,
+ 0x85, 0x8D, 0xCD, 0xAE, 0xAD, 0x5, 0x4E, 0xEE,
+ 0x4D, 0xAD, 0x6C, 0x8C, 0xCE, 0xE5, 0x2C, 0x8D,
+ 0xE, 0x84, 0x86, 0xC6, 0xCC, 0xC6, 0x86, 0x4C,
+ 0xC, 0x87, 0x6C, 0xEC, 0x26, 0x67, 0x46, 0x26,
+ 0x67, 0x6C, 0xA6, 0xCC, 0x66, 0x8C, 0xC6, 0x2C,
+ 0xEC, 0x26, 0xC, 0x26, 0x2C, 0xEC, 0x26, 0xCC,
+ 0xCC, 0x86, 0x6, 0xE6, 0x6, 0x26, 0xE7, 0x86,
+ 0xE6, 0x26, 0xE5, 0x8, 0x63, 0x73, 0x87, 0x68,
+ 0xB, 0x4B, 0x73, 0x3B, 0xCA, 0xDD, 0x18, 0x5A,
+ 0x98, 0xDC, 0xD7, 0x5C, 0x9A, 0x5E, 0xD9, 0x69,
+ 0xCC, 0xE4, 0xC2, 0xDA, 0xCA, 0x5A, 0xE0, 0xDE,
+ 0xD2, 0xDC, 0xE8, 0xCA, 0xE4, 0x86, 0x20, 0x1C,
+ 0xC1, 0x10, 0x84, 0x43, 0x18, 0x82, 0x70, 0xC,
+ 0x43, 0x10, 0xE, 0x62, 0x8, 0x42, 0x1, 0xC, 0x41,
+ 0x38, 0x8A, 0x21, 0x8, 0x87, 0x31, 0x6, 0xC1,
+ 0x38, 0xC6, 0x10, 0x4, 0x63, 0x18, 0x4, 0x24,
+ 0x19, 0x83, 0x60, 0x24, 0x63, 0x18, 0xC, 0xC3,
+ 0x18, 0x83, 0xB0, 0x44, 0x63, 0x28, 0x94, 0x1,
+ 0x0, 0xA4, 0x31, 0xC, 0x6, 0xB1, 0x8C, 0x61, 0x60,
+ 0xA, 0xC6, 0x24, 0x64, 0x78, 0x2E, 0x76, 0x61,
+ 0x6C, 0x76, 0x65, 0x72, 0x43, 0x9, 0x18, 0xA3,
+ 0xB0, 0xB1, 0xD9, 0xB5, 0xB9, 0xA4, 0x91, 0x95,
+ 0xB9, 0xD1, 0xD, 0x25, 0x68, 0x8C, 0x43, 0x86,
+ 0xE7, 0x32, 0x87, 0x16, 0x46, 0x56, 0x26, 0xD7,
+ 0xF4, 0x46, 0x56, 0xC6, 0x36, 0x94, 0xC0, 0x31,
+ 0xA, 0x19, 0x9E, 0x8B, 0x5D, 0x99, 0xDC, 0x5C,
+ 0xDA, 0x9B, 0xDB, 0x50, 0x82, 0xC7, 0x38, 0x64,
+ 0x78, 0x2E, 0x65, 0x6E, 0x74, 0x72, 0x79, 0x50,
+ 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x43, 0x9, 0x24,
+ 0x13, 0xB1, 0xB1, 0xD9, 0xB5, 0xB9, 0xB4, 0xBD,
+ 0x91, 0xD5, 0xB1, 0x95, 0xB9, 0x98, 0xB1, 0x85,
+ 0x9D, 0xCD, 0xD, 0x45, 0x98, 0x28, 0x0, 0x0, 0x71,
+ 0x20, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x6, 0x40,
+ 0x30, 0x0, 0xD2, 0x0, 0x0, 0x0, 0x61, 0x20, 0x0,
+ 0x0, 0x6, 0x0, 0x0, 0x0, 0x13, 0x4, 0x1, 0x86,
+ 0x3, 0x1, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x7, 0x50,
+ 0x10, 0xCD, 0x14, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0 ]
+ - Name: SFI0
+ Size: 8
+ - Name: HASH
+ Size: 20
+ Hash:
+ IncludesSource: false
+ Digest: [ 0x9F, 0xD1, 0xD9, 0xE2, 0x49, 0xFB, 0x3A, 0x6C,
+ 0x8C, 0x14, 0x8A, 0x96, 0x1C, 0x7D, 0x85, 0xA9 ]
+ - Name: ISG1
+ Size: 8
+ Signature:
+ Parameters: []
+ - Name: OSG1
+ Size: 8
+ Signature:
+ Parameters: []
+ - Name: RTS0
+ Size: 24
+ RootSignature:
+ Version: 2
+ NumRootParameters: 0
+ RootParametersOffset: 24
+ NumStaticSamplers: 0
+ StaticSamplersOffset: 0
+ Parameters: []
+ - Name: PSV0
+ Size: 76
+ PSVInfo:
+ Version: 3
+ ShaderStage: 5
+ MinimumWaveLaneCount: 0
+ MaximumWaveLaneCount: 4294967295
+ UsesViewID: 0
+ SigInputVectors: 0
+ SigOutputVectors: [ 0, 0, 0, 0 ]
+ NumThreadsX: 1
+ NumThreadsY: 1
+ NumThreadsZ: 1
+ EntryName: main
+ ResourceStride: 24
+ Resources: []
+ SigInputElements: []
+ SigOutputElements: []
+ SigPatchOrPrimElements: []
+ InputOutputMap:
+ - [ ]
+ - [ ]
+ - [ ]
+ - [ ]
+...
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test b/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
new file mode 100644
index 0000000000000..74ad19bcd938a
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
@@ -0,0 +1,50 @@
+## Tests that the copied DXContainer correctly has the specified headers
+## removed
+
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-objcopy --remove-section=FKE1 --remove-section=FKE4 %t %t.out
+# RUN: obj2yaml %t.out | FileCheck %s
+
+--- !dxcontainer
+Header:
+ Hash: [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 ]
+ Version:
+ Major: 1
+ Minor: 0
+## FileSize = 1996 - 8 (FKE0 content) - 1688 (FKE4 content)
+## - 8 (2 part offsets) - 16 (2 part headers)
+## = 276
+## CHECK: FileSize: 276
+ FileSize: 1996
+## CHECK: PartCount: 5
+ PartCount: 7
+## CHECK: PartOffsets: [ 52, 68, 84, 212, 240 ]
+ PartOffsets: [ 60, 76, 92, 108, 236, 1932, 1960 ]
+Parts:
+## CHECK-NOT: FKE1
+## CHECK-NOT: FKE4
+ - Name: FKE0
+ Size: 8
+ - Name: FKE1
+ Size: 8
+ - Name: FKE2
+ Size: 8
+ - Name: FKE3
+ Size: 120
+ - Name: FKE4
+ Size: 1688
+ - Name: FKE5
+ Size: 20
+ - Name: DXIL
+ Size: 28
+ Program:
+ MajorVersion: 6
+ MinorVersion: 5
+ ShaderKind: 5
+ Size: 8
+ DXILMajorVersion: 1
+ DXILMinorVersion: 5
+ DXILSize: 4
+ DXIL: [ 0x42, 0x43, 0xC0, 0xDE, ]
+...
>From b821448e65cb00908c492d0fbd0263bf9de80686 Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienfinn at gmail.com>
Date: Wed, 13 Aug 2025 17:42:56 +0000
Subject: [PATCH 5/7] review: apply suggestions from the boilerplate pr here
---
llvm/lib/ObjCopy/ConfigManager.cpp | 2 +-
llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test | 2 +-
llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/ObjCopy/ConfigManager.cpp b/llvm/lib/ObjCopy/ConfigManager.cpp
index c598795d4c006..ad8d174ea0a0e 100644
--- a/llvm/lib/ObjCopy/ConfigManager.cpp
+++ b/llvm/lib/ObjCopy/ConfigManager.cpp
@@ -132,6 +132,6 @@ ConfigManager::getDXContainerConfig() const {
}
// If a flag is listed here, then it has support for DXContainer:
- // Common.PreserveDates, Common.ToRemove
+ // Common.PreserveDates
return DXContainer;
}
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test b/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
index 3af18d256fabc..e6daad7cb31a7 100644
--- a/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
+++ b/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
@@ -1,5 +1,5 @@
## Tests that the RTS0 (root signature) part is correctly removed from the
-## copied DXContainer
+## copied DXContainer.
# RUN: yaml2obj %s -o %t
# RUN: llvm-objcopy --remove-section=RTS0 %t %t.out
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test b/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
index 74ad19bcd938a..3619ae283dcca 100644
--- a/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
+++ b/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
@@ -1,5 +1,5 @@
## Tests that the copied DXContainer correctly has the specified headers
-## removed
+## removed.
# RUN: yaml2obj %s -o %t
# RUN: llvm-objcopy --remove-section=FKE1 --remove-section=FKE4 %t %t.out
>From 15632c83e95675a3c829de3d14844d8ded2f231e Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienfinn at gmail.com>
Date: Thu, 14 Aug 2025 16:47:09 +0000
Subject: [PATCH 6/7] review: fix up test comments
---
.../tools/llvm-objcopy/DXContainer/basic-remove.test | 6 +++---
.../llvm-objcopy/DXContainer/headers-remove.test | 12 ++++++------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test b/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
index e6daad7cb31a7..f644e035ab467 100644
--- a/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
+++ b/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
@@ -25,13 +25,13 @@ Header:
Minor: 0
## FileSize = 1984 - 24 (RTS0 content) - 4 (1 part offset) - 8 (1 part header)
## = 1948
-## CHECK: FileSize: 1948
+# CHECK: FileSize: 1948
FileSize: 1984
-## CHECK: PartCount: 6
+# CHECK: PartCount: 6
PartCount: 7
PartOffsets: [ 60, 1792, 1808, 1836, 1852, 1868, 1900 ]
Parts:
-## CHECK-NOT: RTS0
+# CHECK-NOT: RTS0
- Name: DXIL
Size: 1724
Program:
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test b/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
index 3619ae283dcca..a56c9d31ac937 100644
--- a/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
+++ b/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
@@ -12,18 +12,18 @@ Header:
Version:
Major: 1
Minor: 0
-## FileSize = 1996 - 8 (FKE0 content) - 1688 (FKE4 content)
+## FileSize = 1996 - 8 (FKE1 content) - 1688 (FKE4 content)
## - 8 (2 part offsets) - 16 (2 part headers)
## = 276
-## CHECK: FileSize: 276
+# CHECK: FileSize: 276
FileSize: 1996
-## CHECK: PartCount: 5
+# CHECK: PartCount: 5
PartCount: 7
-## CHECK: PartOffsets: [ 52, 68, 84, 212, 240 ]
+# CHECK: PartOffsets: [ 52, 68, 84, 212, 240 ]
PartOffsets: [ 60, 76, 92, 108, 236, 1932, 1960 ]
Parts:
-## CHECK-NOT: FKE1
-## CHECK-NOT: FKE4
+# CHECK-NOT: FKE1
+# CHECK-NOT: FKE4
- Name: FKE0
Size: 8
- Name: FKE1
>From 01b1e0a89147c11ec9fed20e9f125b4414605683 Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienfinn at gmail.com>
Date: Thu, 14 Aug 2025 16:47:48 +0000
Subject: [PATCH 7/7] review: rename files
---
.../DXContainer/{headers-remove.test => remove-headers.test} | 0
.../DXContainer/{basic-remove.test => remove-root-signature.test} | 0
2 files changed, 0 insertions(+), 0 deletions(-)
rename llvm/test/tools/llvm-objcopy/DXContainer/{headers-remove.test => remove-headers.test} (100%)
rename llvm/test/tools/llvm-objcopy/DXContainer/{basic-remove.test => remove-root-signature.test} (100%)
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test b/llvm/test/tools/llvm-objcopy/DXContainer/remove-headers.test
similarity index 100%
rename from llvm/test/tools/llvm-objcopy/DXContainer/headers-remove.test
rename to llvm/test/tools/llvm-objcopy/DXContainer/remove-headers.test
diff --git a/llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test b/llvm/test/tools/llvm-objcopy/DXContainer/remove-root-signature.test
similarity index 100%
rename from llvm/test/tools/llvm-objcopy/DXContainer/basic-remove.test
rename to llvm/test/tools/llvm-objcopy/DXContainer/remove-root-signature.test
More information about the llvm-branch-commits
mailing list