mf-runtime.c (__mfu_check): Respect ignore_reads configuration.

2005-03-17  Frank Ch. Eigler  <fche@redhat.com>

	* mf-runtime.c (__mfu_check): Respect ignore_reads configuration.
	* testsuite/libmudflap.c/{pass56,fail39}-frag.c: New tests.

From-SVN: r96620
This commit is contained in:
Frank Ch. Eigler 2005-03-17 17:20:49 +00:00 committed by Frank Ch. Eigler
parent 0c103070f3
commit 0ee4e76d11
4 changed files with 42 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2005-03-17 Frank Ch. Eigler <fche@redhat.com>
* mf-runtime.c (__mfu_check): Respect ignore_reads configuration.
* testsuite/libmudflap.c/{pass56,fail39}-frag.c: New tests.
2005-02-13 Frank Ch. Eigler <fche@redhat.com>
PR mudflap/19319

View file

@ -1,5 +1,5 @@
/* Mudflap: narrow-pointer bounds-checking by tree rewriting.
Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by Frank Ch. Eigler <fche@redhat.com>
and Graydon Hoare <graydon@redhat.com>
Splay Tree code originally by Mark Mitchell <mark@markmitchell.com>,
@ -813,6 +813,8 @@ void __mfu_check (void *ptr, size_t sz, int type, const char *location)
if (UNLIKELY (__mf_opts.sigusr1_report))
__mf_sigusr1_respond ();
if (UNLIKELY (__mf_opts.ignore_reads && type == 0))
return;
TRACE ("check ptr=%p b=%u size=%lu %s location=`%s'\n",
ptr, entry_idx, (unsigned long)sz,

View file

@ -0,0 +1,20 @@
#include <stdio.h>
#include <stdlib.h>
int main ()
{
volatile int *k = (int *) malloc (sizeof (int));
volatile int l;
if (k == NULL) abort ();
*k = 5;
free ((void *) k);
__mf_set_options ("-ignore-reads");
l = *k; /* Should not trip, even though memory region just freed. */
__mf_set_options ("-no-ignore-reads");
l = *k; /* Should trip now. */
return 0;
}
/* { dg-output "mudflap violation 1.*check/read.*" } */
/* { dg-output "Nearby object 1.*" } */
/* { dg-output "mudflap dead object.*malloc region.*" } */
/* { dg-do run { xfail *-*-* } } */

View file

@ -0,0 +1,14 @@
#include <stdio.h>
#include <stdlib.h>
int main ()
{
volatile int *k = (int *) malloc (sizeof (int));
volatile int l;
if (k == NULL) abort ();
*k = 5;
free ((void *) k);
__mf_set_options ("-ignore-reads");
l = *k; /* Should not trip, even though memory region just freed. */
return 0;
}