Skip to content

Commit

Permalink
Fix many printf warnings (mono/mono#16484)
Browse files Browse the repository at this point in the history
* Do not `printf` `long long` or `unsigned long long`.

*Do* printf `gint64` or `guint64`.

Do not printf %ll.
Do not printf %z.

 gint64 ==  int64_t, which could be long, or long long, or maybe other
guint64 == uint64_t, ditto

For printing gint64/guint64, use PRId64, PRIx64, etc.
For printing gsize/gssize, use `G_GSIZE_FORMAT` (seems like excess `G`).

%z definitely would warn for every single use, with Mingw.

And %ll might also, since on 64bit platforms, gint64 tends to be
long, not long long, and would merit %l not %ll.
(No matter that %ll is merited on 32bit, and the behavior
would then be correct on both.).

If there becomes a system w/o PRId64 etc., and it is a 64bit system,
then we could use %l under a portable name.
Or %I64. This appears unlikely (unless reach is extended to older Windows runtime).

Note that PRIxPTR for gsize/intptr_t may be a good idea too.


Commit migrated from mono/mono@0740206
  • Loading branch information
jaykrell authored and akoeplinger committed Jan 14, 2020
1 parent 590f336 commit 21244a1
Show file tree
Hide file tree
Showing 35 changed files with 169 additions and 170 deletions.
4 changes: 1 addition & 3 deletions src/mono/mono/dis/declsec.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,8 @@ declsec_20_write_value (GString *str, char type, const char *value)
g_string_append_printf (str, "%d", (gint32)read32 (value));
return value + 4;
case MONO_TYPE_U8:
g_string_append_printf (str, "%lld", (long long)read64 (value));
return value + 8;
case MONO_TYPE_I8:
g_string_append_printf (str, "%lld", (long long)read64 (value));
g_string_append_printf (str, "%" PRId64, (gint64)read64 (value));
return value + 8;
case MONO_TYPE_R4: {
float val;
Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/dis/dis-cil.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ disassemble_cil (MonoImage *m, MonoMethodHeader *mh, MonoGenericContainer *conta
case MonoInlineI8: {
gint64 top = read64 (ptr);

fprintf (output, "0x%llx", (long long) top);
fprintf (output, "0x%" PRIx64, (guint64)top);
ptr += 8;
break;
}
Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/dis/dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -875,7 +875,7 @@ custom_attr_params (MonoImage *m, MonoMethodSignature* sig, const char* value)
break;
case MONO_TYPE_U8:
case MONO_TYPE_I8:
g_string_append_printf (res, "%lld", (long long)read64 (p));
g_string_append_printf (res, "%" PRId64, (gint64)read64 (p));
p += 8;
break;
case MONO_TYPE_R4: {
Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/eglib/test/endian.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ test_swap (void)

res64 = GUINT64_SWAP_LE_BE(b);
if (res64 != b_expect)
return FAILED ("GUINT64_SWAP_LE_BE returned 0x%llx (had=0x%llx)", res64, b);
return FAILED ("GUINT64_SWAP_LE_BE returned 0x%" PRIx64 " (had=0x%" PRIx64 ")", (guint64)res64, (guint64)b);
res16 = GUINT16_SWAP_LE_BE(c);
if (res16 != 0xcdab)
return FAILED ("GUINT16_SWAP_LE_BE returned 0x%x", (guint32) res16);
Expand Down
4 changes: 2 additions & 2 deletions src/mono/mono/metadata/debug-helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -1108,10 +1108,10 @@ print_field_value (const char *field_ptr, MonoClassField *field, int type_offset
g_print ("%u\n", *(guint32*)field_ptr);
break;
case MONO_TYPE_I8:
g_print ("%lld\n", (long long int)*(gint64*)field_ptr);
g_print ("%" PRId64 "\n", *(gint64*)field_ptr);
break;
case MONO_TYPE_U8:
g_print ("%llu\n", (long long unsigned int)*(guint64*)field_ptr);
g_print ("%" PRIu64 "\n", *(guint64*)field_ptr);
break;
case MONO_TYPE_R4:
g_print ("%f\n", *(gfloat*)field_ptr);
Expand Down
4 changes: 2 additions & 2 deletions src/mono/mono/metadata/object.c
Original file line number Diff line number Diff line change
Expand Up @@ -6438,7 +6438,7 @@ mono_array_new_full_checked (MonoDomain *domain, MonoClass *array_class, uintptr
o = (MonoObject *)mono_gc_alloc_vector (vtable, byte_len, len);

if (G_UNLIKELY (!o)) {
mono_error_set_out_of_memory (error, "Could not allocate %zd bytes", (gsize) byte_len);
mono_error_set_out_of_memory (error, "Could not allocate %" G_GSIZE_FORMAT "d bytes", (gsize) byte_len);
return NULL;
}

Expand Down Expand Up @@ -6551,7 +6551,7 @@ mono_array_new_specific_checked (MonoVTable *vtable, uintptr_t n, MonoError *err
o = (MonoObject *)mono_gc_alloc_vector (vtable, byte_len, n);

if (G_UNLIKELY (!o)) {
mono_error_set_out_of_memory (error, "Could not allocate %zd bytes", (gsize) byte_len);
mono_error_set_out_of_memory (error, "Could not allocate %" G_GSIZE_FORMAT "d bytes", (gsize) byte_len);
return NULL;
}

Expand Down
10 changes: 5 additions & 5 deletions src/mono/mono/metadata/sgen-mono.c
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ sgen_client_clear_unreachable_ephemerons (ScanCopyContext ctx)
if (!key || key == tombstone)
continue;

SGEN_LOG (5, "[%zd] key %p (%s) value %p (%s)", cur - mono_array_addr_internal (array, Ephemeron, 0),
SGEN_LOG (5, "[%" G_GSIZE_FORMAT "d] key %p (%s) value %p (%s)", cur - mono_array_addr_internal (array, Ephemeron, 0),
key, sgen_is_object_alive_for_current_gen (key) ? "reachable" : "unreachable",
cur->value, cur->value && sgen_is_object_alive_for_current_gen (cur->value) ? "reachable" : "unreachable");

Expand Down Expand Up @@ -686,7 +686,7 @@ sgen_client_mark_ephemerons (ScanCopyContext ctx)
if (!key || key == tombstone)
continue;

SGEN_LOG (5, "[%zd] key %p (%s) value %p (%s)", cur - mono_array_addr_internal (array, Ephemeron, 0),
SGEN_LOG (5, "[%" G_GSIZE_FORMAT "d] key %p (%s) value %p (%s)", cur - mono_array_addr_internal (array, Ephemeron, 0),
key, sgen_is_object_alive_for_current_gen (key) ? "reachable" : "unreachable",
cur->value, cur->value && sgen_is_object_alive_for_current_gen (cur->value) ? "reachable" : "unreachable");

Expand Down Expand Up @@ -2307,10 +2307,10 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
void *aligned_stack_start;

if (info->client_info.skip) {
SGEN_LOG (3, "Skipping dead thread %p, range: %p-%p, size: %zd", info, info->client_info.stack_start, info->client_info.info.stack_end, (char*)info->client_info.info.stack_end - (char*)info->client_info.stack_start);
SGEN_LOG (3, "Skipping dead thread %p, range: %p-%p, size: %" G_GSIZE_FORMAT "d", info, info->client_info.stack_start, info->client_info.info.stack_end, (char*)info->client_info.info.stack_end - (char*)info->client_info.stack_start);
skip_reason = 1;
} else if (!mono_thread_info_is_live (info)) {
SGEN_LOG (3, "Skipping non-running thread %p, range: %p-%p, size: %zd (state %x)", info, info->client_info.stack_start, info->client_info.info.stack_end, (char*)info->client_info.info.stack_end - (char*)info->client_info.stack_start, info->client_info.info.thread_state.raw);
SGEN_LOG (3, "Skipping non-running thread %p, range: %p-%p, size: %" G_GSIZE_FORMAT "d (state %x)", info, info->client_info.stack_start, info->client_info.info.stack_end, (char*)info->client_info.info.stack_end - (char*)info->client_info.stack_start, info->client_info.info.thread_state.raw);
skip_reason = 3;
} else if (!info->client_info.stack_start) {
SGEN_LOG (3, "Skipping starting or detaching thread %p", info);
Expand All @@ -2336,7 +2336,7 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p

aligned_stack_start = get_aligned_stack_start (info);
g_assert (info->client_info.suspend_done);
SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %zd, pinned=%zd", info, info->client_info.stack_start, info->client_info.info.stack_end, (char*)info->client_info.info.stack_end - (char*)info->client_info.stack_start, sgen_get_pinned_count ());
SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %" G_GSIZE_FORMAT "d, pinned=%" G_GSIZE_FORMAT "d", info, info->client_info.stack_start, info->client_info.info.stack_end, (char*)info->client_info.info.stack_end - (char*)info->client_info.stack_start, sgen_get_pinned_count ());
if (mono_gc_get_gc_callbacks ()->thread_mark_func && !conservative_stack_mark) {
mono_gc_get_gc_callbacks ()->thread_mark_func (info->client_info.runtime_data, (guint8 *)aligned_stack_start, (guint8 *)info->client_info.info.stack_end, precise, &ctx);
} else if (!precise) {
Expand Down
12 changes: 6 additions & 6 deletions src/mono/mono/metadata/threads.c
Original file line number Diff line number Diff line change
Expand Up @@ -6324,7 +6324,7 @@ summarizer_supervisor_start (SummarizerSupervisorState *state)
state->supervisor_pid = pid;
else {
char pid_str[20]; // pid is a uint64_t, 20 digits max in decimal form
sprintf (pid_str, "%llu", (uint64_t)state->pid);
sprintf (pid_str, "%" PRIu64, (uint64_t)state->pid);
const char *const args[] = { hang_watchdog_path, pid_str, NULL };
execve (args[0], (char * const*)args, NULL); // run 'mono-hang-watchdog [pid]'
g_async_safe_printf ("Could not exec mono-hang-watchdog, expected on path '%s' (errno %d)\n", hang_watchdog_path, errno);
Expand Down Expand Up @@ -6416,7 +6416,7 @@ summarizer_signal_other_threads (SummarizerGlobalState *state, MonoNativeThreadI
pthread_kill (state->thread_array [i], SIGTERM);

if (!state->silent)
g_async_safe_printf("Pkilling 0x%zx from 0x%zx\n", MONO_NATIVE_THREAD_ID_TO_UINT (state->thread_array [i]), MONO_NATIVE_THREAD_ID_TO_UINT (current));
g_async_safe_printf("Pkilling 0x%" G_GSIZE_FORMAT "x from 0x%" G_GSIZE_FORMAT "x\n", (gsize)MONO_NATIVE_THREAD_ID_TO_UINT (state->thread_array [i]), (gsize)MONO_NATIVE_THREAD_ID_TO_UINT (current));
#else
g_error ("pthread_kill () is not supported by this platform");
#endif
Expand Down Expand Up @@ -6592,21 +6592,21 @@ mono_threads_summarize_execute_internal (MonoContext *ctx, gchar **out, MonoStac
// Store a reference to our stack memory into global state
gboolean success = summarizer_post_dump (&state, this_thread, current_idx);
if (!success && !state.silent)
g_async_safe_printf("Thread 0x%zx reported itself.\n", MONO_NATIVE_THREAD_ID_TO_UINT (current));
g_async_safe_printf("Thread 0x%" G_GSIZE_FORMAT "x reported itself.\n", (gsize)MONO_NATIVE_THREAD_ID_TO_UINT (current));
} else if (!state.silent) {
g_async_safe_printf("Thread 0x%zx couldn't report itself.\n", MONO_NATIVE_THREAD_ID_TO_UINT (current));
g_async_safe_printf("Thread 0x%" G_GSIZE_FORMAT "x couldn't report itself.\n", (gsize)MONO_NATIVE_THREAD_ID_TO_UINT (current));
}

// From summarizer, wait and dump.
if (this_thread_controls) {
if (!state.silent)
g_async_safe_printf("Entering thread summarizer pause from 0x%zx\n", MONO_NATIVE_THREAD_ID_TO_UINT (current));
g_async_safe_printf("Entering thread summarizer pause from 0x%" G_GSIZE_FORMAT "x\n", (gsize)MONO_NATIVE_THREAD_ID_TO_UINT (current));

// Wait up to 2 seconds for all of the other threads to catch up
summary_timedwait (&state, 2);

if (!state.silent)
g_async_safe_printf("Finished thread summarizer pause from 0x%zx.\n", MONO_NATIVE_THREAD_ID_TO_UINT (current));
g_async_safe_printf("Finished thread summarizer pause from 0x%" G_GSIZE_FORMAT "x.\n", (gsize)MONO_NATIVE_THREAD_ID_TO_UINT (current));

// Dump and cleanup all the stack memory
summarizer_state_term (&state, out, working_mem, provided_size, this_thread);
Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/metadata/w32handle.c
Original file line number Diff line number Diff line change
Expand Up @@ -1004,7 +1004,7 @@ mono_w32handle_wait_multiple (gpointer *handles, gsize nhandles, gboolean waital
alerted = FALSE;

if (nhandles > MONO_W32HANDLE_MAXIMUM_WAIT_OBJECTS) {
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_LAYER_HANDLE, "%s: too many handles: %zd",
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_LAYER_HANDLE, "%s: too many handles: %" G_GSIZE_FORMAT "d",
__func__, nhandles);

return MONO_W32HANDLE_WAIT_RET_FAILED;
Expand Down
1 change: 1 addition & 0 deletions src/mono/mono/metadata/w32process-unix.c
Original file line number Diff line number Diff line change
Expand Up @@ -937,6 +937,7 @@ mono_w32process_module_get_filename (gpointer handle, gpointer module, gunichar2
return FALSE;

proc_path = mono_unicode_from_external (path, &bytes);

if (proc_path == NULL) {
g_free (path);
return FALSE;
Expand Down
6 changes: 3 additions & 3 deletions src/mono/mono/mini/aot-compiler.c
Original file line number Diff line number Diff line change
Expand Up @@ -13153,10 +13153,10 @@ mono_dedup_log_stats (MonoAotCompile *acfg)
}
}

aot_printf (acfg, "Dedup Pass: Size Saved From Deduped Wrappers:\t%d methods, %zu bytes\n", wrappers_saved, wrappers_size_saved);
aot_printf (acfg, "Dedup Pass: Size Saved From Inflated Methods:\t%d methods, %zu bytes\n", instances_saved, inflated_size_saved);
aot_printf (acfg, "Dedup Pass: Size Saved From Deduped Wrappers:\t%d methods, %" G_GSIZE_FORMAT "u bytes\n", wrappers_saved, wrappers_size_saved);
aot_printf (acfg, "Dedup Pass: Size Saved From Inflated Methods:\t%d methods, %" G_GSIZE_FORMAT "u bytes\n", instances_saved, inflated_size_saved);
if (acfg->dedup_emit_mode)
aot_printf (acfg, "Dedup Pass: Size of Moved But Not Deduped (only 1 copy) Methods:\t%d methods, %zu bytes\n", copied, copied_singles);
aot_printf (acfg, "Dedup Pass: Size of Moved But Not Deduped (only 1 copy) Methods:\t%d methods, %" G_GSIZE_FORMAT "u bytes\n", copied, copied_singles);

g_hash_table_destroy (acfg->dedup_stats);
acfg->dedup_stats = NULL;
Expand Down
6 changes: 3 additions & 3 deletions src/mono/mono/mini/interp/interp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1380,7 +1380,7 @@ static InterpMethodArguments* build_args_from_sig (MonoMethodSignature *sig, Int
int_i++;
margs->iargs [int_i] = (gpointer) sarg->data.pair.hi;
#if DEBUG_INTERP
g_print ("build_args_from_sig: margs->iargs [%d/%d]: 0x%016llx, hi=0x%08x lo=0x%08x (frame @ %d)\n", int_i - 1, int_i, *((guint64 *) &margs->iargs [int_i - 1]), sarg->data.pair.hi, sarg->data.pair.lo, i);
g_print ("build_args_from_sig: margs->iargs [%d/%d]: 0x%016" PRIx64 ", hi=0x%08x lo=0x%08x (frame @ %d)\n", int_i - 1, int_i, *((guint64 *) &margs->iargs [int_i - 1]), sarg->data.pair.hi, sarg->data.pair.lo, i);
#endif
int_i++;
break;
Expand Down Expand Up @@ -1714,7 +1714,7 @@ dump_stack (stackval *stack, stackval *sp)
return g_string_free (str, FALSE);

while (s < sp) {
g_string_append_printf (str, "[%p (%lld)] ", s->data.l, s->data.l);
g_string_append_printf (str, "[%p (%" PRId64 ")] ", s->data.l, (gint64)s->data.l);
++s;
}
return g_string_free (str, FALSE);
Expand Down Expand Up @@ -1761,7 +1761,7 @@ dump_stackval (GString *str, stackval *s, MonoType *type)
default: {
GString *res = g_string_new ("");
mono_type_get_desc (res, type, TRUE);
g_string_append_printf (str, "[{%s} %lld/0x%0llx] ", res->str, s->data.l, s->data.l);
g_string_append_printf (str, "[{%s} %" PRId64 "/0x%0" PRIx64 "] ", res->str, (gint64)s->data.l, (guint64)s->data.l);
g_string_free (res, TRUE);
break;
}
Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/mini/interp/mintops.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ mono_interp_dis_mintop (gint32 ins_offset, gboolean native_offset, const guint16
g_string_append_printf (str, " %d", (gint32)READ32 (ip));
break;
case MintOpLongInt:
g_string_append_printf (str, " %lld", (long long)READ64 (ip));
g_string_append_printf (str, " %" PRId64, (gint64)READ64 (ip));
break;
case MintOpFloat: {
gint32 tmp = READ32 (ip);
Expand Down
6 changes: 3 additions & 3 deletions src/mono/mono/mini/jit-icalls.c
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ mono_lshl (guint64 a, gint32 shamt)
{
const guint64 res = a << (shamt & 0x7f);

/*printf ("TESTL %lld << %d = %lld\n", a, shamt, res);*/
/*printf ("TESTL %" PRId64 " << %d = %" PRId64 "\n", a, shamt, (guint64)res);*/

return res;
}
Expand All @@ -368,7 +368,7 @@ mono_lshr_un (guint64 a, gint32 shamt)
{
const guint64 res = a >> (shamt & 0x7f);

/*printf ("TESTR %lld >> %d = %lld\n", a, shamt, res);*/
/*printf ("TESTR %" PRId64 " >> %d = %" PRId64 "\n", a, shamt, (guint64)res);*/

return res;
}
Expand All @@ -378,7 +378,7 @@ mono_lshr (gint64 a, gint32 shamt)
{
const gint64 res = a >> (shamt & 0x7f);

/*printf ("TESTR %lld >> %d = %lld\n", a, shamt, res);*/
/*printf ("TESTR %" PRId64 " >> %d = %" PRId64 "\n", a, shamt, (guint64)res);*/

return res;
}
Expand Down
6 changes: 3 additions & 3 deletions src/mono/mono/mini/mini-codegen.c
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,7 @@ mono_print_ins_index_strbuf (int i, MonoInst *ins)
g_string_append_printf (sbuf, " [%d]", (int)(gssize)ins->inst_p1);
break;
case OP_I8CONST:
g_string_append_printf (sbuf, " [%lld]", (long long)ins->inst_l);
g_string_append_printf (sbuf, " [%" PRId64 "]", (gint64)ins->inst_l);
break;
case OP_R8CONST:
g_string_append_printf (sbuf, " [%f]", *(double*)ins->inst_p0);
Expand Down Expand Up @@ -854,7 +854,7 @@ get_register_spilling (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, Mo

g_assert (bank < MONO_NUM_REGBANKS);

DEBUG (printf ("\tstart regmask to assign R%d: 0x%08llu (R%d <- R%d R%d R%d)\n", reg, (unsigned long long)regmask, ins->dreg, ins->sreg1, ins->sreg2, ins->sreg3));
DEBUG (printf ("\tstart regmask to assign R%d: 0x%08" PRIu64 " (R%d <- R%d R%d R%d)\n", reg, (guint64)regmask, ins->dreg, ins->sreg1, ins->sreg2, ins->sreg3));
/* exclude the registers in the current instruction */
num_sregs = mono_inst_get_src_registers (ins, sregs);
for (i = 0; i < num_sregs; ++i) {
Expand All @@ -871,7 +871,7 @@ get_register_spilling (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, Mo
DEBUG (printf ("\t\texcluding dreg %s\n", mono_regname_full (ins->dreg, bank)));
}

DEBUG (printf ("\t\tavailable regmask: 0x%08llu\n", (unsigned long long)regmask));
DEBUG (printf ("\t\tavailable regmask: 0x%08" PRIu64 "\n", (guint64)regmask));
g_assert (regmask); /* need at least a register we can free */
sel = 0;
/* we should track prev_use and spill the register that's farther */
Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/mini/mini-runtime.c
Original file line number Diff line number Diff line change
Expand Up @@ -1883,7 +1883,7 @@ void
mono_emit_jit_tramp (void *start, int size, const char *desc)
{
if (perf_map_file)
fprintf (perf_map_file, "%llx %x %s\n", (long long unsigned int)(gsize)start, size, desc);
fprintf (perf_map_file, "%" PRIx64 " %x %s\n", (guint64)(gsize)start, size, desc);
}

void
Expand Down
8 changes: 4 additions & 4 deletions src/mono/mono/mini/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ mono_trace_enter_method (MonoMethod *method, MonoJitInfo *ji, MonoProfilerCallCo
break;
case MONO_TYPE_I8:
case MONO_TYPE_U8:
printf ("0x%016llx", (long long)*arg_in_stack_slot(buf, gint64));
printf ("0x%016" PRIx64, (gint64)*arg_in_stack_slot(buf, gint64));
break;
case MONO_TYPE_R4:
printf ("%f", *arg_in_stack_slot(buf, float));
Expand Down Expand Up @@ -387,7 +387,7 @@ mono_trace_leave_method (MonoMethod *method, MonoJitInfo *ji, MonoProfilerCallCo
} else if (o->vtable->klass == mono_defaults.int32_class) {
printf ("[INT32:%p:%d]", o, *(gint32 *)data);
} else if (o->vtable->klass == mono_defaults.int64_class) {
printf ("[INT64:%p:%lld]", o, (long long)*(gint64 *)data);
printf ("[INT64:%p:%" PRId64 "]", o, *(gint64 *)data);
} else if (o->vtable->klass == mono_defaults.string_class) {
char *as;
as = string_to_utf8 ((MonoString*)o);
Expand All @@ -402,12 +402,12 @@ mono_trace_leave_method (MonoMethod *method, MonoJitInfo *ji, MonoProfilerCallCo
}
case MONO_TYPE_I8: {
gint64 l = *arg_in_stack_slot (buf, gint64);
printf ("lresult=0x%16llx", (long long)l);
printf ("lresult=0x%16" PRIx64, l);
break;
}
case MONO_TYPE_U8: {
gint64 l = *arg_in_stack_slot (buf, gint64);
printf ("lresult=0x%16llx", (long long)l);
printf ("lresult=0x%16" PRIx64, l);
break;
}
case MONO_TYPE_R4:
Expand Down
Loading

0 comments on commit 21244a1

Please sign in to comment.