aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg McGary <greg@mcgary.org>2005-01-02 22:24:50 +0000
committerGreg McGary <greg@mcgary.org>2005-01-02 22:24:50 +0000
commit822e2fe6be5887e3172457b3656c6856d7fd95a1 (patch)
treea1789ecd62d4476eaac6bade96f7be70f76b84ff
parent54f3d723245bfe08bac15ef26448112b772877d8 (diff)
* mf-impl.h (uintptr_t): Get typedef via stdint.h or define explicitly.
* mf-runtime.h: New file, replaces mf-runtime.h.in. * configure.ac (AC_CONFIG_FILES): mf-runtime.h is no longer generated. * Makefile.in: Ditto. * testsuite/lib/libmudflap.exp: Add -I${srcdir}/.. to get mf-runtime.h * testsuite/libmudflap.c/pass32-frag.c: s/uintptr_t/__mf_uintptr_t/ * testsuite/libmudflap.c/fail36-frag.c: New test. * testsuite/libmudflap.c/fail37-frag.c: New test. * testsuite/libmudflap.c/fail38-frag.c: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@92815 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libmudflap/ChangeLog12
-rw-r--r--libmudflap/Makefile.in5
-rwxr-xr-xlibmudflap/configure3
-rw-r--r--libmudflap/configure.ac2
-rw-r--r--libmudflap/mf-impl.h7
-rw-r--r--libmudflap/mf-runtime.h (renamed from libmudflap/mf-runtime.h.in)28
-rw-r--r--libmudflap/testsuite/lib/libmudflap.exp2
-rw-r--r--libmudflap/testsuite/libmudflap.c/fail36-frag.c23
-rw-r--r--libmudflap/testsuite/libmudflap.c/fail37-frag.c22
-rw-r--r--libmudflap/testsuite/libmudflap.c/fail38-frag.c29
-rw-r--r--libmudflap/testsuite/libmudflap.c/pass32-frag.c2
11 files changed, 107 insertions, 28 deletions
diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog
index d2fc9ee45aa..ace95ce6062 100644
--- a/libmudflap/ChangeLog
+++ b/libmudflap/ChangeLog
@@ -1,3 +1,15 @@
+2004-01-02 Greg McGary <greg@mcgary.org>
+
+ * mf-impl.h (uintptr_t): Get typedef via stdint.h or define explicitly.
+ * mf-runtime.h: New file, replaces mf-runtime.h.in.
+ * configure.ac (AC_CONFIG_FILES): mf-runtime.h is no longer generated.
+ * Makefile.in: Ditto.
+ * testsuite/lib/libmudflap.exp: Add -I${srcdir}/.. to get mf-runtime.h
+ * testsuite/libmudflap.c/pass32-frag.c: s/uintptr_t/__mf_uintptr_t/
+ * testsuite/libmudflap.c/fail36-frag.c: New test.
+ * testsuite/libmudflap.c/fail37-frag.c: New test.
+ * testsuite/libmudflap.c/fail38-frag.c: New test.
+
2004-12-08 Kelley Cook <kcook@gcc.gnu.org>
* Makefile.am: Add ../config to ACLOCAL_AMFLAGS.
diff --git a/libmudflap/Makefile.in b/libmudflap/Makefile.in
index 84506f83f8b..b251f2a8ccc 100644
--- a/libmudflap/Makefile.in
+++ b/libmudflap/Makefile.in
@@ -46,7 +46,7 @@ DIST_COMMON = $(am__configure_deps) $(include_HEADERS) \
$(srcdir)/../ltmain.sh $(srcdir)/../missing \
$(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(srcdir)/mf-runtime.h.in $(top_srcdir)/configure ChangeLog
+ $(top_srcdir)/configure ChangeLog
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/gcc-version.m4 \
@@ -57,7 +57,6 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = mf-runtime.h
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -347,8 +346,6 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
distclean-hdr:
-rm -f config.h stamp-h1
-mf-runtime.h: $(top_builddir)/config.status $(srcdir)/mf-runtime.h.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(toolexeclibdir)" || $(mkdir_p) "$(DESTDIR)$(toolexeclibdir)"
diff --git a/libmudflap/configure b/libmudflap/configure
index d96a46ad944..6bcb2534ef4 100755
--- a/libmudflap/configure
+++ b/libmudflap/configure
@@ -6854,7 +6854,7 @@ else
multilib_arg=
fi
- ac_config_files="$ac_config_files Makefile testsuite/Makefile testsuite/mfconfig.exp mf-runtime.h"
+ ac_config_files="$ac_config_files Makefile testsuite/Makefile testsuite/mfconfig.exp"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -7433,7 +7433,6 @@ do
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"testsuite/Makefile" ) CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
"testsuite/mfconfig.exp" ) CONFIG_FILES="$CONFIG_FILES testsuite/mfconfig.exp" ;;
- "mf-runtime.h" ) CONFIG_FILES="$CONFIG_FILES mf-runtime.h" ;;
"default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
"depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
diff --git a/libmudflap/configure.ac b/libmudflap/configure.ac
index 794fa9bd621..6a771f6bc93 100644
--- a/libmudflap/configure.ac
+++ b/libmudflap/configure.ac
@@ -231,5 +231,5 @@ else
multilib_arg=
fi
-AC_CONFIG_FILES([Makefile testsuite/Makefile testsuite/mfconfig.exp mf-runtime.h])
+AC_CONFIG_FILES([Makefile testsuite/Makefile testsuite/mfconfig.exp])
AC_OUTPUT
diff --git a/libmudflap/mf-impl.h b/libmudflap/mf-impl.h
index 55706c13dba..ee582ea7bce 100644
--- a/libmudflap/mf-impl.h
+++ b/libmudflap/mf-impl.h
@@ -1,6 +1,6 @@
/* Implementation header for mudflap runtime library.
Mudflap: narrow-pointer bounds-checking by tree rewriting.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Frank Ch. Eigler <fche@redhat.com>
and Graydon Hoare <graydon@redhat.com>
@@ -43,6 +43,11 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#error "Cannot build libmudflapth without pthread.h."
#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#else
+typedef __mf_uintptr_t uintptr_t;
+#endif
/* Private definitions related to mf-runtime.h */
diff --git a/libmudflap/mf-runtime.h.in b/libmudflap/mf-runtime.h
index 0f8f9e3e2b1..b008883c43f 100644
--- a/libmudflap/mf-runtime.h.in
+++ b/libmudflap/mf-runtime.h
@@ -3,17 +3,9 @@
#ifndef MF_RUNTIME_H
#define MF_RUNTIME_H
-#if @MF_HAVE_STDINT_H@ /* autoconf HAVE_STDINT_H */
-#include <stdint.h>
-#endif
-#include <sys/types.h>
-#if ! @MF_HAVE_UINTPTR_T@
-typedef unsigned long uintptr_t;
-#define HAVE_UINTPTR_T 1
-/* Define this here, in case an autoconf application was run
- without CFLAGS=-fmudflap but is being compiled with -fmudflap. */
-#endif
-
+typedef void *__mf_ptr_t;
+typedef unsigned int __mf_uintptr_t __attribute__ ((__mode__ (__pointer__)));
+typedef __SIZE_TYPE__ __mf_size_t;
/* Global declarations used by instrumentation. When _MUDFLAP is
defined, these have been auto-declared by the compiler and we
@@ -22,9 +14,9 @@ typedef unsigned long uintptr_t;
library's, but the C++ front end has no mechanism for allowing
the re-definition of a structure type). */
#ifndef _MUDFLAP
-struct __mf_cache { uintptr_t low; uintptr_t high; };
+struct __mf_cache { __mf_uintptr_t low; __mf_uintptr_t high; };
extern struct __mf_cache __mf_lookup_cache [];
-extern uintptr_t __mf_lc_mask;
+extern __mf_uintptr_t __mf_lc_mask;
extern unsigned char __mf_lc_shift;
#endif
@@ -57,14 +49,14 @@ extern unsigned char __mf_lc_shift;
extern "C" {
#endif
-extern void __mf_check (void *ptr, size_t sz, int type, const char *location)
+extern void __mf_check (void *ptr, __mf_size_t sz, int type, const char *location)
__attribute((nothrow));
-extern void __mf_register (void *ptr, size_t sz, int type, const char *name)
+extern void __mf_register (void *ptr, __mf_size_t sz, int type, const char *name)
__attribute((nothrow));
-extern void __mf_unregister (void *ptr, size_t sz, int type)
+extern void __mf_unregister (void *ptr, __mf_size_t sz, int type)
__attribute((nothrow));
-extern unsigned __mf_watch (void *ptr, size_t sz);
-extern unsigned __mf_unwatch (void *ptr, size_t sz);
+extern unsigned __mf_watch (void *ptr, __mf_size_t sz);
+extern unsigned __mf_unwatch (void *ptr, __mf_size_t sz);
extern void __mf_report ();
extern int __mf_set_options (const char *opts);
diff --git a/libmudflap/testsuite/lib/libmudflap.exp b/libmudflap/testsuite/lib/libmudflap.exp
index 8c604e1bc86..4b80716ebbf 100644
--- a/libmudflap/testsuite/lib/libmudflap.exp
+++ b/libmudflap/testsuite/lib/libmudflap.exp
@@ -83,7 +83,7 @@ proc libmudflap-init { language } {
set libs "-L${blddir}/.libs"
set cxxflags "-ggdb3 -DDEBUG_ASSERT"
- set includes "-I${srcdir} -I.."
+ set includes "-I${srcdir} -I${srcdir}/.. -I.."
if {$language == "c++"} {
if {[file exists $cxxflags_file]} then {
diff --git a/libmudflap/testsuite/libmudflap.c/fail36-frag.c b/libmudflap/testsuite/libmudflap.c/fail36-frag.c
new file mode 100644
index 00000000000..af6851c1d23
--- /dev/null
+++ b/libmudflap/testsuite/libmudflap.c/fail36-frag.c
@@ -0,0 +1,23 @@
+#include <stdlib.h>
+
+struct k
+{
+ int p;
+ struct {
+ int m : 31;
+ } q;
+};
+
+int
+main ()
+{
+ volatile struct k *l = malloc (sizeof (int)); /* make it only big enough for k.p */
+ /* Confirm that we instrument this nested construct
+ BIT_FIELD_REF(COMPONENT_REF(INDIRECT_REF)). */
+ l->q.m = 5;
+ return 0;
+}
+/* { dg-output "mudflap violation 1.*" } */
+/* { dg-output "Nearby object.*" } */
+/* { dg-output "mudflap object.*" } */
+/* { dg-do run { xfail *-*-* } } */
diff --git a/libmudflap/testsuite/libmudflap.c/fail37-frag.c b/libmudflap/testsuite/libmudflap.c/fail37-frag.c
new file mode 100644
index 00000000000..41ce4b91e05
--- /dev/null
+++ b/libmudflap/testsuite/libmudflap.c/fail37-frag.c
@@ -0,0 +1,22 @@
+typedef struct
+{
+ short f : 3;
+} small;
+
+struct
+{
+ int i;
+ small s[4];
+} x;
+
+main ()
+{
+ int i;
+ for (i = 0; i < 5; i++)
+ x.s[i].f = 0;
+ exit (0);
+}
+/* { dg-output "mudflap violation 1.*" } */
+/* { dg-output "Nearby object.*" } */
+/* { dg-output "mudflap object.* x.*" } */
+/* { dg-do run { xfail *-*-* } } */
diff --git a/libmudflap/testsuite/libmudflap.c/fail38-frag.c b/libmudflap/testsuite/libmudflap.c/fail38-frag.c
new file mode 100644
index 00000000000..9667e213418
--- /dev/null
+++ b/libmudflap/testsuite/libmudflap.c/fail38-frag.c
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+int main ()
+{
+struct a {
+ int x;
+ int y;
+ int z : 10;
+};
+
+struct b {
+ int x;
+ int y;
+};
+
+volatile struct b k;
+volatile struct a *p;
+
+p = (struct a*) &k;
+
+p->z = 'q';
+
+return 0;
+}
+/* { dg-output "mudflap violation 1.*" } */
+/* { dg-output "Nearby object 1.*" } */
+/* { dg-output "mudflap object.*.main. k.*" } */
+/* { dg-do run { xfail *-*-* } } */
diff --git a/libmudflap/testsuite/libmudflap.c/pass32-frag.c b/libmudflap/testsuite/libmudflap.c/pass32-frag.c
index 83f121d4fa2..38468642328 100644
--- a/libmudflap/testsuite/libmudflap.c/pass32-frag.c
+++ b/libmudflap/testsuite/libmudflap.c/pass32-frag.c
@@ -13,6 +13,6 @@ int main ()
{
struct foo k;
char *n = get_z (& k);
-srand ((int)(uintptr_t) n); /* use the pointer value */
+srand ((int)(__mf_uintptr_)t n); /* use the pointer value */
return 0;
}