-/*
- * helpers.c: Assorted routines
+/**
+ * \file
+ * Assorted routines
*
* (C) 2003 Ximian, Inc.
*/
#endif /* DISABLE_LOGGING */
#if defined(__i386__) || defined(__x86_64__)
-#ifndef TARGET_ARM64
+#if !defined(TARGET_ARM64) && !defined(__APPLE__)
#define emit_debug_info TRUE
#else
#define emit_debug_info FALSE
g_error ("unknown opcode name for %d", op);
return NULL;
#else
+ g_error ("unknown opcode name for %d", op);
g_assert_not_reached ();
#endif
}
}
/**
- * mono_disassemble_code:
- * @cfg: compilation context
- * @code: a pointer to the code
- * @size: the code size in bytes
+ * \param cfg compilation context
+ * \param code a pointer to the code
+ * \param size the code size in bytes
*
* Disassemble to code to stdout.
*/
void
mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id)
{
-#if defined(__native_client__)
- return;
-#endif
#ifndef DISABLE_LOGGING
GHashTable *offset_to_bb_hash = NULL;
int i, cindex, bb_num;
#ifdef HOST_WIN32
const char *tmp = g_get_tmp_dir ();
#endif
- const char *objdump_args = g_getenv ("MONO_OBJDUMP_ARGS");
+ char *objdump_args = g_getenv ("MONO_OBJDUMP_ARGS");
char *as_file;
char *o_file;
char *cmd;
- int unused;
+ int unused G_GNUC_UNUSED;
#ifdef HOST_WIN32
as_file = g_strdup_printf ("%s/test.s", tmp);
#else
#if defined(sparc) && !defined(__GNUC__)
#define DIS_CMD "dis"
-#elif defined(__i386__) || defined(__x86_64__)
+#elif defined(TARGET_X86)
#define DIS_CMD "objdump -l -d"
+#elif defined(TARGET_AMD64)
+ #if defined(HOST_WIN32)
+ #define DIS_CMD "x86_64-w64-mingw32-objdump.exe -M x86-64 -d"
+ #else
+ #define DIS_CMD "objdump -l -d"
+ #endif
#else
#define DIS_CMD "objdump -d"
#endif
close (i);
#endif
+#ifdef HAVE_SYSTEM
cmd = g_strdup_printf (ARCH_PREFIX AS_CMD " %s -o %s", as_file, o_file);
unused = system (cmd);
g_free (cmd);
if (!objdump_args)
- objdump_args = "";
+ objdump_args = g_strdup ("");
fflush (stdout);
unused = system (cmd);
g_free (cmd);
#endif
-
+
cmd = g_strdup_printf (ARCH_PREFIX DIS_CMD " %s %s", objdump_args, o_file);
unused = system (cmd);
g_free (cmd);
+ g_free (objdump_args);
+#else
+ g_assert_not_reached ();
+#endif /* HAVE_SYSTEM */
#ifndef HOST_WIN32
unlink (o_file);