Skip to content

Commit f8fea5d

Browse files
authored
[llvm] Add explicit visibility macros to YAMLTraits classes (#111484)
These symbols need to be exported for llvm-pdbutil when using windows shared library builds. Exclude the YAML traits declared in llvm-pdbutil so there not declared as dllimported which will causing missing symbol errors for windows shared library builds. This is part of the work to enable LLVM_BUILD_LLVM_DYLIB and plugins on window.
1 parent 95eeae1 commit f8fea5d

File tree

2 files changed

+23
-14
lines changed

2 files changed

+23
-14
lines changed

llvm/include/llvm/Support/YAMLTraits.h

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2079,6 +2079,15 @@ template <typename T> struct StdMapStringCustomMappingTraitsImpl {
20792079
LLVM_YAML_IS_SEQUENCE_VECTOR_IMPL(type, true)
20802080

20812081
#define LLVM_YAML_DECLARE_MAPPING_TRAITS(Type) \
2082+
namespace llvm { \
2083+
namespace yaml { \
2084+
template <> struct LLVM_ABI MappingTraits<Type> { \
2085+
static void mapping(IO &IO, Type &Obj); \
2086+
}; \
2087+
} \
2088+
}
2089+
2090+
#define LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(Type) \
20822091
namespace llvm { \
20832092
namespace yaml { \
20842093
template <> struct MappingTraits<Type> { \
@@ -2090,7 +2099,7 @@ template <typename T> struct StdMapStringCustomMappingTraitsImpl {
20902099
#define LLVM_YAML_DECLARE_ENUM_TRAITS(Type) \
20912100
namespace llvm { \
20922101
namespace yaml { \
2093-
template <> struct ScalarEnumerationTraits<Type> { \
2102+
template <> struct LLVM_ABI ScalarEnumerationTraits<Type> { \
20942103
static void enumeration(IO &io, Type &Value); \
20952104
}; \
20962105
} \
@@ -2099,7 +2108,7 @@ template <typename T> struct StdMapStringCustomMappingTraitsImpl {
20992108
#define LLVM_YAML_DECLARE_BITSET_TRAITS(Type) \
21002109
namespace llvm { \
21012110
namespace yaml { \
2102-
template <> struct ScalarBitSetTraits<Type> { \
2111+
template <> struct LLVM_ABI ScalarBitSetTraits<Type> { \
21032112
static void bitset(IO &IO, Type &Options); \
21042113
}; \
21052114
} \
@@ -2108,7 +2117,7 @@ template <typename T> struct StdMapStringCustomMappingTraitsImpl {
21082117
#define LLVM_YAML_DECLARE_SCALAR_TRAITS(Type, MustQuote) \
21092118
namespace llvm { \
21102119
namespace yaml { \
2111-
template <> struct ScalarTraits<Type> { \
2120+
template <> struct LLVM_ABI ScalarTraits<Type> { \
21122121
static void output(const Type &Value, void *ctx, raw_ostream &Out); \
21132122
static StringRef input(StringRef Scalar, void *ctxt, Type &Value); \
21142123
static QuotingType mustQuote(StringRef) { return MustQuote; } \

llvm/tools/llvm-pdbutil/PdbYaml.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,16 @@ struct PdbObject {
111111
}
112112
}
113113

114-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbObject)
115-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::MSFHeaders)
116-
LLVM_YAML_DECLARE_MAPPING_TRAITS(msf::SuperBlock)
117-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::StreamBlockList)
118-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbInfoStream)
119-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbDbiStream)
120-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbTpiStream)
121-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbPublicsStream)
122-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::NamedStreamMapping)
123-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbModiStream)
124-
LLVM_YAML_DECLARE_MAPPING_TRAITS(pdb::yaml::PdbDbiModuleInfo)
114+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::PdbObject)
115+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::MSFHeaders)
116+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(msf::SuperBlock)
117+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::StreamBlockList)
118+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::PdbInfoStream)
119+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::PdbDbiStream)
120+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::PdbTpiStream)
121+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::PdbPublicsStream)
122+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::NamedStreamMapping)
123+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::PdbModiStream)
124+
LLVM_YAML_DECLARE_MAPPING_TRAITS_PRIVATE(pdb::yaml::PdbDbiModuleInfo)
125125

126126
#endif // LLVM_TOOLS_LLVMPDBDUMP_PDBYAML_H

0 commit comments

Comments
 (0)