From 347d23692d3a723b69b022d0e2f6cd9ecb388d1c Mon Sep 17 00:00:00 2001 From: Andrey Rys Date: Thu, 21 Mar 2019 16:27:16 +0700 Subject: [PATCH] fix mhexdump machine detection. --- VERSION | 2 +- mhexdump.c | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index b6a7d89..98d9bcb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -16 +17 diff --git a/mhexdump.c b/mhexdump.c index 5d927f7..f8e1300 100644 --- a/mhexdump.c +++ b/mhexdump.c @@ -33,6 +33,18 @@ #include #include +#undef MACHINE_16BIT +#undef MACHINE_32BIT +#undef MACHINE_64BIT + +#if UINTPTR_MAX == UINT32_MAX +#define MACHINE_32BIT +#elif UINTPTR_MAX == UINT64_MAX +#define MACHINE_64BIT +#elif UINTPTR_MAX == UINT16_MAX +#define MACHINE_16BIT +#endif + struct mhexdump_args { const void *data; size_t szdata; @@ -45,12 +57,17 @@ struct mhexdump_args { int closef; }; -#if SIZE_MAX == 0xffffffff +#if defined(MACHINE_32BIT) #define ADDRFMT "%08x: " #define paddr (mha->addaddr == 2 ? (uint32_t)P+(x*mha->group) : (x*mha->group)) -#else +#elif defined(MACHINE_64BIT) #define ADDRFMT "%016lx: " #define paddr (mha->addaddr == 2 ? (uint64_t)P+(x*mha->group) : (x*mha->group)) +#elif defined(MACHINE_16BIT) +#define ADDRFMT "%04x: " +#define paddr (mha->addaddr == 2 ? (uint16_t)P+(x*mha->group) : (x*mha->group)) +#else +#error No machine word size detected! #endif #define BYTEOUT ((unsigned char)P[y+(x*mha->group)]) -- 2.31.1