Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Varga <vargaz@gmail.com>2018-11-08 23:15:39 +0300
committermonojenkins <jo.shields+jenkins@xamarin.com>2018-11-08 23:15:39 +0300
commitd768d8a571413d475ce98acad100d04b4147896d (patch)
treec426809e99a85adc097b1af4686f2237a98a8c43
parentaf0191cde02c31ce827f94ab5213513e608dca05 (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.c2
-rw-r--r--mono/eglib/glib.h21
-rw-r--r--mono/metadata/exception.c2
-rw-r--r--mono/metadata/marshal-ilgen.c2
-rw-r--r--mono/metadata/metadata-verify.c2
-rw-r--r--mono/metadata/threads.c10
-rw-r--r--mono/metadata/verify.c2
-rw-r--r--mono/mini/aot-compiler.c8
-rw-r--r--mono/mini/debugger-engine.c2
-rw-r--r--mono/mini/debugger-state-machine.c20
-rw-r--r--mono/mini/interp/mintops.c4
-rw-r--r--mono/utils/mono-log-flight-recorder.c2
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);
}