Skip to content

Commit caf4427

Browse files
committed
[JITLink][AArch32] Add explicit visibility macros to functions needed by unittests
Without these there will be missing symbol errors when building JITLinkTests for windows shared library builds with explicit symbol visibility macros are enabled. This is part of the work to enable LLVM_BUILD_LLVM_DYLIB and LLVM plugins on window.
1 parent 617278e commit caf4427

File tree

3 files changed

+32
-29
lines changed

3 files changed

+32
-29
lines changed

llvm/lib/ExecutionEngine/JITLink/ELF_aarch32.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "llvm/ExecutionEngine/JITLink/aarch32.h"
1818
#include "llvm/Object/ELF.h"
1919
#include "llvm/Object/ELFObjectFile.h"
20+
#include "llvm/Support/Compiler.h"
2021
#include "llvm/Support/ErrorHandling.h"
2122
#include "llvm/TargetParser/ARMTargetParser.h"
2223

@@ -31,7 +32,7 @@ namespace llvm {
3132
namespace jitlink {
3233

3334
/// Translate from ELF relocation type to JITLink-internal edge kind.
34-
Expected<aarch32::EdgeKind_aarch32>
35+
LLVM_ABI Expected<aarch32::EdgeKind_aarch32>
3536
getJITLinkEdgeKind(uint32_t ELFType, const aarch32::ArmConfig &ArmCfg) {
3637
switch (ELFType) {
3738
case ELF::R_ARM_ABS32:
@@ -75,7 +76,7 @@ getJITLinkEdgeKind(uint32_t ELFType, const aarch32::ArmConfig &ArmCfg) {
7576
}
7677

7778
/// Translate from JITLink-internal edge kind back to ELF relocation type.
78-
Expected<uint32_t> getELFRelocationType(Edge::Kind Kind) {
79+
LLVM_ABI Expected<uint32_t> getELFRelocationType(Edge::Kind Kind) {
7980
switch (static_cast<aarch32::EdgeKind_aarch32>(Kind)) {
8081
case aarch32::Data_Delta32:
8182
return ELF::R_ARM_REL32;

llvm/lib/ExecutionEngine/JITLink/aarch32.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "llvm/ADT/StringExtras.h"
1616
#include "llvm/ExecutionEngine/JITLink/JITLink.h"
1717
#include "llvm/ExecutionEngine/Orc/Shared/MemoryFlags.h"
18+
#include "llvm/Support/Compiler.h"
1819
#include "llvm/Support/Endian.h"
1920
#include "llvm/Support/ManagedStatic.h"
2021
#include "llvm/Support/MathExtras.h"
@@ -60,7 +61,7 @@ int64_t decodeImmBT4BlT1BlxT2(uint32_t Hi, uint32_t Lo) {
6061
///
6162
/// S:I1:I2:Imm10:Imm11:0 -> [ 00000:S:Imm10, 00:J1:0:J2:Imm11 ]
6263
///
63-
HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value) {
64+
LLVM_ABI HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value) {
6465
uint32_t S = (Value >> 14) & 0x0400;
6566
uint32_t J1 = (((~(Value >> 10)) ^ (Value >> 11)) & 0x2000);
6667
uint32_t J2 = (((~(Value >> 11)) ^ (Value >> 13)) & 0x0800);
@@ -74,7 +75,7 @@ HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value) {
7475
///
7576
/// [ 00000:S:Imm10, 00:J1:0:J2:Imm11] -> S:I1:I2:Imm10:Imm11:0
7677
///
77-
int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo) {
78+
LLVM_ABI int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo) {
7879
uint32_t S = Hi & 0x0400;
7980
uint32_t I1 = ~((Lo ^ (Hi << 3)) << 10) & 0x00800000;
8081
uint32_t I2 = ~((Lo ^ (Hi << 1)) << 11) & 0x00400000;
@@ -88,7 +89,7 @@ int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo) {
8889
///
8990
/// Imm24:00 -> 00000000:Imm24
9091
///
91-
uint32_t encodeImmBA1BlA1BlxA2(int64_t Value) {
92+
LLVM_ABI uint32_t encodeImmBA1BlA1BlxA2(int64_t Value) {
9293
return (Value >> 2) & 0x00ffffff;
9394
}
9495

@@ -97,7 +98,7 @@ uint32_t encodeImmBA1BlA1BlxA2(int64_t Value) {
9798
///
9899
/// 00000000:Imm24 -> Imm24:00
99100
///
100-
int64_t decodeImmBA1BlA1BlxA2(int64_t Value) {
101+
LLVM_ABI int64_t decodeImmBA1BlA1BlxA2(int64_t Value) {
101102
return SignExtend64<26>((Value & 0x00ffffff) << 2);
102103
}
103104

@@ -106,7 +107,7 @@ int64_t decodeImmBA1BlA1BlxA2(int64_t Value) {
106107
///
107108
/// Imm4:Imm1:Imm3:Imm8 -> [ 00000:i:000000:Imm4, 0:Imm3:0000:Imm8 ]
108109
///
109-
HalfWords encodeImmMovtT1MovwT3(uint16_t Value) {
110+
LLVM_ABI HalfWords encodeImmMovtT1MovwT3(uint16_t Value) {
110111
uint32_t Imm4 = (Value >> 12) & 0x0f;
111112
uint32_t Imm1 = (Value >> 11) & 0x01;
112113
uint32_t Imm3 = (Value >> 8) & 0x07;
@@ -119,7 +120,7 @@ HalfWords encodeImmMovtT1MovwT3(uint16_t Value) {
119120
///
120121
/// [ 00000:i:000000:Imm4, 0:Imm3:0000:Imm8 ] -> Imm4:Imm1:Imm3:Imm8
121122
///
122-
uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
123+
LLVM_ABI uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
123124
uint32_t Imm4 = Hi & 0x0f;
124125
uint32_t Imm1 = (Hi >> 10) & 0x01;
125126
uint32_t Imm3 = (Lo >> 12) & 0x07;
@@ -133,7 +134,7 @@ uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
133134
///
134135
/// Rd4 -> [0000000000000000, 0000:Rd4:00000000]
135136
///
136-
HalfWords encodeRegMovtT1MovwT3(int64_t Value) {
137+
LLVM_ABI HalfWords encodeRegMovtT1MovwT3(int64_t Value) {
137138
uint32_t Rd4 = (Value & 0x0f) << 8;
138139
return HalfWords{0, Rd4};
139140
}
@@ -142,7 +143,7 @@ HalfWords encodeRegMovtT1MovwT3(int64_t Value) {
142143
///
143144
/// [0000000000000000, 0000:Rd4:00000000] -> Rd4
144145
///
145-
int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
146+
LLVM_ABI int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
146147
uint32_t Rd4 = (Lo >> 8) & 0x0f;
147148
return Rd4;
148149
}
@@ -152,7 +153,7 @@ int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
152153
///
153154
/// Imm4:Imm12 -> 000000000000:Imm4:0000:Imm12
154155
///
155-
uint32_t encodeImmMovtA1MovwA2(uint16_t Value) {
156+
LLVM_ABI uint32_t encodeImmMovtA1MovwA2(uint16_t Value) {
156157
uint32_t Imm4 = (Value >> 12) & 0x0f;
157158
uint32_t Imm12 = Value & 0x0fff;
158159
return (Imm4 << 16) | Imm12;
@@ -163,7 +164,7 @@ uint32_t encodeImmMovtA1MovwA2(uint16_t Value) {
163164
///
164165
/// 000000000000:Imm4:0000:Imm12 -> Imm4:Imm12
165166
///
166-
uint16_t decodeImmMovtA1MovwA2(uint64_t Value) {
167+
LLVM_ABI uint16_t decodeImmMovtA1MovwA2(uint64_t Value) {
167168
uint32_t Imm4 = (Value >> 16) & 0x0f;
168169
uint32_t Imm12 = Value & 0x0fff;
169170
return (Imm4 << 12) | Imm12;
@@ -174,7 +175,7 @@ uint16_t decodeImmMovtA1MovwA2(uint64_t Value) {
174175
///
175176
/// Rd4 -> 0000000000000000:Rd4:000000000000
176177
///
177-
uint32_t encodeRegMovtA1MovwA2(int64_t Value) {
178+
LLVM_ABI uint32_t encodeRegMovtA1MovwA2(int64_t Value) {
178179
uint32_t Rd4 = (Value & 0x00000f) << 12;
179180
return Rd4;
180181
}
@@ -184,7 +185,7 @@ uint32_t encodeRegMovtA1MovwA2(int64_t Value) {
184185
///
185186
/// 0000000000000000:Rd4:000000000000 -> Rd4
186187
///
187-
int64_t decodeRegMovtA1MovwA2(uint64_t Value) {
188+
LLVM_ABI int64_t decodeRegMovtA1MovwA2(uint64_t Value) {
188189
uint32_t Rd4 = (Value >> 12) & 0x00000f;
189190
return Rd4;
190191
}

llvm/unittests/ExecutionEngine/JITLink/AArch32Tests.cpp

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include <llvm/BinaryFormat/ELF.h>
1010
#include <llvm/ExecutionEngine/JITLink/aarch32.h>
11+
#include <llvm/Support/Compiler.h>
1112

1213
#include "gtest/gtest.h"
1314

@@ -96,21 +97,21 @@ namespace llvm {
9697
namespace jitlink {
9798
namespace aarch32 {
9899

99-
HalfWords encodeImmBT4BlT1BlxT2(int64_t Value);
100-
HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value);
101-
uint32_t encodeImmBA1BlA1BlxA2(int64_t Value);
102-
HalfWords encodeImmMovtT1MovwT3(uint16_t Value);
103-
HalfWords encodeRegMovtT1MovwT3(int64_t Value);
104-
uint32_t encodeImmMovtA1MovwA2(uint16_t Value);
105-
uint32_t encodeRegMovtA1MovwA2(int64_t Value);
106-
107-
int64_t decodeImmBT4BlT1BlxT2(uint32_t Hi, uint32_t Lo);
108-
int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo);
109-
int64_t decodeImmBA1BlA1BlxA2(int64_t Value);
110-
uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo);
111-
int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo);
112-
uint16_t decodeImmMovtA1MovwA2(uint64_t Value);
113-
int64_t decodeRegMovtA1MovwA2(uint64_t Value);
100+
LLVM_ABI HalfWords encodeImmBT4BlT1BlxT2(int64_t Value);
101+
LLVM_ABI HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value);
102+
LLVM_ABI uint32_t encodeImmBA1BlA1BlxA2(int64_t Value);
103+
LLVM_ABI HalfWords encodeImmMovtT1MovwT3(uint16_t Value);
104+
LLVM_ABI HalfWords encodeRegMovtT1MovwT3(int64_t Value);
105+
LLVM_ABI uint32_t encodeImmMovtA1MovwA2(uint16_t Value);
106+
LLVM_ABI uint32_t encodeRegMovtA1MovwA2(int64_t Value);
107+
108+
LLVM_ABI int64_t decodeImmBT4BlT1BlxT2(uint32_t Hi, uint32_t Lo);
109+
LLVM_ABI int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo);
110+
LLVM_ABI int64_t decodeImmBA1BlA1BlxA2(int64_t Value);
111+
LLVM_ABI uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo);
112+
LLVM_ABI int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo);
113+
LLVM_ABI uint16_t decodeImmMovtA1MovwA2(uint64_t Value);
114+
LLVM_ABI int64_t decodeRegMovtA1MovwA2(uint64_t Value);
114115

115116
} // namespace aarch32
116117
} // namespace jitlink

0 commit comments

Comments
 (0)