mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-10-17 19:02:52 +02:00
systemtap: Use correct formatters/types
Try to avoid casting variables to potentially smaller types to fit defined probes. This can truncate values and lead to wrong results. Also make sure that signedness matches. Since GType can be even 128 bit on CHERI architecture, cast all these various types used based on platform to uintmax_t which SystemTap properly processes.
This commit is contained in:
@@ -23,8 +23,9 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../glib/glib-private.h"
|
||||
|
||||
@@ -4625,7 +4626,7 @@ retry:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
TRACE (GOBJECT_OBJECT_REF (object, G_TYPE_FROM_INSTANCE (object), old_ref));
|
||||
TRACE (GOBJECT_OBJECT_REF (object, (uintmax_t) G_TYPE_FROM_INSTANCE (object), old_ref));
|
||||
|
||||
*out_toggle_notify = toggle_notify;
|
||||
*out_toggle_data = toggle_data;
|
||||
@@ -4769,7 +4770,7 @@ retry_beginning:
|
||||
goto retry_beginning;
|
||||
|
||||
/* Beware: object might be a dangling pointer. */
|
||||
TRACE (GOBJECT_OBJECT_UNREF (object, obj_gtype, old_ref));
|
||||
TRACE (GOBJECT_OBJECT_UNREF (object, (uintmax_t) obj_gtype, old_ref));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4828,9 +4829,9 @@ retry_beginning:
|
||||
g_object_notify_queue_freeze (object, TRUE);
|
||||
nqueue_is_frozen = TRUE;
|
||||
|
||||
TRACE (GOBJECT_OBJECT_DISPOSE (object, G_TYPE_FROM_INSTANCE (object), 1));
|
||||
TRACE (GOBJECT_OBJECT_DISPOSE (object, (uintmax_t) G_TYPE_FROM_INSTANCE (object), 1));
|
||||
G_OBJECT_GET_CLASS (object)->dispose (object);
|
||||
TRACE (GOBJECT_OBJECT_DISPOSE_END (object, G_TYPE_FROM_INSTANCE (object), 1));
|
||||
TRACE (GOBJECT_OBJECT_DISPOSE_END (object, (uintmax_t) G_TYPE_FROM_INSTANCE (object), 1));
|
||||
|
||||
/* Must re-fetch old-ref. _object_unref_clear_weak_locations() relies on
|
||||
* that. */
|
||||
@@ -4899,9 +4900,9 @@ retry_decrement:
|
||||
g_signal_handlers_destroy (object);
|
||||
g_object_weak_release_all (object, TRUE);
|
||||
|
||||
TRACE (GOBJECT_OBJECT_FINALIZE (object, G_TYPE_FROM_INSTANCE (object)));
|
||||
TRACE (GOBJECT_OBJECT_FINALIZE (object, (uintmax_t) G_TYPE_FROM_INSTANCE (object)));
|
||||
G_OBJECT_GET_CLASS (object)->finalize (object);
|
||||
TRACE (GOBJECT_OBJECT_FINALIZE_END (object, G_TYPE_FROM_INSTANCE (object)));
|
||||
TRACE (GOBJECT_OBJECT_FINALIZE_END (object, (uintmax_t) G_TYPE_FROM_INSTANCE (object)));
|
||||
|
||||
GOBJECT_IF_DEBUG (OBJECTS,
|
||||
{
|
||||
|
@@ -1,13 +1,13 @@
|
||||
provider gobject {
|
||||
probe type__new(char *, unsigned long, unsigned long);
|
||||
probe object__new(void*, unsigned long);
|
||||
probe object__ref(void*, unsigned long, unsigned int);
|
||||
probe object__unref(void*, unsigned long, unsigned int);
|
||||
probe object__dispose(void*, unsigned long, unsigned int);
|
||||
probe object__dispose__end(void*, unsigned long, unsigned int);
|
||||
probe object__finalize(void*, unsigned long);
|
||||
probe object__finalize__end(void*, unsigned long);
|
||||
probe signal__new(unsigned int, char *, unsigned long);
|
||||
probe signal__emit(unsigned int, unsigned int, void *, unsigned long);
|
||||
probe signal__emit__end(unsigned int, unsigned int, void *, unsigned long);
|
||||
probe type__new(char *, uintmax_t, uintmax_t);
|
||||
probe object__new(void*, uintmax_t);
|
||||
probe object__ref(void*, uintmax_t, int);
|
||||
probe object__unref(void*, uintmax_t, int);
|
||||
probe object__dispose(void*, uintmax_t, unsigned int);
|
||||
probe object__dispose__end(void*, uintmax_t, unsigned int);
|
||||
probe object__finalize(void*, uintmax_t);
|
||||
probe object__finalize__end(void*, uintmax_t);
|
||||
probe signal__new(unsigned int, char *, uintmax_t);
|
||||
probe signal__emit(unsigned int, unsigned int, void *, uintmax_t);
|
||||
probe signal__emit__end(unsigned int, unsigned int, void *, uintmax_t);
|
||||
};
|
||||
|
@@ -26,8 +26,9 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "gsignal.h"
|
||||
#include "gtype-private.h"
|
||||
@@ -1694,7 +1695,7 @@ g_signal_newv (const gchar *signal_name,
|
||||
key.quark = g_quark_from_string (name);
|
||||
g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key);
|
||||
|
||||
TRACE(GOBJECT_SIGNAL_NEW(signal_id, name, itype));
|
||||
TRACE (GOBJECT_SIGNAL_NEW (signal_id, name, (uintmax_t) itype));
|
||||
}
|
||||
node->destroyed = FALSE;
|
||||
|
||||
@@ -3415,12 +3416,12 @@ signal_emit_valist_unlocked (gpointer instance,
|
||||
|
||||
if (closure != NULL)
|
||||
{
|
||||
TRACE(GOBJECT_SIGNAL_EMIT(signal_id, detail, instance, instance_type));
|
||||
TRACE (GOBJECT_SIGNAL_EMIT (signal_id, detail, instance, (uintmax_t) instance_type));
|
||||
|
||||
SIGNAL_UNLOCK ();
|
||||
SIGNAL_UNLOCK ();
|
||||
|
||||
if (rtype != G_TYPE_NONE)
|
||||
g_value_init (&emission_return, rtype);
|
||||
if (rtype != G_TYPE_NONE)
|
||||
g_value_init (&emission_return, rtype);
|
||||
|
||||
if (node_copy.accumulator)
|
||||
g_value_init (&accu, rtype);
|
||||
@@ -3484,8 +3485,8 @@ signal_emit_valist_unlocked (gpointer instance,
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
TRACE(GOBJECT_SIGNAL_EMIT_END(signal_id, detail, instance, instance_type));
|
||||
|
||||
TRACE (GOBJECT_SIGNAL_EMIT_END (signal_id, detail, instance, (uintmax_t) instance_type));
|
||||
|
||||
/* See comment above paired ref above */
|
||||
#ifndef __COVERITY__
|
||||
|
@@ -481,7 +481,7 @@ type_node_any_new_W (TypeNode *pnode,
|
||||
pnode->children[i] = type;
|
||||
}
|
||||
|
||||
TRACE(GOBJECT_TYPE_NEW(name, node->supers[1], type));
|
||||
TRACE (GOBJECT_TYPE_NEW (name, node->supers[1], (uintmax_t) type));
|
||||
|
||||
node->plugin = plugin;
|
||||
node->n_children = 0;
|
||||
@@ -1906,7 +1906,7 @@ g_type_create_instance (GType type)
|
||||
}
|
||||
#endif
|
||||
|
||||
TRACE(GOBJECT_OBJECT_NEW(instance, type));
|
||||
TRACE (GOBJECT_OBJECT_NEW (instance, (uintmax_t) type));
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
Reference in New Issue
Block a user