From 28c4854d78f02ee2c92ea536c3c29f4433865869 Mon Sep 17 00:00:00 2001 From: John Chen Date: Wed, 28 Oct 2015 22:06:35 -0700 Subject: Modify Platform ID of Linux NIs (issue #1035) --- src/inc/pedecoder.h | 12 ++++++++++++ src/inc/pedecoder.inl | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src/inc') diff --git a/src/inc/pedecoder.h b/src/inc/pedecoder.h index a744764a6d..37d27b9f51 100644 --- a/src/inc/pedecoder.h +++ b/src/inc/pedecoder.h @@ -84,6 +84,13 @@ inline CHECK CheckOverflow(RVA value1, COUNT_T value2) #define IMAGE_FILE_MACHINE_NATIVE IMAGE_FILE_MACHINE_I386 #elif defined(_TARGET_AMD64_) #define IMAGE_FILE_MACHINE_NATIVE IMAGE_FILE_MACHINE_AMD64 +#if defined(__LINUX__) +#define IMAGE_FILE_MACHINE_NATIVE_NI 0x9664 +#elif defined(__APPLE__) +#define IMAGE_FILE_MACHINE_NATIVE_NI 0xa664 +#elif defined(__FreeBSD__) +#define IMAGE_FILE_MACHINE_NATIVE_NI 0xb664 +#endif #elif defined(_TARGET_ARM_) #define IMAGE_FILE_MACHINE_NATIVE IMAGE_FILE_MACHINE_ARMNT #elif defined(_TARGET_ARM64_) @@ -92,6 +99,11 @@ inline CHECK CheckOverflow(RVA value1, COUNT_T value2) #error "port me" #endif +// Machine code for native images +#ifndef IMAGE_FILE_MACHINE_NATIVE_NI +#define IMAGE_FILE_MACHINE_NATIVE_NI IMAGE_FILE_MACHINE_NATIVE +#endif + // -------------------------------------------------------------------------------- // Types // -------------------------------------------------------------------------------- diff --git a/src/inc/pedecoder.inl b/src/inc/pedecoder.inl index 9794625a58..12b00d21ec 100644 --- a/src/inc/pedecoder.inl +++ b/src/inc/pedecoder.inl @@ -962,8 +962,11 @@ inline BOOL PEDecoder::IsNativeMachineFormat() const if (!HasContents() || !HasNTHeaders() ) return FALSE; _ASSERTE(m_pNTHeaders); + WORD expectedFormat = (HasNativeHeader() || HasReadyToRunHeader()) ? + IMAGE_FILE_MACHINE_NATIVE_NI : + IMAGE_FILE_MACHINE_NATIVE; //do not call GetNTHeaders as we do not want to bother with PE32->PE32+ conversion - return m_pNTHeaders->FileHeader.Machine==IMAGE_FILE_MACHINE_NATIVE; + return m_pNTHeaders->FileHeader.Machine==expectedFormat; } inline BOOL PEDecoder::IsI386() const -- cgit v1.2.3