diff options
author | Zoltan Varga <vargaz@gmail.com> | 2018-11-08 23:15:39 +0300 |
---|---|---|
committer | monojenkins <jo.shields+jenkins@xamarin.com> | 2018-11-08 23:15:39 +0300 |
commit | d768d8a571413d475ce98acad100d04b4147896d (patch) | |
tree | c426809e99a85adc097b1af4686f2237a98a8c43 | |
parent | af0191cde02c31ce827f94ab5213513e608dca05 (diff) |
[runtime] Add __attribute__(format) to glib string formatting functions, fix -Wformat warnings/errors exposed by the change. (#11611)
[runtime] Add __attribute__(format) to glib string formatting functions, fix -Wformat warnings/errors exposed by the change.
-rw-r--r-- | mono/eglib/gfile.c | 2 | ||||
-rw-r--r-- | mono/eglib/glib.h | 21 | ||||
-rw-r--r-- | mono/metadata/exception.c | 2 | ||||
-rw-r--r-- | mono/metadata/marshal-ilgen.c | 2 | ||||
-rw-r--r-- | mono/metadata/metadata-verify.c | 2 | ||||
-rw-r--r-- | mono/metadata/threads.c | 10 | ||||
-rw-r--r-- | mono/metadata/verify.c | 2 | ||||
-rw-r--r-- | mono/mini/aot-compiler.c | 8 | ||||
-rw-r--r-- | mono/mini/debugger-engine.c | 2 | ||||
-rw-r--r-- | mono/mini/debugger-state-machine.c | 20 | ||||
-rw-r--r-- | mono/mini/interp/mintops.c | 4 | ||||
-rw-r--r-- | mono/utils/mono-log-flight-recorder.c | 2 |
12 files changed, 42 insertions, 35 deletions
diff --git a/mono/eglib/gfile.c b/mono/eglib/gfile.c index 9669734822a..a0222ccbbd3 100644 --- a/mono/eglib/gfile.c +++ b/mono/eglib/gfile.c @@ -123,7 +123,7 @@ g_file_set_contents (const gchar *filename, const gchar *contents, gssize length else name++; - path = g_strdup_printf (TMP_FILE_FORMAT, name - filename, filename, name); + path = g_strdup_printf (TMP_FILE_FORMAT, (int)(name - filename), filename, name); if (!(fp = fopen (path, "wb"))) { g_set_error (err, G_FILE_ERROR, g_file_error_from_errno (errno), "%s", g_strerror (errno)); g_free (path); diff --git a/mono/eglib/glib.h b/mono/eglib/glib.h index 098d84001f8..4578413ae2a 100644 --- a/mono/eglib/glib.h +++ b/mono/eglib/glib.h @@ -261,6 +261,12 @@ typedef guint32 gunichar; #define G_GUINT32_FORMAT PRIu32 #define G_GINT32_FORMAT PRIi32 +#ifdef __GNUC__ +#define G_ATTR_FORMAT_PRINTF(fmt_pos,arg_pos) __attribute__((__format__(__printf__,fmt_pos,arg_pos))) +#else +#define G_ATTR_FORMAT_PRINTF(fmt_pos,arg_pos) +#endif + /* * Allocation */ @@ -345,7 +351,7 @@ void g_propagate_error (GError **dest, GError *src); * Strings utility */ G_EXTERN_C // Used by libtest, at least. -gchar *g_strdup_printf (const gchar *format, ...); +gchar *g_strdup_printf (const gchar *format, ...) G_ATTR_FORMAT_PRINTF(1, 2); gchar *g_strdup_vprintf (const gchar *format, va_list args); gchar *g_strndup (const gchar *str, gsize n); const gchar *g_strerror (gint errnum); @@ -371,10 +377,10 @@ gchar *g_strescape (const gchar *source, const gchar *exceptions); gchar *g_filename_to_uri (const gchar *filename, const gchar *hostname, GError **gerror); gchar *g_filename_from_uri (const gchar *uri, gchar **hostname, GError **gerror); -gint g_printf (gchar const *format, ...); -gint g_fprintf (FILE *file, gchar const *format, ...); -gint g_sprintf (gchar *string, gchar const *format, ...); -gint g_snprintf (gchar *string, gulong n, gchar const *format, ...); +gint g_printf (gchar const *format, ...) G_ATTR_FORMAT_PRINTF(1, 2); +gint g_fprintf (FILE *file, gchar const *format, ...) G_ATTR_FORMAT_PRINTF(2, 3); +gint g_sprintf (gchar *string, gchar const *format, ...) G_ATTR_FORMAT_PRINTF(2, 3); +gint g_snprintf (gchar *string, gulong n, gchar const *format, ...) G_ATTR_FORMAT_PRINTF(3, 4); gint g_vasprintf (gchar **ret, const gchar *fmt, va_list ap); #define g_vprintf vprintf #define g_vfprintf vfprintf @@ -426,8 +432,9 @@ GString *g_string_new_len (const gchar *init, gssize len); GString *g_string_sized_new (gsize default_size); gchar *g_string_free (GString *string, gboolean free_segment); GString *g_string_append (GString *string, const gchar *val); -void g_string_printf (GString *string, const gchar *format, ...); -void g_string_append_printf (GString *string, const gchar *format, ...); + +void g_string_printf (GString *string, const gchar *format, ...) G_ATTR_FORMAT_PRINTF(2, 3); +void g_string_append_printf (GString *string, const gchar *format, ...) G_ATTR_FORMAT_PRINTF(2, 3); void g_string_append_vprintf (GString *string, const gchar *format, va_list args); GString *g_string_append_unichar (GString *string, gunichar c); GString *g_string_append_c (GString *string, gchar c); diff --git a/mono/metadata/exception.c b/mono/metadata/exception.c index ebb15488b71..2bcec518850 100644 --- a/mono/metadata/exception.c +++ b/mono/metadata/exception.c @@ -1109,7 +1109,7 @@ append_frame_and_continue (MonoMethod *method, gpointer ip, size_t native_offset g_string_append_printf (text, "%s\n", msg); g_free (msg); } else { - g_string_append_printf (text, "<unknown native frame 0x%x>\n", ip); + g_string_append_printf (text, "<unknown native frame 0x%p>\n", ip); } MONO_EXIT_GC_UNSAFE; return FALSE; diff --git a/mono/metadata/marshal-ilgen.c b/mono/metadata/marshal-ilgen.c index 6a32211dae4..e8227ec8e9e 100644 --- a/mono/metadata/marshal-ilgen.c +++ b/mono/metadata/marshal-ilgen.c @@ -4939,7 +4939,7 @@ emit_marshal_string_ilgen (EmitMarshalContext *m, int argnum, MonoType *t, m = get_method_nofail (mono_defaults.string_class, "get_Length", -1, 0); if (!t->byref) { - char *msg = g_strdup_printf ("VBByRefStr marshalling requires a ref parameter.", encoding); + char *msg = g_strdup ("VBByRefStr marshalling requires a ref parameter."); mono_mb_emit_exception_marshal_directive (mb, msg); break; } diff --git a/mono/metadata/metadata-verify.c b/mono/metadata/metadata-verify.c index 9b7d66ee671..89a90409dc3 100644 --- a/mono/metadata/metadata-verify.c +++ b/mono/metadata/metadata-verify.c @@ -3813,7 +3813,7 @@ verify_methodimpl_table_global_constraints (VerifyContext *ctx) impl->method_declaration = data [MONO_METHODIMPL_DECLARATION]; if (g_hash_table_lookup (unique_impls, impl)) { - ADD_ERROR_NO_RETURN (ctx, g_strdup_printf ("MethodImpl table row %d has duplicate for tuple (0x%x, 0x%x)", impl->klass, impl->method_declaration)); + ADD_ERROR_NO_RETURN (ctx, g_strdup_printf ("MethodImpl table row %d has duplicate for tuple (0x%x, 0x%x)", i, impl->klass, impl->method_declaration)); g_hash_table_destroy (unique_impls); g_free (impl); return; diff --git a/mono/metadata/threads.c b/mono/metadata/threads.c index 0d5c2adc607..50e92e8ebb6 100644 --- a/mono/metadata/threads.c +++ b/mono/metadata/threads.c @@ -6155,7 +6155,7 @@ summarizer_signal_other_threads (SummarizerGlobalState *state, MonoNativeThreadI pthread_kill (state->thread_array [i], SIGTERM); if (!state->silent) - MOSTLY_ASYNC_SAFE_PRINTF("Pkilling 0x%zx from 0x%zx\n", state->thread_array [i], current); + MOSTLY_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)); #else g_error ("pthread_kill () is not supported by this platform"); #endif @@ -6294,21 +6294,21 @@ mono_threads_summarize_execute (MonoContext *ctx, gchar **out, MonoStackHash *ha // Store a reference to our stack memory into global state gboolean success = summarizer_post_dump (&state, &this_thread, current_idx); if (!success && !state.silent) - MOSTLY_ASYNC_SAFE_PRINTF("Thread 0x%zx reported itself.\n", current); + MOSTLY_ASYNC_SAFE_PRINTF("Thread 0x%zx reported itself.\n", MONO_NATIVE_THREAD_ID_TO_UINT (current)); } else if (!state.silent) { - MOSTLY_ASYNC_SAFE_PRINTF("Thread 0x%zx couldn't report itself.\n", current); + MOSTLY_ASYNC_SAFE_PRINTF("Thread 0x%zx couldn't report itself.\n", MONO_NATIVE_THREAD_ID_TO_UINT (current)); } // From summarizer, wait and dump. if (this_thread_controls) { if (!state.silent) - MOSTLY_ASYNC_SAFE_PRINTF("Entering thread summarizer pause from 0x%zx\n", current); + MOSTLY_ASYNC_SAFE_PRINTF("Entering thread summarizer pause from 0x%zx\n", 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) - MOSTLY_ASYNC_SAFE_PRINTF("Finished thread summarizer pause from 0x%zx.\n", current); + MOSTLY_ASYNC_SAFE_PRINTF("Finished thread summarizer pause from 0x%zx.\n", MONO_NATIVE_THREAD_ID_TO_UINT (current)); // Dump and cleanup all the stack memory summarizer_state_term (&state, out, mem, provided_size, &this_thread); diff --git a/mono/metadata/verify.c b/mono/metadata/verify.c index 645b67cb464..12984a5ea25 100644 --- a/mono/metadata/verify.c +++ b/mono/metadata/verify.c @@ -4534,7 +4534,7 @@ do_ldstr (VerifyContext *ctx, guint32 token) } if (!mono_verifier_verify_string_signature (ctx->image, mono_metadata_token_index (token), error)) { - ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid string index %x at 0x%04x due to: %", token, ctx->ip_offset, mono_error_get_message (error)), MONO_EXCEPTION_BAD_IMAGE); + ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid string index %x at 0x%04x due to: %s", token, ctx->ip_offset, mono_error_get_message (error)), MONO_EXCEPTION_BAD_IMAGE); mono_error_cleanup (error); return; } diff --git a/mono/mini/aot-compiler.c b/mono/mini/aot-compiler.c index 70334e99220..27ceaed7086 100644 --- a/mono/mini/aot-compiler.c +++ b/mono/mini/aot-compiler.c @@ -8578,7 +8578,7 @@ append_mangled_type (GString *s, MonoType *t) } temps = g_string_free (temp, FALSE); /* Include the length to avoid different length type names aliasing each other */ - g_string_append_printf (s, "cl%x_%s_", strlen (temps), temps); + g_string_append_printf (s, "cl%x_%s_", (int)strlen (temps), temps); g_free (temps); } } @@ -9061,7 +9061,7 @@ append_mangled_method (GString *s, MonoMethod *method) g_string_append_printf (s, "_%s_", method->name); MonoGenericContainer *container = mono_method_get_generic_container (method); - g_string_append_printf (s, "_%s"); + g_string_append_printf (s, "_"); append_mangled_context (s, &container->context); return append_mangled_signature (s, mono_method_signature_internal (method)); @@ -9174,9 +9174,9 @@ mono_aot_get_plt_symbol (MonoJumpInfoType type, gconstpointer data) plt_entry->llvm_used = TRUE; #if defined(TARGET_MACH) - return g_strdup_printf (plt_entry->llvm_symbol + strlen (llvm_acfg->llvm_label_prefix)); + return g_strdup (plt_entry->llvm_symbol + strlen (llvm_acfg->llvm_label_prefix)); #else - return g_strdup_printf (plt_entry->llvm_symbol); + return g_strdup (plt_entry->llvm_symbol); #endif } diff --git a/mono/mini/debugger-engine.c b/mono/mini/debugger-engine.c index 4260fff6703..c952ee344f7 100644 --- a/mono/mini/debugger-engine.c +++ b/mono/mini/debugger-engine.c @@ -175,7 +175,7 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo } if (!it_has_sp) { - char *s = g_strdup_printf ("Unable to insert breakpoint at %s:%d", mono_method_full_name (jinfo_get_method (ji), TRUE), bp->il_offset); + char *s = g_strdup_printf ("Unable to insert breakpoint at %s:%ld", mono_method_full_name (jinfo_get_method (ji), TRUE), bp->il_offset); mono_seq_point_iterator_init (&it, seq_points); while (mono_seq_point_iterator_next (&it)) diff --git a/mono/mini/debugger-state-machine.c b/mono/mini/debugger-state-machine.c index 1788815f0f0..1aff76cbade 100644 --- a/mono/mini/debugger-state-machine.c +++ b/mono/mini/debugger-state-machine.c @@ -102,7 +102,7 @@ mono_debugger_log_command (const char *command_set, const char *command, guint8 MonoDebugLogItem payload; payload.kind = DEBUG_LOG_COMMAND; payload.tid = 0x0; - g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, msg); + g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, "%s", msg); mono_flight_recorder_append (debugger_log, &payload); } @@ -118,7 +118,7 @@ mono_debugger_log_event (DebuggerTlsData *tls, const char *event, guint8 *buf, i MonoDebugLogItem payload; payload.kind = DEBUG_LOG_EVENT; payload.tid = tid; - g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, msg); + g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, "%s", msg); mono_flight_recorder_append (debugger_log, &payload); } @@ -132,7 +132,7 @@ mono_debugger_log_exit (int exit_code) MonoDebugLogItem payload; payload.kind = DEBUG_LOG_EXIT; payload.tid = 0x0; - g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, msg); + g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, "%s", msg); mono_flight_recorder_append (debugger_log, &payload); } @@ -151,7 +151,7 @@ mono_debugger_log_add_bp (gpointer bp, MonoMethod *method, long il_offset) MonoDebugLogItem payload; payload.kind = DEBUG_LOG_BREAKPOINT; payload.tid = 0x0; - g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, msg); + g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, "%s", msg); mono_flight_recorder_append (debugger_log, &payload); } @@ -170,7 +170,7 @@ mono_debugger_log_remove_bp (gpointer bp, MonoMethod *method, long il_offset) MonoDebugLogItem payload; payload.kind = DEBUG_LOG_BREAKPOINT; payload.tid = 0x0; - g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, msg); + g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, "%s", msg); mono_flight_recorder_append (debugger_log, &payload); } @@ -185,7 +185,7 @@ mono_debugger_log_bp_hit (DebuggerTlsData *tls, MonoMethod *method, long il_offs MonoDebugLogItem payload; payload.kind = DEBUG_LOG_BREAKPOINT; payload.tid = tid; - g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, msg); + g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, "%s", msg); mono_flight_recorder_append (debugger_log, &payload); } @@ -200,11 +200,11 @@ mono_debugger_log_resume (DebuggerTlsData *tls) g_assert (prev_state == MONO_DEBUGGER_SUSPENDED || prev_state == MONO_DEBUGGER_STARTED); mono_debugger_set_thread_state (tls, prev_state, MONO_DEBUGGER_RESUMED); - char *msg = g_strdup_printf ("Resuming 0x%x from state %s", tid, mono_debug_log_thread_state_to_string (prev_state)); + char *msg = g_strdup_printf ("Resuming 0x%p from state %s", (void*)tid, mono_debug_log_thread_state_to_string (prev_state)); MonoDebugLogItem payload; payload.kind = DEBUG_LOG_STATE_CHANGE; payload.tid = tid; - g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, msg); + g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, "%s", msg); mono_flight_recorder_append (debugger_log, &payload); } @@ -219,11 +219,11 @@ mono_debugger_log_suspend (DebuggerTlsData *tls) g_assert (prev_state == MONO_DEBUGGER_RESUMED || prev_state == MONO_DEBUGGER_STARTED); mono_debugger_set_thread_state (tls, prev_state, MONO_DEBUGGER_SUSPENDED); - char *msg = g_strdup_printf ("Suspending 0x%x from state %s", tid, mono_debug_log_thread_state_to_string (prev_state)); + char *msg = g_strdup_printf ("Suspending 0x%p from state %s", (void*)tid, mono_debug_log_thread_state_to_string (prev_state)); MonoDebugLogItem payload; payload.kind = DEBUG_LOG_STATE_CHANGE; payload.tid = tid; - g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, msg); + g_snprintf ((gchar *) &payload.message, MONO_MAX_DEBUGGER_MSG_LEN, "%s", msg); mono_flight_recorder_append (debugger_log, &payload); } diff --git a/mono/mini/interp/mintops.c b/mono/mini/interp/mintops.c index 8a5bd944a84..06b044258fe 100644 --- a/mono/mini/interp/mintops.c +++ b/mono/mini/interp/mintops.c @@ -58,7 +58,7 @@ mono_interp_dis_mintop(const guint16 *base, const guint16 *ip) guint32 token; int target; - g_string_append_printf (str, "IL_%04x: %-10s", ip - base, mono_interp_opname [*ip]); + g_string_append_printf (str, "IL_%04x: %-10s", (int)(ip - base), mono_interp_opname [*ip]); switch (mono_interp_opargtype [*ip]) { case MintOpNoArgs: break; @@ -115,7 +115,7 @@ mono_interp_dis_mintop(const guint16 *base, const guint16 *ip) if (i > 0) g_string_append_printf (str, ", "); offset = (gint32)READ32 (p); - g_string_append_printf (str, "IL_%04x", p + offset - base); + g_string_append_printf (str, "IL_%04x", (int)(p + offset - base)); p += 2; } g_string_append_printf (str, ")"); diff --git a/mono/utils/mono-log-flight-recorder.c b/mono/utils/mono-log-flight-recorder.c index e9cfa135256..369cbab8873 100644 --- a/mono/utils/mono-log-flight-recorder.c +++ b/mono/utils/mono-log-flight-recorder.c @@ -143,7 +143,7 @@ mono_log_write_recorder (const char *log_domain, GLogLevelFlags level, mono_bool LogQueueEntry entry; entry.command = MONO_FLIGHT_RECORDER_APPEND; - g_snprintf ((gchar *) &entry.message.message, MAX_RECORDER_MSG_LEN, message); + g_snprintf ((gchar *) &entry.message.message, MAX_RECORDER_MSG_LEN, "%s", message); mono_utility_thread_send (logger_thread, &entry); } |