Skip to content

Commit 981b9f7

Browse files
committed
[llvm] annotate ABIBreakingChecks symobls for DLL export
1 parent 543f948 commit 981b9f7

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

llvm/include/llvm/Config/abi-breaking.h.cmake

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,36 @@
1212
#ifndef LLVM_ABI_BREAKING_CHECKS_H
1313
#define LLVM_ABI_BREAKING_CHECKS_H
1414

15+
// llvm-config.h is required for LLVM_ENABLE_LLVM_EXPORT_ANNOTATIONS
16+
#include "llvm/Config/llvm-config.h"
17+
1518
/* Define to enable checks that alter the LLVM C++ ABI */
1619
#cmakedefine01 LLVM_ENABLE_ABI_BREAKING_CHECKS
1720

1821
/* Define to enable reverse iteration of unordered llvm containers */
1922
#cmakedefine01 LLVM_ENABLE_REVERSE_ITERATION
2023

24+
// Properly annotate EnableABIBreakingChecks or DisableABIBreakingChecks for
25+
// export from shared library.
26+
#if !defined(LLVM_ABI_GENERATING_ANNOTATIONS)
27+
// TODO(https://github.com/llvm/llvm-project/issues/145406): eliminate need for
28+
// two preprocessor definitions to gate LLVM_ABI macro definitions.
29+
#if defined(LLVM_ENABLE_LLVM_EXPORT_ANNOTATIONS) && !defined(LLVM_BUILD_STATIC)
30+
#if defined(_WIN32) && !defined(__MINGW32__)
31+
#if defined(LLVM_EXPORTS)
32+
#define ABI_BREAKING_EXPORT_ABI __declspec(dllexport)
33+
#else
34+
#define ABI_BREAKING_EXPORT_ABI __declspec(dllimport)
35+
#endif
36+
#elif defined(__has_attribute) && __has_attribute(visibility)
37+
#define ABI_BREAKING_EXPORT_ABI __attribute__((visibility("default")))
38+
#endif
39+
#endif
40+
#if !defined(ABI_BREAKING_EXPORT_ABI)
41+
#define ABI_BREAKING_EXPORT_ABI
42+
#endif
43+
#endif
44+
2145
/* Allow selectively disabling link-time mismatch checking so that header-only
2246
ADT content from LLVM can be used without linking libSupport. */
2347
#if !defined(LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING) || !LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING
@@ -43,12 +67,12 @@
4367
#endif
4468
namespace llvm {
4569
#if LLVM_ENABLE_ABI_BREAKING_CHECKS
46-
extern int EnableABIBreakingChecks;
70+
ABI_BREAKING_EXPORT_ABI extern int EnableABIBreakingChecks;
4771
LLVM_HIDDEN_VISIBILITY
4872
__attribute__((weak)) int *VerifyEnableABIBreakingChecks =
4973
&EnableABIBreakingChecks;
5074
#else
51-
extern int DisableABIBreakingChecks;
75+
ABI_BREAKING_EXPORT_ABI extern int DisableABIBreakingChecks;
5276
LLVM_HIDDEN_VISIBILITY
5377
__attribute__((weak)) int *VerifyDisableABIBreakingChecks =
5478
&DisableABIBreakingChecks;

0 commit comments

Comments
 (0)