[llvm] 492d25b - [llvm] annotate interfaces in llvm/ObjectYAML for DLL export (#143763)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 16 11:04:59 PDT 2025
Author: Andrew Rogers
Date: 2025-06-16T11:04:56-07:00
New Revision: 492d25bbe12af7702a392fa7ad41eb9e09a48cf2
URL: https://github.com/llvm/llvm-project/commit/492d25bbe12af7702a392fa7ad41eb9e09a48cf2
DIFF: https://github.com/llvm/llvm-project/commit/492d25bbe12af7702a392fa7ad41eb9e09a48cf2.diff
LOG: [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
Added:
Modified:
llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h
llvm/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h
llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
llvm/include/llvm/ObjectYAML/DWARFEmitter.h
llvm/include/llvm/ObjectYAML/DWARFYAML.h
llvm/include/llvm/ObjectYAML/DXContainerYAML.h
llvm/include/llvm/ObjectYAML/YAML.h
llvm/include/llvm/ObjectYAML/yaml2obj.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h b/llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h
index 6c712956dfb5d..4e7984c54a72a 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 7c05c9eea05ed..dccc77dc1a0c5 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 04b5e0ba3aa1a..3c239ce507dfc 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 5e1b88f4fef64..050ff60bcd408 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 69f8c4f27d7a3..c8528686592ab 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 8a0dfd8718796..c235112dacf7c 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 3bf6527a7e2da..709520c934d7d 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 @@ class BinaryRef {
/// 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 3b458c3cd890b..4c9084b790507 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);
More information about the llvm-commits
mailing list