Merge #929 with some changes to get things compile (#930)
diff --git a/cs.c b/cs.c
index 19c65c7..82f9efe 100644
--- a/cs.c
+++ b/cs.c
@@ -45,7 +45,11 @@
#endif
// default SKIPDATA mnemonic
+#ifndef CAPSTONE_DIET
#define SKIPDATA_MNEM ".byte"
+#else // No printing is available in diet mode
+#define SKIPDATA_MNEM NULL
+#endif
cs_err (*arch_init[MAX_ARCH])(cs_struct *) = { NULL };
cs_err (*arch_option[MAX_ARCH]) (cs_struct *, cs_opt_type, size_t value) = { NULL };
@@ -552,6 +556,7 @@
}
// generate @op_str for data instruction of SKIPDATA
+#ifndef CAPSTONE_DIET
static void skipdata_opstr(char *opstr, const uint8_t *buffer, size_t size)
{
char *p = opstr;
@@ -580,6 +585,7 @@
available -= len;
}
}
+#endif
// dynamicly allocate memory to contain disasm insn
// NOTE: caller must free() the allocated memory itself to avoid memory leaking
@@ -708,9 +714,14 @@
insn_cache->address = offset;
insn_cache->size = (uint16_t)skipdata_bytes;
memcpy(insn_cache->bytes, buffer, skipdata_bytes);
+#ifdef CAPSTONE_DIET
+ insn_cache->mnemonic[0] = '\0';
+ insn_cache->op_str[0] = '\0';
+#else
strncpy(insn_cache->mnemonic, handle->skipdata_setup.mnemonic,
sizeof(insn_cache->mnemonic) - 1);
skipdata_opstr(insn_cache->op_str, buffer, skipdata_bytes);
+#endif
insn_cache->detail = NULL;
next_offset = skipdata_bytes;
@@ -912,10 +923,15 @@
insn->id = 0; // invalid ID for this "data" instruction
insn->address = *address;
insn->size = (uint16_t)skipdata_bytes;
+#ifdef CAPSTONE_DIET
+ insn->mnemonic[0] = '\0';
+ insn->op_str[0] = '\0';
+#else
memcpy(insn->bytes, *code, skipdata_bytes);
strncpy(insn->mnemonic, handle->skipdata_setup.mnemonic,
sizeof(insn->mnemonic) - 1);
skipdata_opstr(insn->op_str, *code, skipdata_bytes);
+#endif
*code += skipdata_bytes;
*size -= skipdata_bytes;