forked from OSchip/llvm-project
Use DEBUG_TYPE and DEBUG instead of DEBUG_WITH_TYPE.
llvm-svn: 233710
This commit is contained in:
parent
0efe1ff405
commit
c351f9563a
|
@ -13,6 +13,8 @@
|
|||
#include "llvm/Support/Endian.h"
|
||||
#include "llvm/Support/MathExtras.h"
|
||||
|
||||
#define DEBUG_TYPE "AArch64"
|
||||
|
||||
using namespace lld;
|
||||
using namespace lld::elf;
|
||||
using namespace llvm::support::endian;
|
||||
|
@ -28,12 +30,11 @@ static bool withinSignedUnsignedRange(int64_t X, int bits) {
|
|||
static void relocR_AARCH64_ABS64(uint8_t *location, uint64_t P, uint64_t S,
|
||||
int64_t A) {
|
||||
int64_t result = (int64_t)S + A;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
write64le(location, result | read64le(location));
|
||||
}
|
||||
|
||||
|
@ -50,12 +51,11 @@ static std::error_code relocR_AARCH64_ABS32(uint8_t *location, uint64_t P,
|
|||
int64_t result = S + A;
|
||||
if (!withinSignedUnsignedRange(result, 32))
|
||||
return make_out_of_range_reloc_error();
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
return std::error_code();
|
||||
}
|
||||
|
@ -69,14 +69,13 @@ static void relocR_AARCH64_ADR_PREL_PG_HI21(uint8_t *location, uint64_t P,
|
|||
uint32_t immhi = result & 0x1FFFFC;
|
||||
immlo = immlo << 29;
|
||||
immhi = immhi << 3;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " immhi: " << Twine::utohexstr(immhi);
|
||||
llvm::dbgs() << " immlo: " << Twine::utohexstr(immlo);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " immhi: " << Twine::utohexstr(immhi);
|
||||
llvm::dbgs() << " immlo: " << Twine::utohexstr(immlo);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, immlo | immhi | read32le(location));
|
||||
// TODO: Make sure this is correct!
|
||||
}
|
||||
|
@ -89,14 +88,13 @@ static void relocR_AARCH64_ADR_PREL_LO21(uint8_t *location, uint64_t P,
|
|||
uint32_t immhi = result & 0x1FFFFC;
|
||||
immlo = immlo << 29;
|
||||
immhi = immhi << 3;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " immhi: " << Twine::utohexstr(immhi);
|
||||
llvm::dbgs() << " immlo: " << Twine::utohexstr(immlo);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " immhi: " << Twine::utohexstr(immhi);
|
||||
llvm::dbgs() << " immlo: " << Twine::utohexstr(immlo);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, immlo | immhi | read32le(location));
|
||||
// TODO: Make sure this is correct!
|
||||
}
|
||||
|
@ -106,12 +104,11 @@ static void relocR_AARCH64_ADD_ABS_LO12_NC(uint8_t *location, uint64_t P,
|
|||
uint64_t S, int64_t A) {
|
||||
int32_t result = (int32_t)((S + A) & 0xFFF);
|
||||
result <<= 10;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -119,12 +116,11 @@ static void relocJump26(uint8_t *location, uint64_t P, uint64_t S, int64_t A) {
|
|||
int32_t result = (int32_t)((S + A) - P);
|
||||
result &= 0x0FFFFFFC;
|
||||
result >>= 2;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -134,12 +130,11 @@ static void relocR_AARCH64_CONDBR19(uint8_t *location, uint64_t P, uint64_t S,
|
|||
int32_t result = (int32_t)((S + A) - P);
|
||||
result &= 0x01FFFFC;
|
||||
result <<= 3;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -148,12 +143,11 @@ static void relocR_AARCH64_LDST8_ABS_LO12_NC(uint8_t *location, uint64_t P,
|
|||
uint64_t S, int64_t A) {
|
||||
int32_t result = (int32_t)((S + A) & 0xFFF);
|
||||
result <<= 10;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -163,12 +157,11 @@ static void relocR_AARCH64_LDST16_ABS_LO12_NC(uint8_t *location, uint64_t P,
|
|||
int32_t result = (int32_t)(S + A);
|
||||
result &= 0x0FFC;
|
||||
result <<= 9;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -178,12 +171,11 @@ static void relocR_AARCH64_LDST32_ABS_LO12_NC(uint8_t *location, uint64_t P,
|
|||
int32_t result = (int32_t)(S + A);
|
||||
result &= 0x0FFC;
|
||||
result <<= 8;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -193,12 +185,11 @@ static void relocR_AARCH64_LDST64_ABS_LO12_NC(uint8_t *location, uint64_t P,
|
|||
int32_t result = (int32_t)(S + A);
|
||||
result &= 0x0FF8;
|
||||
result <<= 7;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -208,12 +199,11 @@ static void relocR_AARCH64_LDST128_ABS_LO12_NC(uint8_t *location, uint64_t P,
|
|||
int32_t result = (int32_t)(S + A);
|
||||
result &= 0x0FF8;
|
||||
result <<= 6;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -225,14 +215,13 @@ static void relocR_AARCH64_ADR_GOT_PAGE(uint8_t *location, uint64_t P,
|
|||
uint32_t immhi = result & 0x1FFFFC;
|
||||
immlo = immlo << 29;
|
||||
immhi = immhi << 3;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " immhi: " << Twine::utohexstr(immhi);
|
||||
llvm::dbgs() << " immlo: " << Twine::utohexstr(immlo);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " immhi: " << Twine::utohexstr(immhi);
|
||||
llvm::dbgs() << " immlo: " << Twine::utohexstr(immlo);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -240,12 +229,11 @@ static void relocR_AARCH64_ADR_GOT_PAGE(uint8_t *location, uint64_t P,
|
|||
static void relocR_AARCH64_LD64_GOT_LO12_NC(uint8_t *location, uint64_t P,
|
||||
uint64_t S, int64_t A) {
|
||||
int32_t result = S + A;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
result &= 0xFF8;
|
||||
result <<= 7;
|
||||
write32le(location, result | read32le(location));
|
||||
|
@ -255,12 +243,11 @@ static void relocR_AARCH64_LD64_GOT_LO12_NC(uint8_t *location, uint64_t P,
|
|||
static void relocADD_AARCH64_GOTRELINDEX(uint8_t *location, uint64_t P,
|
||||
uint64_t S, int64_t A) {
|
||||
int32_t result = S + A;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
result &= 0xFFF;
|
||||
result <<= 10;
|
||||
write32le(location, result | read32le(location));
|
||||
|
@ -276,14 +263,13 @@ static void relocR_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21(uint8_t *location,
|
|||
uint32_t immhi = result & 0x1FFFFC;
|
||||
immlo = immlo << 29;
|
||||
immhi = immhi << 3;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " immhi: " << Twine::utohexstr(immhi);
|
||||
llvm::dbgs() << " immlo: " << Twine::utohexstr(immlo);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " immhi: " << Twine::utohexstr(immhi);
|
||||
llvm::dbgs() << " immlo: " << Twine::utohexstr(immlo);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, immlo | immhi | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -294,12 +280,11 @@ static void relocR_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC(uint8_t *location,
|
|||
int32_t result = S + A;
|
||||
result &= 0xFF8;
|
||||
result <<= 7;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -309,12 +294,11 @@ static void relocR_AARCH64_TLSLE_ADD_TPREL_HI12(uint8_t *location, uint64_t P,
|
|||
int32_t result = S + A;
|
||||
result &= 0x0FFF000;
|
||||
result >>= 2;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
@ -325,12 +309,11 @@ static void relocR_AARCH64_TLSLE_ADD_TPREL_LO12_NC(uint8_t *location,
|
|||
int32_t result = S + A;
|
||||
result &= 0x0FFF;
|
||||
result <<= 10;
|
||||
DEBUG_WITH_TYPE(
|
||||
"AArch64", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: " << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: " << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: " << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: " << Twine::utohexstr(result) << "\n");
|
||||
write32le(location, result | read32le(location));
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
#include "llvm/Support/Endian.h"
|
||||
#include "llvm/Support/MathExtras.h"
|
||||
|
||||
#define DEBUG_TYPE "ARM"
|
||||
|
||||
using namespace lld;
|
||||
using namespace lld::elf;
|
||||
using namespace llvm::support::endian;
|
||||
|
@ -135,13 +137,12 @@ static void relocR_ARM_ABS32(uint8_t *location, uint64_t P, uint64_t S,
|
|||
uint64_t T = addressesThumb;
|
||||
uint32_t result = (uint32_t)((S + A) | T);
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
applyArmReloc(location, result);
|
||||
}
|
||||
|
||||
|
@ -151,13 +152,12 @@ static void relocR_ARM_REL32(uint8_t *location, uint64_t P, uint64_t S,
|
|||
uint64_t T = addressesThumb;
|
||||
uint32_t result = (uint32_t)(((S + A) | T) - P);
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
applyArmReloc(location, result);
|
||||
}
|
||||
|
||||
|
@ -169,14 +169,13 @@ static void relocR_ARM_PREL31(uint8_t *location, uint64_t P, uint64_t S,
|
|||
const uint32_t mask = 0x7FFFFFFF;
|
||||
uint32_t rel31 = result & mask;
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result);
|
||||
llvm::dbgs() << " rel31: 0x" << Twine::utohexstr(rel31) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result);
|
||||
llvm::dbgs() << " rel31: 0x" << Twine::utohexstr(rel31) << "\n");
|
||||
|
||||
applyArmReloc(location, rel31, mask);
|
||||
}
|
||||
|
@ -211,13 +210,12 @@ static void relocR_ARM_THM_CALL(uint8_t *location, uint64_t P, uint64_t S,
|
|||
|
||||
uint32_t result = (uint32_t)(((S + A) | T) - P);
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
relocR_ARM_THM_B_L(location, result, useJs);
|
||||
|
||||
if (switchMode) {
|
||||
|
@ -231,13 +229,12 @@ static void relocR_ARM_THM_JUMP24(uint8_t *location, uint64_t P, uint64_t S,
|
|||
uint64_t T = addressesThumb;
|
||||
uint32_t result = (uint32_t)(((S + A) | T) - P);
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
relocR_ARM_THM_B_L(location, result, true);
|
||||
}
|
||||
|
||||
|
@ -246,12 +243,11 @@ static void relocR_ARM_THM_JUMP11(uint8_t *location, uint64_t P, uint64_t S,
|
|||
int64_t A) {
|
||||
uint32_t result = (uint32_t)(S + A - P);
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
|
||||
//we cut off first bit because it is always 1 according to p. 4.5.3
|
||||
result = (result & 0x0FFE) >> 1;
|
||||
|
@ -263,12 +259,11 @@ static void relocR_ARM_THM_JUMP11(uint8_t *location, uint64_t P, uint64_t S,
|
|||
static void relocR_ARM_BASE_PREL(uint8_t *location, uint64_t P, uint64_t S,
|
||||
int64_t A) {
|
||||
uint32_t result = (uint32_t)(S + A - P);
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
applyArmReloc(location, result);
|
||||
}
|
||||
|
||||
|
@ -276,12 +271,11 @@ static void relocR_ARM_BASE_PREL(uint8_t *location, uint64_t P, uint64_t S,
|
|||
static void relocR_ARM_GOT_BREL(uint8_t *location, uint64_t P, uint64_t S,
|
||||
int64_t A, uint64_t GOT_ORG) {
|
||||
uint32_t result = (uint32_t)(S + A - GOT_ORG);
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
applyArmReloc(location, result);
|
||||
}
|
||||
|
||||
|
@ -294,13 +288,12 @@ static void relocR_ARM_CALL(uint8_t *location, uint64_t P, uint64_t S,
|
|||
uint32_t result = (uint32_t)(((S + A) | T) - P);
|
||||
const uint32_t imm24 = (result & 0x03FFFFFC) >> 2;
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
applyArmReloc(location, imm24, 0xFFFFFF);
|
||||
|
||||
if (switchMode) {
|
||||
|
@ -316,13 +309,12 @@ static void relocR_ARM_JUMP24(uint8_t *location, uint64_t P, uint64_t S,
|
|||
uint32_t result = (uint32_t)(((S + A) | T) - P);
|
||||
const uint32_t imm24 = (result & 0x03FFFFFC) >> 2;
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
applyArmReloc(location, imm24, 0xFFFFFF);
|
||||
}
|
||||
|
||||
|
@ -341,13 +333,12 @@ static void relocR_ARM_MOVW_ABS_NC(uint8_t *location, uint64_t P, uint64_t S,
|
|||
uint32_t result = (uint32_t)((S + A) | T);
|
||||
const uint32_t arg = result & 0x0000FFFF;
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
return relocR_ARM_MOV(location, arg);
|
||||
}
|
||||
|
||||
|
@ -357,12 +348,11 @@ static void relocR_ARM_MOVT_ABS(uint8_t *location, uint64_t P, uint64_t S,
|
|||
uint32_t result = (uint32_t)(S + A);
|
||||
const uint32_t arg = (result & 0xFFFF0000) >> 16;
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
return relocR_ARM_MOV(location, arg);
|
||||
}
|
||||
|
||||
|
@ -387,13 +377,12 @@ static void relocR_ARM_THM_MOVW_ABS_NC(uint8_t *location, uint64_t P,
|
|||
uint32_t result = (uint32_t)((S + A) | T);
|
||||
const uint32_t arg = result & 0x0000FFFF;
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " T: 0x" << Twine::utohexstr(T);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
return relocR_ARM_THM_MOV(location, arg);
|
||||
}
|
||||
|
||||
|
@ -403,12 +392,11 @@ static void relocR_ARM_THM_MOVT_ABS(uint8_t *location, uint64_t P, uint64_t S,
|
|||
uint32_t result = (uint32_t)(S + A);
|
||||
const uint32_t arg = (result & 0xFFFF0000) >> 16;
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
return relocR_ARM_THM_MOV(location, arg);
|
||||
}
|
||||
|
||||
|
@ -417,12 +405,11 @@ static void relocR_ARM_TLS_IE32(uint8_t *location, uint64_t P, uint64_t S,
|
|||
int64_t A) {
|
||||
uint32_t result = (uint32_t)(S + A - P);
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
applyArmReloc(location, result);
|
||||
}
|
||||
|
||||
|
@ -431,12 +418,11 @@ static void relocR_ARM_TLS_LE32(uint8_t *location, uint64_t P, uint64_t S,
|
|||
int64_t A, uint64_t tpoff) {
|
||||
uint32_t result = (uint32_t)(S + A + tpoff);
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr(result) << "\n");
|
||||
applyArmReloc(location, result);
|
||||
}
|
||||
|
||||
|
@ -460,12 +446,12 @@ static void relocR_ARM_ALU_PC_G0_NC(uint8_t *location, uint64_t P, uint64_t S,
|
|||
llvm_unreachable(
|
||||
"Negative offsets for group relocations has not been implemented");
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr((uint32_t)result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr((uint32_t)result)
|
||||
<< "\n");
|
||||
|
||||
relocR_ARM_ALU_PC_GN_NC<20>(location, (uint32_t)result);
|
||||
}
|
||||
|
@ -479,12 +465,12 @@ static void relocR_ARM_ALU_PC_G1_NC(uint8_t *location, uint64_t P, uint64_t S,
|
|||
llvm_unreachable(
|
||||
"Negative offsets for group relocations has not been implemented");
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr((uint32_t)result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr((uint32_t)result)
|
||||
<< "\n");
|
||||
|
||||
relocR_ARM_ALU_PC_GN_NC<12>(location, (uint32_t)result);
|
||||
}
|
||||
|
@ -498,12 +484,12 @@ static void relocR_ARM_LDR_PC_G2(uint8_t *location, uint64_t P, uint64_t S,
|
|||
llvm_unreachable(
|
||||
"Negative offsets for group relocations has not been implemented");
|
||||
|
||||
DEBUG_WITH_TYPE(
|
||||
"ARM", llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr((uint32_t)result) << "\n");
|
||||
DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";
|
||||
llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);
|
||||
llvm::dbgs() << " A: 0x" << Twine::utohexstr(A);
|
||||
llvm::dbgs() << " P: 0x" << Twine::utohexstr(P);
|
||||
llvm::dbgs() << " result: 0x" << Twine::utohexstr((uint32_t)result)
|
||||
<< "\n");
|
||||
|
||||
const uint32_t mask = 0xFFF;
|
||||
applyArmReloc(location, (uint32_t)result & mask, mask);
|
||||
|
|
Loading…
Reference in New Issue