Commit a082fc7a by Frank Ch. Eigler Committed by Frank Ch. Eigler

mf-impl.h (__mf_options): Add ignore_reads and timestamps fields.

2004-07-20  Frank Ch. Eigler  <fche@redhat.com>

	* mf-impl.h (__mf_options): Add ignore_reads and timestamps fields.
	* mf-runtime.c (options): Give them a name.
	(__mf_set_default_options): Set them.
	(__mf_insert_new_object, __mfu_unregister): Optionalize timestamps.
	(__mf_violation): Warning cleanup.
	* mf-impl.h (MF_VALIDATE_EXTENT): Support ignore_reads option.
	* splay-tree.c (splay_tree_delete_helper): Remove obsolete decl.

From-SVN: r84971
parent 9a55eab3
2004-07-20 Frank Ch. Eigler <fche@redhat.com>
* mf-impl.h (__mf_options): Add ignore_reads and timestamps fields.
* mf-runtime.c (options): Give them a name.
(__mf_set_default_options): Set them.
(__mf_insert_new_object, __mfu_unregister): Optionalize timestamps.
(__mf_violation): Warning cleanup.
* mf-impl.h (MF_VALIDATE_EXTENT): Support ignore_reads option.
* splay-tree.c (splay_tree_delete_helper): Remove obsolete decl.
2004-07-15 Frank Ch. Eigler <fche@redhat.com> 2004-07-15 Frank Ch. Eigler <fche@redhat.com>
g++/15861 g++/15861
......
...@@ -133,9 +133,6 @@ struct __mf_options ...@@ -133,9 +133,6 @@ struct __mf_options
/* Emit internal tracing message. */ /* Emit internal tracing message. */
unsigned verbose_trace; unsigned verbose_trace;
/* Support multiple threads. XXX: not yet implemented. */
/* unsigned multi_threaded; */
/* Wipe stack/heap objects upon unwind. */ /* Wipe stack/heap objects upon unwind. */
unsigned wipe_stack; unsigned wipe_stack;
unsigned wipe_heap; unsigned wipe_heap;
...@@ -153,6 +150,12 @@ struct __mf_options ...@@ -153,6 +150,12 @@ struct __mf_options
/* Maintain this many stack frames for contexts. */ /* Maintain this many stack frames for contexts. */
unsigned backtrace; unsigned backtrace;
/* Ignore read operations even if mode_check is in effect. */
unsigned ignore_reads;
/* Collect register/unregister timestamps. */
unsigned timestamps;
#ifdef LIBMUDFLAPTH #ifdef LIBMUDFLAPTH
/* Thread stack size. */ /* Thread stack size. */
unsigned thread_stack; unsigned thread_stack;
...@@ -168,9 +171,7 @@ struct __mf_options ...@@ -168,9 +171,7 @@ struct __mf_options
} }
mudflap_mode; mudflap_mode;
/* How to handle a violation. */ /* How to handle a violation. */
enum enum
{ {
viol_nop, /* Return control to application. */ viol_nop, /* Return control to application. */
...@@ -240,7 +241,6 @@ extern enum __mf_state_enum *__mf_state_perthread (); ...@@ -240,7 +241,6 @@ extern enum __mf_state_enum *__mf_state_perthread ();
extern enum __mf_state_enum __mf_state; extern enum __mf_state_enum __mf_state;
#endif #endif
extern int __mf_starting_p; extern int __mf_starting_p;
extern struct __mf_options __mf_opts; extern struct __mf_options __mf_opts;
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
...@@ -355,6 +355,7 @@ ret __mfwrap_ ## fname (__VA_ARGS__) ...@@ -355,6 +355,7 @@ ret __mfwrap_ ## fname (__VA_ARGS__)
#define MF_VALIDATE_EXTENT(value,size,acc,context) \ #define MF_VALIDATE_EXTENT(value,size,acc,context) \
do { \ do { \
if (UNLIKELY (size > 0 && __MF_CACHE_MISS_P (value, size))) \ if (UNLIKELY (size > 0 && __MF_CACHE_MISS_P (value, size))) \
if (acc == __MF_CHECK_WRITE || ! __mf_opts.ignore_reads) \
__mf_check ((void *) (value), (size), acc, "(" context ")"); \ __mf_check ((void *) (value), (size), acc, "(" context ")"); \
} while (0) } while (0)
#define BEGIN_PROTECT(fname, ...) \ #define BEGIN_PROTECT(fname, ...) \
......
...@@ -237,6 +237,7 @@ __mf_set_default_options () ...@@ -237,6 +237,7 @@ __mf_set_default_options ()
__mf_opts.persistent_count = 100; __mf_opts.persistent_count = 100;
__mf_opts.crumple_zone = 32; __mf_opts.crumple_zone = 32;
__mf_opts.backtrace = 4; __mf_opts.backtrace = 4;
__mf_opts.timestamps = 1;
__mf_opts.mudflap_mode = mode_check; __mf_opts.mudflap_mode = mode_check;
__mf_opts.violation_mode = viol_nop; __mf_opts.violation_mode = viol_nop;
__mf_opts.heur_std_data = 1; __mf_opts.heur_std_data = 1;
...@@ -313,6 +314,12 @@ options [] = ...@@ -313,6 +314,12 @@ options [] =
{"abbreviate", {"abbreviate",
"abbreviate repetitive listings", "abbreviate repetitive listings",
set_option, 1, &__mf_opts.abbreviate}, set_option, 1, &__mf_opts.abbreviate},
{"timestamps",
"track object lifetime timestamps",
set_option, 1, &__mf_opts.timestamps},
{"ignore-reads",
"ignore read accesses - assume okay",
set_option, 1, &__mf_opts.ignore_reads},
{"wipe-stack", {"wipe-stack",
"wipe stack objects at unwind", "wipe stack objects at unwind",
set_option, 1, &__mf_opts.wipe_stack}, set_option, 1, &__mf_opts.wipe_stack},
...@@ -917,6 +924,7 @@ __mf_insert_new_object (uintptr_t low, uintptr_t high, int type, ...@@ -917,6 +924,7 @@ __mf_insert_new_object (uintptr_t low, uintptr_t high, int type,
new_obj->name = name; new_obj->name = name;
new_obj->alloc_pc = pc; new_obj->alloc_pc = pc;
#if HAVE_GETTIMEOFDAY #if HAVE_GETTIMEOFDAY
if (__mf_opts.timestamps)
gettimeofday (& new_obj->alloc_time, NULL); gettimeofday (& new_obj->alloc_time, NULL);
#endif #endif
#if LIBMUDFLAPTH #if LIBMUDFLAPTH
...@@ -1157,6 +1165,7 @@ __mfu_unregister (void *ptr, size_t sz, int type) ...@@ -1157,6 +1165,7 @@ __mfu_unregister (void *ptr, size_t sz, int type)
old_obj->deallocated_p = 1; old_obj->deallocated_p = 1;
old_obj->dealloc_pc = (uintptr_t) __builtin_return_address (0); old_obj->dealloc_pc = (uintptr_t) __builtin_return_address (0);
#if HAVE_GETTIMEOFDAY #if HAVE_GETTIMEOFDAY
if (__mf_opts.timestamps)
gettimeofday (& old_obj->dealloc_time, NULL); gettimeofday (& old_obj->dealloc_time, NULL);
#endif #endif
#ifdef LIBMUDFLAPTH #ifdef LIBMUDFLAPTH
...@@ -1843,7 +1852,7 @@ __mf_violation (void *ptr, size_t sz, uintptr_t pc, ...@@ -1843,7 +1852,7 @@ __mf_violation (void *ptr, size_t sz, uintptr_t pc,
{ {
unsigned dead_p; unsigned dead_p;
unsigned num_helpful = 0; unsigned num_helpful = 0;
struct timeval now; struct timeval now = { 0, 0 };
#if HAVE_GETTIMEOFDAY #if HAVE_GETTIMEOFDAY
gettimeofday (& now, NULL); gettimeofday (& now, NULL);
#endif #endif
......
...@@ -39,7 +39,6 @@ Boston, MA 02111-1307, USA. */ ...@@ -39,7 +39,6 @@ Boston, MA 02111-1307, USA. */
#include "splay-tree.h" #include "splay-tree.h"
static void splay_tree_delete_helper (splay_tree, splay_tree_node);
static void splay_tree_splay (splay_tree, splay_tree_key); static void splay_tree_splay (splay_tree, splay_tree_key);
static splay_tree_node splay_tree_splay_helper (splay_tree, static splay_tree_node splay_tree_splay_helper (splay_tree,
splay_tree_key, splay_tree_key,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment