diff --git a/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp b/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp index 8cb671085..69da7ca96 100644 --- a/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp +++ b/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp @@ -181,12 +181,28 @@ public: FindAddressForAtom addressForAtom, normalized::Relocations &relocs) override; + + bool isDataInCodeTransition(Reference::KindValue refKind) override { + return refKind == donothing || refKind == donothing; + } + + Reference::KindValue dataInCodeTransitionStart( + const MachODefinedAtom &atom) override { + return donothing; + } + + Reference::KindValue dataInCodeTransitionEnd( + const MachODefinedAtom &atom) override { + return donothing; + } + private: static const Registry::KindStrings _sKindStrings[]; static const StubInfo _sStubInfo; enum X86_64Kind: Reference::KindValue { invalid, /// for error condition + donothing, // Kinds found in mach-o .o files: branch32, /// ex: call _foo @@ -601,6 +617,7 @@ void ArchHandler_x86_64::applyFixupFinal( case negDelta32: *loc32 = fixupAddress - targetAddress + ref.addend(); return; + case donothing: case lazyPointer: // Do nothing return; diff --git a/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h b/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h index 407bd9b97..52d68071a 100644 --- a/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h +++ b/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h @@ -83,7 +83,7 @@ static inline uint32_t read32(const T *loc, bool isBig) { template static inline uint64_t read64(const T *loc, bool isBig) { - assert((uint64_t)loc % alignof(T) == 0 && "invalid pointer alignment"); + //assert((uint64_t)loc % alignof(T) == 0 && "invalid pointer alignment"); return isBig ? read64be(loc) : read64le(loc); }