diff options
author | Andrew Rogers <andrurogerz@gmail.com> | 2025-06-16 11:04:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-16 11:04:56 -0700 |
commit | 492d25bbe12af7702a392fa7ad41eb9e09a48cf2 (patch) | |
tree | f289c7ff22553abdb05db1ef3eab8e3cd12d4b7c | |
parent | 695c4f2309718c441bc2e5b7dd3e3267737a12e6 (diff) | |
download | llvm-492d25bbe12af7702a392fa7ad41eb9e09a48cf2.zip llvm-492d25bbe12af7702a392fa7ad41eb9e09a48cf2.tar.gz llvm-492d25bbe12af7702a392fa7ad41eb9e09a48cf2.tar.bz2 |
[llvm] annotate interfaces in llvm/ObjectYAML for DLL export (#143763)
## Purpose
This patch is one in a series of code-mods that annotate LLVM’s public
interface for export. This patch annotates the `llvm/ObjectYAML`
library. These annotations currently have no meaningful impact on the
LLVM build; however, they are a prerequisite to support an LLVM Windows
DLL (shared library) build.
## Background
This effort is tracked in #109483. Additional context is provided in
[this
discourse](https://discourse.llvm.org/t/psa-annotating-llvm-public-interface/85307),
and documentation for `LLVM_ABI` and related annotations is found in the
LLVM repo
[here](https://github.com/llvm/llvm-project/blob/main/llvm/docs/InterfaceExportAnnotations.rst).
These were generated automatically using the [Interface Definition
Scanner (IDS)](https://github.com/compnerd/ids) tool, followed
formatting with `git clang-format`.
## Validation
Local builds and tests to validate cross-platform compatibility. This
included llvm, clang, and lldb on the following configurations:
- Windows with MSVC
- Windows with Clang
- Linux with GCC
- Linux with Clang
- Darwin with Clang
-rw-r--r-- | llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h | 12 | ||||
-rw-r--r-- | llvm/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h | 6 | ||||
-rw-r--r-- | llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h | 14 | ||||
-rw-r--r-- | llvm/include/llvm/ObjectYAML/DWARFEmitter.h | 39 | ||||
-rw-r--r-- | llvm/include/llvm/ObjectYAML/DWARFYAML.h | 64 | ||||
-rw-r--r-- | llvm/include/llvm/ObjectYAML/DXContainerYAML.h | 81 | ||||
-rw-r--r-- | llvm/include/llvm/ObjectYAML/YAML.h | 9 | ||||
-rw-r--r-- | llvm/include/llvm/ObjectYAML/yaml2obj.h | 42 |
8 files changed, 148 insertions, 119 deletions
diff --git a/llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h b/llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h index 6c71295..4e7984c 100644 --- a/llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h +++ b/llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h @@ -19,6 +19,7 @@ #include "llvm/DebugInfo/CodeView/CodeView.h" #include "llvm/DebugInfo/CodeView/DebugSubsection.h" #include "llvm/DebugInfo/CodeView/DebugSubsectionRecord.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/Error.h" #include "llvm/Support/YAMLTraits.h" #include <cstdint> @@ -108,23 +109,24 @@ struct InlineeInfo { }; struct YAMLDebugSubsection { - static Expected<YAMLDebugSubsection> + LLVM_ABI static Expected<YAMLDebugSubsection> fromCodeViewSubection(const codeview::StringsAndChecksumsRef &SC, const codeview::DebugSubsectionRecord &SS); std::shared_ptr<detail::YAMLSubsectionBase> Subsection; }; -Expected<std::vector<std::shared_ptr<codeview::DebugSubsection>>> +LLVM_ABI Expected<std::vector<std::shared_ptr<codeview::DebugSubsection>>> toCodeViewSubsectionList(BumpPtrAllocator &Allocator, ArrayRef<YAMLDebugSubsection> Subsections, const codeview::StringsAndChecksums &SC); -std::vector<YAMLDebugSubsection> +LLVM_ABI std::vector<YAMLDebugSubsection> fromDebugS(ArrayRef<uint8_t> Data, const codeview::StringsAndChecksumsRef &SC); -void initializeStringsAndChecksums(ArrayRef<YAMLDebugSubsection> Sections, - codeview::StringsAndChecksums &SC); +LLVM_ABI void +initializeStringsAndChecksums(ArrayRef<YAMLDebugSubsection> Sections, + codeview::StringsAndChecksums &SC); } // end namespace CodeViewYAML diff --git a/llvm/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h b/llvm/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h index 7c05c9e..dccc77d 100644 --- a/llvm/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h +++ b/llvm/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h @@ -16,6 +16,7 @@ #include "llvm/DebugInfo/CodeView/CodeView.h" #include "llvm/DebugInfo/CodeView/SymbolRecord.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/Error.h" #include "llvm/Support/YAMLTraits.h" #include <memory> @@ -32,11 +33,12 @@ struct SymbolRecordBase; struct SymbolRecord { std::shared_ptr<detail::SymbolRecordBase> Symbol; - codeview::CVSymbol + LLVM_ABI codeview::CVSymbol toCodeViewSymbol(BumpPtrAllocator &Allocator, codeview::CodeViewContainer Container) const; - static Expected<SymbolRecord> fromCodeViewSymbol(codeview::CVSymbol Symbol); + LLVM_ABI static Expected<SymbolRecord> + fromCodeViewSymbol(codeview::CVSymbol Symbol); }; } // end namespace CodeViewYAML diff --git a/llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h b/llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h index 04b5e0b..3c239ce 100644 --- a/llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h +++ b/llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h @@ -17,6 +17,7 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" #include "llvm/Support/Allocator.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/Error.h" #include "llvm/Support/YAMLTraits.h" #include <cstdint> @@ -45,15 +46,16 @@ struct MemberRecord { struct LeafRecord { std::shared_ptr<detail::LeafRecordBase> Leaf; - codeview::CVType + LLVM_ABI codeview::CVType toCodeViewRecord(codeview::AppendingTypeTableBuilder &Serializer) const; - static Expected<LeafRecord> fromCodeViewRecord(codeview::CVType Type); + LLVM_ABI static Expected<LeafRecord> + fromCodeViewRecord(codeview::CVType Type); }; -std::vector<LeafRecord> fromDebugT(ArrayRef<uint8_t> DebugTorP, - StringRef SectionName); -ArrayRef<uint8_t> toDebugT(ArrayRef<LeafRecord>, BumpPtrAllocator &Alloc, - StringRef SectionName); +LLVM_ABI std::vector<LeafRecord> fromDebugT(ArrayRef<uint8_t> DebugTorP, + StringRef SectionName); +LLVM_ABI ArrayRef<uint8_t> +toDebugT(ArrayRef<LeafRecord>, BumpPtrAllocator &Alloc, StringRef SectionName); } // end namespace CodeViewYAML diff --git a/llvm/include/llvm/ObjectYAML/DWARFEmitter.h b/llvm/include/llvm/ObjectYAML/DWARFEmitter.h index 5e1b88f..050ff60 100644 --- a/llvm/include/llvm/ObjectYAML/DWARFEmitter.h +++ b/llvm/include/llvm/ObjectYAML/DWARFEmitter.h @@ -14,6 +14,7 @@ #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/Error.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/TargetParser/Host.h" @@ -27,26 +28,26 @@ namespace DWARFYAML { struct Data; -Error emitDebugAbbrev(raw_ostream &OS, const Data &DI); -Error emitDebugStr(raw_ostream &OS, const Data &DI); - -Error emitDebugAranges(raw_ostream &OS, const Data &DI); -Error emitDebugRanges(raw_ostream &OS, const Data &DI); -Error emitDebugPubnames(raw_ostream &OS, const Data &DI); -Error emitDebugPubtypes(raw_ostream &OS, const Data &DI); -Error emitDebugGNUPubnames(raw_ostream &OS, const Data &DI); -Error emitDebugGNUPubtypes(raw_ostream &OS, const Data &DI); -Error emitDebugInfo(raw_ostream &OS, const Data &DI); -Error emitDebugLine(raw_ostream &OS, const Data &DI); -Error emitDebugAddr(raw_ostream &OS, const Data &DI); -Error emitDebugStrOffsets(raw_ostream &OS, const Data &DI); -Error emitDebugRnglists(raw_ostream &OS, const Data &DI); -Error emitDebugLoclists(raw_ostream &OS, const Data &DI); -Error emitDebugNames(raw_ostream &OS, const Data &DI); - -std::function<Error(raw_ostream &, const Data &)> +LLVM_ABI Error emitDebugAbbrev(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugStr(raw_ostream &OS, const Data &DI); + +LLVM_ABI Error emitDebugAranges(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugRanges(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugPubnames(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugPubtypes(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugGNUPubnames(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugGNUPubtypes(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugInfo(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugLine(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugAddr(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugStrOffsets(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugRnglists(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugLoclists(raw_ostream &OS, const Data &DI); +LLVM_ABI Error emitDebugNames(raw_ostream &OS, const Data &DI); + +LLVM_ABI std::function<Error(raw_ostream &, const Data &)> getDWARFEmitterByName(StringRef SecName); -Expected<StringMap<std::unique_ptr<MemoryBuffer>>> +LLVM_ABI Expected<StringMap<std::unique_ptr<MemoryBuffer>>> emitDebugSections(StringRef YAMLString, bool IsLittleEndian = sys::IsLittleEndianHost, bool Is64BitAddrSize = true); diff --git a/llvm/include/llvm/ObjectYAML/DWARFYAML.h b/llvm/include/llvm/ObjectYAML/DWARFYAML.h index 69f8c4f..c852868 100644 --- a/llvm/include/llvm/ObjectYAML/DWARFYAML.h +++ b/llvm/include/llvm/ObjectYAML/DWARFYAML.h @@ -19,6 +19,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/BinaryFormat/Dwarf.h" #include "llvm/ObjectYAML/YAML.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/YAMLTraits.h" #include <cstdint> #include <optional> @@ -255,16 +256,16 @@ struct Data { std::optional<std::vector<ListTable<LoclistEntry>>> DebugLoclists; std::optional<DebugNamesSection> DebugNames; - bool isEmpty() const; + LLVM_ABI bool isEmpty() const; - SetVector<StringRef> getNonEmptySectionNames() const; + LLVM_ABI SetVector<StringRef> getNonEmptySectionNames() const; struct AbbrevTableInfo { uint64_t Index; uint64_t Offset; }; - Expected<AbbrevTableInfo> getAbbrevTableInfoByID(uint64_t ID) const; - StringRef getAbbrevTableContentByIndex(uint64_t Index) const; + LLVM_ABI Expected<AbbrevTableInfo> getAbbrevTableInfoByID(uint64_t ID) const; + LLVM_ABI StringRef getAbbrevTableContentByIndex(uint64_t Index) const; private: mutable std::unordered_map<uint64_t, AbbrevTableInfo> AbbrevTableInfoMap; @@ -310,88 +311,90 @@ namespace llvm { namespace yaml { template <> struct MappingTraits<DWARFYAML::Data> { - static void mapping(IO &IO, DWARFYAML::Data &DWARF); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::Data &DWARF); }; template <> struct MappingTraits<DWARFYAML::AbbrevTable> { - static void mapping(IO &IO, DWARFYAML::AbbrevTable &AbbrevTable); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::AbbrevTable &AbbrevTable); }; template <> struct MappingTraits<DWARFYAML::Abbrev> { - static void mapping(IO &IO, DWARFYAML::Abbrev &Abbrev); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::Abbrev &Abbrev); }; template <> struct MappingTraits<DWARFYAML::AttributeAbbrev> { - static void mapping(IO &IO, DWARFYAML::AttributeAbbrev &AttAbbrev); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::AttributeAbbrev &AttAbbrev); }; template <> struct MappingTraits<DWARFYAML::ARangeDescriptor> { - static void mapping(IO &IO, DWARFYAML::ARangeDescriptor &Descriptor); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::ARangeDescriptor &Descriptor); }; template <> struct MappingTraits<DWARFYAML::ARange> { - static void mapping(IO &IO, DWARFYAML::ARange &ARange); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::ARange &ARange); }; template <> struct MappingTraits<DWARFYAML::RangeEntry> { - static void mapping(IO &IO, DWARFYAML::RangeEntry &Entry); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::RangeEntry &Entry); }; template <> struct MappingTraits<DWARFYAML::Ranges> { - static void mapping(IO &IO, DWARFYAML::Ranges &Ranges); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::Ranges &Ranges); }; template <> struct MappingTraits<DWARFYAML::PubEntry> { - static void mapping(IO &IO, DWARFYAML::PubEntry &Entry); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::PubEntry &Entry); }; template <> struct MappingTraits<DWARFYAML::PubSection> { - static void mapping(IO &IO, DWARFYAML::PubSection &Section); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::PubSection &Section); }; template <> struct MappingTraits<DWARFYAML::Unit> { - static void mapping(IO &IO, DWARFYAML::Unit &Unit); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::Unit &Unit); }; template <> struct MappingTraits<DWARFYAML::DebugNamesSection> { - static void mapping(IO &IO, DWARFYAML::DebugNamesSection &); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::DebugNamesSection &); }; template <> struct MappingTraits<DWARFYAML::DebugNameEntry> { - static void mapping(IO &IO, DWARFYAML::DebugNameEntry &); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::DebugNameEntry &); }; template <> struct MappingTraits<DWARFYAML::DebugNameAbbreviation> { - static void mapping(IO &IO, DWARFYAML::DebugNameAbbreviation &); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::DebugNameAbbreviation &); }; template <> struct MappingTraits<DWARFYAML::IdxForm> { - static void mapping(IO &IO, DWARFYAML::IdxForm &); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::IdxForm &); }; template <> struct MappingTraits<DWARFYAML::Entry> { - static void mapping(IO &IO, DWARFYAML::Entry &Entry); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::Entry &Entry); }; template <> struct MappingTraits<DWARFYAML::FormValue> { - static void mapping(IO &IO, DWARFYAML::FormValue &FormValue); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::FormValue &FormValue); }; template <> struct MappingTraits<DWARFYAML::File> { - static void mapping(IO &IO, DWARFYAML::File &File); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::File &File); }; template <> struct MappingTraits<DWARFYAML::LineTableOpcode> { - static void mapping(IO &IO, DWARFYAML::LineTableOpcode &LineTableOpcode); + LLVM_ABI static void mapping(IO &IO, + DWARFYAML::LineTableOpcode &LineTableOpcode); }; template <> struct MappingTraits<DWARFYAML::LineTable> { - static void mapping(IO &IO, DWARFYAML::LineTable &LineTable); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::LineTable &LineTable); }; template <> struct MappingTraits<DWARFYAML::SegAddrPair> { - static void mapping(IO &IO, DWARFYAML::SegAddrPair &SegAddrPair); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::SegAddrPair &SegAddrPair); }; template <> struct MappingTraits<DWARFYAML::DWARFOperation> { - static void mapping(IO &IO, DWARFYAML::DWARFOperation &DWARFOperation); + LLVM_ABI static void mapping(IO &IO, + DWARFYAML::DWARFOperation &DWARFOperation); }; template <typename EntryType> @@ -407,19 +410,20 @@ struct MappingTraits<DWARFYAML::ListEntries<EntryType>> { }; template <> struct MappingTraits<DWARFYAML::RnglistEntry> { - static void mapping(IO &IO, DWARFYAML::RnglistEntry &RnglistEntry); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::RnglistEntry &RnglistEntry); }; template <> struct MappingTraits<DWARFYAML::LoclistEntry> { - static void mapping(IO &IO, DWARFYAML::LoclistEntry &LoclistEntry); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::LoclistEntry &LoclistEntry); }; template <> struct MappingTraits<DWARFYAML::AddrTableEntry> { - static void mapping(IO &IO, DWARFYAML::AddrTableEntry &AddrTable); + LLVM_ABI static void mapping(IO &IO, DWARFYAML::AddrTableEntry &AddrTable); }; template <> struct MappingTraits<DWARFYAML::StringOffsetsTable> { - static void mapping(IO &IO, DWARFYAML::StringOffsetsTable &StrOffsetsTable); + LLVM_ABI static void mapping(IO &IO, + DWARFYAML::StringOffsetsTable &StrOffsetsTable); }; template <> struct ScalarEnumerationTraits<dwarf::DwarfFormat> { diff --git a/llvm/include/llvm/ObjectYAML/DXContainerYAML.h b/llvm/include/llvm/ObjectYAML/DXContainerYAML.h index 8a0dfd8..c235112 100644 --- a/llvm/include/llvm/ObjectYAML/DXContainerYAML.h +++ b/llvm/include/llvm/ObjectYAML/DXContainerYAML.h @@ -19,6 +19,7 @@ #include "llvm/BinaryFormat/DXContainer.h" #include "llvm/Object/DXContainer.h" #include "llvm/ObjectYAML/YAML.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/YAMLTraits.h" #include <array> #include <optional> @@ -59,14 +60,14 @@ struct DXILProgram { #define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) bool Val = false; struct ShaderFeatureFlags { ShaderFeatureFlags() = default; - ShaderFeatureFlags(uint64_t FlagData); - uint64_t getEncodedFlags(); + LLVM_ABI ShaderFeatureFlags(uint64_t FlagData); + LLVM_ABI uint64_t getEncodedFlags(); #include "llvm/BinaryFormat/DXContainerConstants.def" }; struct ShaderHash { ShaderHash() = default; - ShaderHash(const dxbc::ShaderHash &Data); + LLVM_ABI ShaderHash(const dxbc::ShaderHash &Data); bool IncludesSource; std::vector<llvm::yaml::Hex8> Digest; @@ -84,7 +85,7 @@ struct RootDescriptorYaml { uint32_t ShaderRegister; uint32_t RegisterSpace; - uint32_t getEncodedFlags() const; + LLVM_ABI uint32_t getEncodedFlags() const; #define ROOT_DESCRIPTOR_FLAG(Num, Val) bool Val = false; #include "llvm/BinaryFormat/DXContainerConstants.def" @@ -97,7 +98,7 @@ struct DescriptorRangeYaml { uint32_t RegisterSpace; uint32_t OffsetInDescriptorsFromTableStart; - uint32_t getEncodedFlags() const; + LLVM_ABI uint32_t getEncodedFlags() const; #define DESCRIPTOR_RANGE_FLAG(Num, Val) bool Val = false; #include "llvm/BinaryFormat/DXContainerConstants.def" @@ -193,13 +194,13 @@ struct RootSignatureYamlDesc { RootParameterYamlDesc Parameters; SmallVector<StaticSamplerYamlDesc> StaticSamplers; - uint32_t getEncodedFlags(); + LLVM_ABI uint32_t getEncodedFlags(); iterator_range<StaticSamplerYamlDesc *> samplers() { return make_range(StaticSamplers.begin(), StaticSamplers.end()); } - static llvm::Expected<DXContainerYAML::RootSignatureYamlDesc> + LLVM_ABI static llvm::Expected<DXContainerYAML::RootSignatureYamlDesc> create(const object::DirectX::RootSignature &Data); #define ROOT_ELEMENT_FLAG(Num, Val) bool Val = false; @@ -258,13 +259,13 @@ struct PSVInfo { StringRef EntryName; - void mapInfoForVersion(yaml::IO &IO); + LLVM_ABI void mapInfoForVersion(yaml::IO &IO); - PSVInfo(); - PSVInfo(const dxbc::PSV::v0::RuntimeInfo *P, uint16_t Stage); - PSVInfo(const dxbc::PSV::v1::RuntimeInfo *P); - PSVInfo(const dxbc::PSV::v2::RuntimeInfo *P); - PSVInfo(const dxbc::PSV::v3::RuntimeInfo *P, StringRef StringTable); + LLVM_ABI PSVInfo(); + LLVM_ABI PSVInfo(const dxbc::PSV::v0::RuntimeInfo *P, uint16_t Stage); + LLVM_ABI PSVInfo(const dxbc::PSV::v1::RuntimeInfo *P); + LLVM_ABI PSVInfo(const dxbc::PSV::v2::RuntimeInfo *P); + LLVM_ABI PSVInfo(const dxbc::PSV::v3::RuntimeInfo *P, StringRef StringTable); }; struct SignatureParameter { @@ -328,88 +329,96 @@ class raw_ostream; namespace yaml { template <> struct MappingTraits<DXContainerYAML::VersionTuple> { - static void mapping(IO &IO, DXContainerYAML::VersionTuple &Version); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::VersionTuple &Version); }; template <> struct MappingTraits<DXContainerYAML::FileHeader> { - static void mapping(IO &IO, DXContainerYAML::FileHeader &Header); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::FileHeader &Header); }; template <> struct MappingTraits<DXContainerYAML::DXILProgram> { - static void mapping(IO &IO, DXContainerYAML::DXILProgram &Program); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::DXILProgram &Program); }; template <> struct MappingTraits<DXContainerYAML::ShaderFeatureFlags> { - static void mapping(IO &IO, DXContainerYAML::ShaderFeatureFlags &Flags); + LLVM_ABI static void mapping(IO &IO, + DXContainerYAML::ShaderFeatureFlags &Flags); }; template <> struct MappingTraits<DXContainerYAML::ShaderHash> { - static void mapping(IO &IO, DXContainerYAML::ShaderHash &Hash); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::ShaderHash &Hash); }; template <> struct MappingTraits<DXContainerYAML::PSVInfo> { - static void mapping(IO &IO, DXContainerYAML::PSVInfo &PSV); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::PSVInfo &PSV); }; template <> struct MappingTraits<DXContainerYAML::Part> { - static void mapping(IO &IO, DXContainerYAML::Part &Version); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::Part &Version); }; template <> struct MappingTraits<DXContainerYAML::Object> { - static void mapping(IO &IO, DXContainerYAML::Object &Obj); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::Object &Obj); }; template <> struct MappingTraits<DXContainerYAML::ResourceFlags> { - static void mapping(IO &IO, DXContainerYAML::ResourceFlags &Flags); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::ResourceFlags &Flags); }; template <> struct MappingTraits<DXContainerYAML::ResourceBindInfo> { - static void mapping(IO &IO, DXContainerYAML::ResourceBindInfo &Res); + LLVM_ABI static void mapping(IO &IO, DXContainerYAML::ResourceBindInfo &Res); }; template <> struct MappingTraits<DXContainerYAML::SignatureElement> { - static void mapping(IO &IO, llvm::DXContainerYAML::SignatureElement &El); + LLVM_ABI static void mapping(IO &IO, + llvm::DXContainerYAML::SignatureElement &El); }; template <> struct MappingTraits<DXContainerYAML::SignatureParameter> { - static void mapping(IO &IO, llvm::DXContainerYAML::SignatureParameter &El); + LLVM_ABI static void mapping(IO &IO, + llvm::DXContainerYAML::SignatureParameter &El); }; template <> struct MappingTraits<DXContainerYAML::Signature> { - static void mapping(IO &IO, llvm::DXContainerYAML::Signature &El); + LLVM_ABI static void mapping(IO &IO, llvm::DXContainerYAML::Signature &El); }; template <> struct MappingTraits<DXContainerYAML::RootSignatureYamlDesc> { - static void mapping(IO &IO, - DXContainerYAML::RootSignatureYamlDesc &RootSignature); + LLVM_ABI static void + mapping(IO &IO, DXContainerYAML::RootSignatureYamlDesc &RootSignature); }; template <> struct MappingContextTraits<DXContainerYAML::RootParameterLocationYaml, DXContainerYAML::RootSignatureYamlDesc> { - static void mapping(IO &IO, - llvm::DXContainerYAML::RootParameterLocationYaml &L, - DXContainerYAML::RootSignatureYamlDesc &S); + LLVM_ABI static void + mapping(IO &IO, llvm::DXContainerYAML::RootParameterLocationYaml &L, + DXContainerYAML::RootSignatureYamlDesc &S); }; template <> struct MappingTraits<llvm::DXContainerYAML::RootConstantsYaml> { - static void mapping(IO &IO, llvm::DXContainerYAML::RootConstantsYaml &C); + LLVM_ABI static void mapping(IO &IO, + llvm::DXContainerYAML::RootConstantsYaml &C); }; template <> struct MappingTraits<llvm::DXContainerYAML::RootDescriptorYaml> { - static void mapping(IO &IO, llvm::DXContainerYAML::RootDescriptorYaml &D); + LLVM_ABI static void mapping(IO &IO, + llvm::DXContainerYAML::RootDescriptorYaml &D); }; template <> struct MappingTraits<llvm::DXContainerYAML::DescriptorTableYaml> { - static void mapping(IO &IO, llvm::DXContainerYAML::DescriptorTableYaml &D); + LLVM_ABI static void mapping(IO &IO, + llvm::DXContainerYAML::DescriptorTableYaml &D); }; template <> struct MappingTraits<llvm::DXContainerYAML::DescriptorRangeYaml> { - static void mapping(IO &IO, llvm::DXContainerYAML::DescriptorRangeYaml &D); + LLVM_ABI static void mapping(IO &IO, + llvm::DXContainerYAML::DescriptorRangeYaml &D); }; template <> struct MappingTraits<llvm::DXContainerYAML::StaticSamplerYamlDesc> { - static void mapping(IO &IO, llvm::DXContainerYAML::StaticSamplerYamlDesc &S); + LLVM_ABI static void mapping(IO &IO, + llvm::DXContainerYAML::StaticSamplerYamlDesc &S); }; } // namespace yaml diff --git a/llvm/include/llvm/ObjectYAML/YAML.h b/llvm/include/llvm/ObjectYAML/YAML.h index 3bf6527..709520c 100644 --- a/llvm/include/llvm/ObjectYAML/YAML.h +++ b/llvm/include/llvm/ObjectYAML/YAML.h @@ -11,6 +11,7 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/YAMLTraits.h" #include <cstdint> @@ -86,13 +87,13 @@ public: /// Write the contents (regardless of whether it is binary or a /// hex string) as binary to the given raw_ostream. /// N can be used to specify the maximum number of bytes. - void writeAsBinary(raw_ostream &OS, uint64_t N = UINT64_MAX) const; + LLVM_ABI void writeAsBinary(raw_ostream &OS, uint64_t N = UINT64_MAX) const; /// Write the contents (regardless of whether it is binary or a /// hex string) as hex to the given raw_ostream. /// /// For example, a possible output could be `DEADBEEFCAFEBABE`. - void writeAsHex(raw_ostream &OS) const; + LLVM_ABI void writeAsHex(raw_ostream &OS) const; }; inline bool operator==(const BinaryRef &LHS, const BinaryRef &RHS) { @@ -104,8 +105,8 @@ inline bool operator==(const BinaryRef &LHS, const BinaryRef &RHS) { } template <> struct ScalarTraits<BinaryRef> { - static void output(const BinaryRef &, void *, raw_ostream &); - static StringRef input(StringRef, void *, BinaryRef &); + LLVM_ABI static void output(const BinaryRef &, void *, raw_ostream &); + LLVM_ABI static StringRef input(StringRef, void *, BinaryRef &); static QuotingType mustQuote(StringRef S) { return needsQuotes(S); } }; diff --git a/llvm/include/llvm/ObjectYAML/yaml2obj.h b/llvm/include/llvm/ObjectYAML/yaml2obj.h index 3b458c3..4c9084b 100644 --- a/llvm/include/llvm/ObjectYAML/yaml2obj.h +++ b/llvm/include/llvm/ObjectYAML/yaml2obj.h @@ -12,6 +12,7 @@ #define LLVM_OBJECTYAML_YAML2OBJ_H #include "llvm/ADT/STLExtras.h" +#include "llvm/Support/Compiler.h" #include <memory> namespace llvm { @@ -66,25 +67,32 @@ struct YamlObjectFile; using ErrorHandler = llvm::function_ref<void(const Twine &Msg)>; -bool yaml2archive(ArchYAML::Archive &Doc, raw_ostream &Out, ErrorHandler EH); -bool yaml2coff(COFFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); -bool yaml2goff(GOFFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); -bool yaml2elf(ELFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH, - uint64_t MaxSize); -bool yaml2macho(YamlObjectFile &Doc, raw_ostream &Out, ErrorHandler EH); -bool yaml2minidump(MinidumpYAML::Object &Doc, raw_ostream &Out, - ErrorHandler EH); -bool yaml2offload(OffloadYAML::Binary &Doc, raw_ostream &Out, ErrorHandler EH); -bool yaml2wasm(WasmYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); -bool yaml2xcoff(XCOFFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); -bool yaml2dxcontainer(DXContainerYAML::Object &Doc, raw_ostream &Out, - ErrorHandler EH); - -bool convertYAML(Input &YIn, raw_ostream &Out, ErrorHandler ErrHandler, - unsigned DocNum = 1, uint64_t MaxSize = UINT64_MAX); +LLVM_ABI bool yaml2archive(ArchYAML::Archive &Doc, raw_ostream &Out, + ErrorHandler EH); +LLVM_ABI bool yaml2coff(COFFYAML::Object &Doc, raw_ostream &Out, + ErrorHandler EH); +LLVM_ABI bool yaml2goff(GOFFYAML::Object &Doc, raw_ostream &Out, + ErrorHandler EH); +LLVM_ABI bool yaml2elf(ELFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH, + uint64_t MaxSize); +LLVM_ABI bool yaml2macho(YamlObjectFile &Doc, raw_ostream &Out, + ErrorHandler EH); +LLVM_ABI bool yaml2minidump(MinidumpYAML::Object &Doc, raw_ostream &Out, + ErrorHandler EH); +LLVM_ABI bool yaml2offload(OffloadYAML::Binary &Doc, raw_ostream &Out, + ErrorHandler EH); +LLVM_ABI bool yaml2wasm(WasmYAML::Object &Doc, raw_ostream &Out, + ErrorHandler EH); +LLVM_ABI bool yaml2xcoff(XCOFFYAML::Object &Doc, raw_ostream &Out, + ErrorHandler EH); +LLVM_ABI bool yaml2dxcontainer(DXContainerYAML::Object &Doc, raw_ostream &Out, + ErrorHandler EH); + +LLVM_ABI bool convertYAML(Input &YIn, raw_ostream &Out, ErrorHandler ErrHandler, + unsigned DocNum = 1, uint64_t MaxSize = UINT64_MAX); /// Convenience function for tests. -std::unique_ptr<object::ObjectFile> +LLVM_ABI std::unique_ptr<object::ObjectFile> yaml2ObjectFile(SmallVectorImpl<char> &Storage, StringRef Yaml, ErrorHandler ErrHandler); |