Skip to content

Commit f10915e

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 93a4244 commit f10915e

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
@@ -17,6 +17,7 @@
1717
#include "llvm/ExecutionEngine/JITLink/JITLink.h"
1818
#include "llvm/ExecutionEngine/Orc/Shared/MemoryFlags.h"
1919
#include "llvm/Object/ELFObjectFile.h"
20+
#include "llvm/Support/Compiler.h"
2021
#include "llvm/Support/Endian.h"
2122
#include "llvm/Support/ManagedStatic.h"
2223
#include "llvm/Support/MathExtras.h"
@@ -62,7 +63,7 @@ int64_t decodeImmBT4BlT1BlxT2(uint32_t Hi, uint32_t Lo) {
6263
///
6364
/// S:I1:I2:Imm10:Imm11:0 -> [ 00000:S:Imm10, 00:J1:0:J2:Imm11 ]
6465
///
65-
HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value) {
66+
LLVM_ABI HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value) {
6667
uint32_t S = (Value >> 14) & 0x0400;
6768
uint32_t J1 = (((~(Value >> 10)) ^ (Value >> 11)) & 0x2000);
6869
uint32_t J2 = (((~(Value >> 11)) ^ (Value >> 13)) & 0x0800);
@@ -76,7 +77,7 @@ HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value) {
7677
///
7778
/// [ 00000:S:Imm10, 00:J1:0:J2:Imm11] -> S:I1:I2:Imm10:Imm11:0
7879
///
79-
int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo) {
80+
LLVM_ABI int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo) {
8081
uint32_t S = Hi & 0x0400;
8182
uint32_t I1 = ~((Lo ^ (Hi << 3)) << 10) & 0x00800000;
8283
uint32_t I2 = ~((Lo ^ (Hi << 1)) << 11) & 0x00400000;
@@ -90,7 +91,7 @@ int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo) {
9091
///
9192
/// Imm24:00 -> 00000000:Imm24
9293
///
93-
uint32_t encodeImmBA1BlA1BlxA2(int64_t Value) {
94+
LLVM_ABI uint32_t encodeImmBA1BlA1BlxA2(int64_t Value) {
9495
return (Value >> 2) & 0x00ffffff;
9596
}
9697

@@ -99,7 +100,7 @@ uint32_t encodeImmBA1BlA1BlxA2(int64_t Value) {
99100
///
100101
/// 00000000:Imm24 -> Imm24:00
101102
///
102-
int64_t decodeImmBA1BlA1BlxA2(int64_t Value) {
103+
LLVM_ABI int64_t decodeImmBA1BlA1BlxA2(int64_t Value) {
103104
return SignExtend64<26>((Value & 0x00ffffff) << 2);
104105
}
105106

@@ -108,7 +109,7 @@ int64_t decodeImmBA1BlA1BlxA2(int64_t Value) {
108109
///
109110
/// Imm4:Imm1:Imm3:Imm8 -> [ 00000:i:000000:Imm4, 0:Imm3:0000:Imm8 ]
110111
///
111-
HalfWords encodeImmMovtT1MovwT3(uint16_t Value) {
112+
LLVM_ABI HalfWords encodeImmMovtT1MovwT3(uint16_t Value) {
112113
uint32_t Imm4 = (Value >> 12) & 0x0f;
113114
uint32_t Imm1 = (Value >> 11) & 0x01;
114115
uint32_t Imm3 = (Value >> 8) & 0x07;
@@ -121,7 +122,7 @@ HalfWords encodeImmMovtT1MovwT3(uint16_t Value) {
121122
///
122123
/// [ 00000:i:000000:Imm4, 0:Imm3:0000:Imm8 ] -> Imm4:Imm1:Imm3:Imm8
123124
///
124-
uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
125+
LLVM_ABI uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
125126
uint32_t Imm4 = Hi & 0x0f;
126127
uint32_t Imm1 = (Hi >> 10) & 0x01;
127128
uint32_t Imm3 = (Lo >> 12) & 0x07;
@@ -135,7 +136,7 @@ uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
135136
///
136137
/// Rd4 -> [0000000000000000, 0000:Rd4:00000000]
137138
///
138-
HalfWords encodeRegMovtT1MovwT3(int64_t Value) {
139+
LLVM_ABI HalfWords encodeRegMovtT1MovwT3(int64_t Value) {
139140
uint32_t Rd4 = (Value & 0x0f) << 8;
140141
return HalfWords{0, Rd4};
141142
}
@@ -144,7 +145,7 @@ HalfWords encodeRegMovtT1MovwT3(int64_t Value) {
144145
///
145146
/// [0000000000000000, 0000:Rd4:00000000] -> Rd4
146147
///
147-
int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
148+
LLVM_ABI int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
148149
uint32_t Rd4 = (Lo >> 8) & 0x0f;
149150
return Rd4;
150151
}
@@ -154,7 +155,7 @@ int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
154155
///
155156
/// Imm4:Imm12 -> 000000000000:Imm4:0000:Imm12
156157
///
157-
uint32_t encodeImmMovtA1MovwA2(uint16_t Value) {
158+
LLVM_ABI uint32_t encodeImmMovtA1MovwA2(uint16_t Value) {
158159
uint32_t Imm4 = (Value >> 12) & 0x0f;
159160
uint32_t Imm12 = Value & 0x0fff;
160161
return (Imm4 << 16) | Imm12;
@@ -165,7 +166,7 @@ uint32_t encodeImmMovtA1MovwA2(uint16_t Value) {
165166
///
166167
/// 000000000000:Imm4:0000:Imm12 -> Imm4:Imm12
167168
///
168-
uint16_t decodeImmMovtA1MovwA2(uint64_t Value) {
169+
LLVM_ABI uint16_t decodeImmMovtA1MovwA2(uint64_t Value) {
169170
uint32_t Imm4 = (Value >> 16) & 0x0f;
170171
uint32_t Imm12 = Value & 0x0fff;
171172
return (Imm4 << 12) | Imm12;
@@ -176,7 +177,7 @@ uint16_t decodeImmMovtA1MovwA2(uint64_t Value) {
176177
///
177178
/// Rd4 -> 0000000000000000:Rd4:000000000000
178179
///
179-
uint32_t encodeRegMovtA1MovwA2(int64_t Value) {
180+
LLVM_ABI uint32_t encodeRegMovtA1MovwA2(int64_t Value) {
180181
uint32_t Rd4 = (Value & 0x00000f) << 12;
181182
return Rd4;
182183
}
@@ -186,7 +187,7 @@ uint32_t encodeRegMovtA1MovwA2(int64_t Value) {
186187
///
187188
/// 0000000000000000:Rd4:000000000000 -> Rd4
188189
///
189-
int64_t decodeRegMovtA1MovwA2(uint64_t Value) {
190+
LLVM_ABI int64_t decodeRegMovtA1MovwA2(uint64_t Value) {
190191
uint32_t Rd4 = (Value >> 12) & 0x00000f;
191192
return Rd4;
192193
}

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)