================ @@ -7,53 +7,109 @@ //===----------------------------------------------------------------------===// #include "llvm/MC/DXContainerRootSignature.h" -#include "llvm/Support/EndianStream.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/Twine.h" +#include "llvm/Support/BinaryStreamWriter.h" +#include <cstdint> +#include <sys/types.h> using namespace llvm; using namespace llvm::mcdxbc; -void RootSignatureDesc::write(raw_ostream &OS) const { - // Root signature header in dxcontainer has 6 uint_32t values. - const uint32_t HeaderSize = 24; - const uint32_t ParameterByteSize = Parameters.size_in_bytes(); - const uint32_t NumParametes = Parameters.size(); +Error setRewrite(BinaryStreamWriter &Stream, uint32_t &Offset) { + const uint32_t DummyValue = std::numeric_limits<uint32_t>::max(); + + Offset = Stream.getOffset(); + + if (Error Err = Stream.writeInteger(DummyValue)) + return Err; + + return Error::success(); +} + +Error rewriteOffset(BinaryStreamWriter &Stream, uint32_t Offset) { + uint64_t Value = Stream.getOffset(); + Stream.setOffset(Offset); + if (Error Err = Stream.writeInteger((uint32_t)Value)) + return Err; + + Stream.setOffset(Value); + + return Error::success(); +} + +Error RootSignatureDesc::write(raw_ostream &OS) const { + std::vector<uint8_t> Buffer(getSizeInBytes()); + BinaryStreamWriter Writer(Buffer, llvm::endianness::little); ---------------- damyanp wrote:
Try buffer_ostream. https://github.com/llvm/llvm-project/pull/128577 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits