This pr implements the boiler plate required to use `llvm-objcopy` for `DXContainer` object files. It defines a minimal structure `object` to represent the `DXContainer` header and the following parts. This structure is a simple representation of the object data to allow for simple modifications at the granularity of each part. It follows similarily to how the respective `object`s are defined for `ELF`, `wasm`, `XCOFF`, etc. This is the first step to implement https://github.com/llvm/llvm-project/issues/150275 and https://github.com/llvm/llvm-project/issues/150277 as compiler actions that invoke `llvm-objcopy` for functionality.
43 lines
1.1 KiB
Plaintext
43 lines
1.1 KiB
Plaintext
## Tests that the copied DXContainer is identical to the original, ensuring all
|
|
## the different headers are correctly handled.
|
|
|
|
# RUN: yaml2obj %s -o %t
|
|
# RUN: llvm-objcopy %t %t.out
|
|
# RUN: cmp %t %t.out
|
|
|
|
--- !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
|
|
PartCount: 7
|
|
PartOffsets: [ 60, 76, 92, 108, 236, 1932, 1960 ]
|
|
Parts:
|
|
- 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, ]
|
|
...
|