summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-10-31 22:12:20 +0000
committerTim Northover <tnorthover@apple.com>2014-10-31 22:12:20 +0000
commitcadb77a43e26a326a67df3a137b1e0a83e84e9df (patch)
treeeafdbbf7338007a240f734175017d7016ca214b0
parent80944df6f478018ae895afb27ebff1ab881d4936 (diff)
downloadbcm5719-llvm-cadb77a43e26a326a67df3a137b1e0a83e84e9df.tar.gz
bcm5719-llvm-cadb77a43e26a326a67df3a137b1e0a83e84e9df.zip
[mach-o] explicitly cast little_n uses to ints to silence MSVC
Hopefully this'll fix the build failure in the bot. llvm-svn: 221007
-rw-r--r--lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp4
-rw-r--r--lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp12
-rw-r--r--lld/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp14
-rw-r--r--lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h12
4 files changed, 24 insertions, 18 deletions
diff --git a/lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp b/lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp
index 1a93eafa8c7..a3057966774 100644
--- a/lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp
+++ b/lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp
@@ -458,7 +458,7 @@ std::error_code ArchHandler_arm64::getPairReferenceInfo(
*kind = delta64;
if (auto ec = atomFromSymbolIndex(reloc2.symbol, target))
return ec;
- *addend = *(little64_t *)fixupContent + offsetInAtom;
+ *addend = (int64_t)*(little64_t *)fixupContent + offsetInAtom;
return std::error_code();
case ((ARM64_RELOC_SUBTRACTOR | rExtern | rLength4) << 16 |
ARM64_RELOC_UNSIGNED | rExtern | rLength4):
@@ -466,7 +466,7 @@ std::error_code ArchHandler_arm64::getPairReferenceInfo(
*kind = delta32;
if (auto ec = atomFromSymbolIndex(reloc2.symbol, target))
return ec;
- *addend = *(little32_t *)fixupContent + offsetInAtom;
+ *addend = (int32_t)*(little32_t *)fixupContent + offsetInAtom;
return std::error_code();
default:
return make_dynamic_error_code(Twine("unsupported arm64 relocation pair"));
diff --git a/lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp b/lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp
index f2a613c3c03..c278042cf8d 100644
--- a/lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp
+++ b/lld/lib/ReaderWriter/MachO/ArchHandler_x86.cpp
@@ -262,18 +262,18 @@ ArchHandler_x86::getReferenceInfo(const Relocation &reloc,
*kind = branch32;
if (E ec = atomFromSymbolIndex(reloc.symbol, target))
return ec;
- *addend = fixupAddress + 4 + *(little32_t *)fixupContent;
+ *addend = fixupAddress + 4 + (int32_t)*(little32_t *)fixupContent;
break;
case GENERIC_RELOC_VANILLA | rPcRel | rLength4:
// ex: call _foo (and _foo defined)
*kind = branch32;
- targetAddress = fixupAddress + 4 + *(little32_t *)fixupContent;
+ targetAddress = fixupAddress + 4 + (int32_t)*(little32_t *)fixupContent;
return atomFromAddress(reloc.symbol, targetAddress, target, addend);
break;
case GENERIC_RELOC_VANILLA | rScattered | rPcRel | rLength4:
// ex: call _foo+n (and _foo defined)
*kind = branch32;
- targetAddress = fixupAddress + 4 + *(little32_t *)fixupContent;
+ targetAddress = fixupAddress + 4 + (int32_t)*(little32_t *)fixupContent;
if (E ec = atomFromAddress(0, reloc.value, target, addend))
return ec;
*addend = targetAddress - reloc.value;
@@ -283,18 +283,18 @@ ArchHandler_x86::getReferenceInfo(const Relocation &reloc,
*kind = branch16;
if (E ec = atomFromSymbolIndex(reloc.symbol, target))
return ec;
- *addend = fixupAddress + 2 + *(little16_t *)fixupContent;
+ *addend = fixupAddress + 2 + (int16_t)*(little16_t *)fixupContent;
break;
case GENERIC_RELOC_VANILLA | rPcRel | rLength2:
// ex: callw _foo (and _foo defined)
*kind = branch16;
- targetAddress = fixupAddress + 2 + *(little16_t *)fixupContent;
+ targetAddress = fixupAddress + 2 + (int16_t)*(little16_t *)fixupContent;
return atomFromAddress(reloc.symbol, targetAddress, target, addend);
break;
case GENERIC_RELOC_VANILLA | rScattered | rPcRel | rLength2:
// ex: callw _foo+n (and _foo defined)
*kind = branch16;
- targetAddress = fixupAddress + 2 + *(little16_t *)fixupContent;
+ targetAddress = fixupAddress + 2 + (int16_t)*(little16_t *)fixupContent;
if (E ec = atomFromAddress(0, reloc.value, target, addend))
return ec;
*addend = targetAddress - reloc.value;
diff --git a/lld/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp b/lld/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp
index 8bd87d01676..02c0760ac72 100644
--- a/lld/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp
+++ b/lld/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp
@@ -345,17 +345,17 @@ ArchHandler_x86_64::getReferenceInfo(const Relocation &reloc,
case ripRel32Minus1:
if (E ec = atomFromSymbolIndex(reloc.symbol, target))
return ec;
- *addend = *(little32_t *)fixupContent + 1;
+ *addend = (int32_t)*(little32_t *)fixupContent + 1;
return std::error_code();
case ripRel32Minus2:
if (E ec = atomFromSymbolIndex(reloc.symbol, target))
return ec;
- *addend = *(little32_t *)fixupContent + 2;
+ *addend = (int32_t)*(little32_t *)fixupContent + 2;
return std::error_code();
case ripRel32Minus4:
if (E ec = atomFromSymbolIndex(reloc.symbol, target))
return ec;
- *addend = *(little32_t *)fixupContent + 4;
+ *addend = (int32_t)*(little32_t *)fixupContent + 4;
return std::error_code();
case ripRel32Anon:
targetAddress = fixupAddress + 4 + *(little32_t *)fixupContent;
@@ -427,18 +427,18 @@ ArchHandler_x86_64::getPairReferenceInfo(const normalized::Relocation &reloc1,
case delta64:
if (E ec = atomFromSymbolIndex(reloc2.symbol, target))
return ec;
- *addend = *(little64_t *)fixupContent + offsetInAtom;
+ *addend = (int64_t)*(little64_t *)fixupContent + offsetInAtom;
return std::error_code();
case delta32:
if (E ec = atomFromSymbolIndex(reloc2.symbol, target))
return ec;
- *addend = *(little32_t *)fixupContent + offsetInAtom;
+ *addend = (int32_t)*(little32_t *)fixupContent + offsetInAtom;
return std::error_code();
case delta64Anon:
- targetAddress = offsetInAtom + *(little64_t *)fixupContent;
+ targetAddress = offsetInAtom + (int64_t)*(little64_t *)fixupContent;
return atomFromAddress(reloc2.symbol, targetAddress, target, addend);
case delta32Anon:
- targetAddress = offsetInAtom + *(little32_t *)fixupContent;
+ targetAddress = offsetInAtom + (int32_t)*(little32_t *)fixupContent;
return atomFromAddress(reloc2.symbol, targetAddress, target, addend);
default:
llvm_unreachable("bad reloc pair kind");
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h
index edaae1a114f..fe40ed47042 100644
--- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h
+++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h
@@ -40,21 +40,27 @@ template<typename T>
static inline uint16_t read16(const T *loc, bool isBig) {
assert((uint64_t)loc % llvm::alignOf<T>() == 0 &&
"invalid pointer alignment");
- return isBig ? *(ubig16_t *)loc : *(ulittle16_t *)loc;
+ if (isBig)
+ return *(ubig16_t *)loc;
+ return *(ulittle16_t *)loc;
}
template<typename T>
static inline uint32_t read32(const T *loc, bool isBig) {
assert((uint64_t)loc % llvm::alignOf<T>() == 0 &&
"invalid pointer alignment");
- return isBig ? *(ubig32_t *)loc : *(ulittle32_t *)loc;
+ if (isBig)
+ return *(ubig32_t *)loc;
+ return *(ulittle32_t *)loc;
}
template<typename T>
static inline uint64_t read64(const T *loc, bool isBig) {
assert((uint64_t)loc % llvm::alignOf<T>() == 0 &&
"invalid pointer alignment");
- return isBig ? *(ubig64_t *)loc : *(ulittle64_t *)loc;
+ if (isBig)
+ return *(ubig64_t *)loc;
+ return *(ulittle64_t *)loc;
}
inline void write16(uint8_t *loc, uint16_t value, bool isBig) {
OpenPOWER on IntegriCloud