[mudflap] testing fixes

Frank Ch. Eigler fche@redhat.com
Mon May 17 21:17:00 GMT 2004


Hi -

The following patches address some minor problems in libmudflap,
as found during some partially-failing test builds.


+2004-05-17  Frank Ch. Eigler  <fche@redhat.com>
+
+	* tree-mudflap.c (mx_register_decls): Tolerate decl trees resulting
+	from source code with errors.
+

Index: tree-mudflap.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-mudflap.c,v
retrieving revision 2.3
diff -u -p -r2.3 tree-mudflap.c
--- tree-mudflap.c	15 May 2004 23:07:52 -0000	2.3
+++ tree-mudflap.c	17 May 2004 20:13:59 -0000
@@ -743,6 +743,7 @@ mx_register_decls (tree decl, tree *stmt
       if ((TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == PARM_DECL) &&
           (! TREE_STATIC (decl)) && /* auto variable */
           (! DECL_EXTERNAL (decl)) && /* not extern variable */
+          (TREE_TYPE (decl) != error_mark_node) && /* not decl with error */
           (COMPLETE_OR_VOID_TYPE_P (TREE_TYPE (decl))) && /* complete type */
           (! mf_marked_p (decl)) && /* not already processed */
           (TREE_ADDRESSABLE (decl))) /* has address taken */


+2004-05-17  Frank Ch. Eigler  <fche@redhat.com>
+
+	* lib/libmudflap.exp (libmudflap-init): For C++ test cases only,
+	import some build settings from libstdc++-v3 testsuite_flags.
+	* .../cfrags.exp, .../c++frags.exp, .../cthfrags.exp: Corresponding
+	changes to pass test language.
+
+	* mf-runtime.c (__mfu_check): Poison the cache with antidote for
+	quicker mode-nop handling.
+

Index: mf-runtime.c
===================================================================
RCS file: /cvs/gcc/gcc/libmudflap/mf-runtime.c,v
retrieving revision 1.2
diff -u -p -r1.2 mf-runtime.c
--- mf-runtime.c	13 May 2004 06:41:03 -0000	1.2
+++ mf-runtime.c	17 May 2004 20:27:09 -0000
@@ -737,6 +737,8 @@ void __mfu_check (void *ptr, size_t sz, 
   switch (__mf_opts.mudflap_mode)
     {
     case mode_nop:
+      entry->low = MINPTR;
+      entry->high = MAXPTR;
       judgement = 1;
       break;
 
Index: testsuite/lib/libmudflap.exp
===================================================================
RCS file: /cvs/gcc/gcc/libmudflap/testsuite/lib/libmudflap.exp,v
retrieving revision 1.2
diff -u -p -r1.2 libmudflap.exp
--- testsuite/lib/libmudflap.exp	13 May 2004 06:41:04 -0000	1.2
+++ testsuite/lib/libmudflap.exp	17 May 2004 20:27:09 -0000
@@ -21,7 +21,7 @@
 load_lib mfdg.exp
 load_lib libgloss.exp
 
-proc libmudflap-init { compiler } {
+proc libmudflap-init { language } {
     global srcdir
     global outdir
     global blddir
@@ -34,9 +34,17 @@ proc libmudflap-init { compiler } {
     global ld_library_path
     global tool_root_dir
 
-    verbose "libmudflap-init $compiler"
+    switch $language {
+        "c" { set cxx [find_gcc] }
+        "c++" { set cxx [find_g++] }
+        default { error "bad language code $language"; return }
+    }
+
+    verbose -log "libmudflap-init $cxx"
 
     set blddir [lookfor_file [get_multilibs] libmudflap]
+    set cxxblddir [lookfor_file [get_multilibs] libstdc++-v3]
+    set cxxflags_file "${cxxblddir}/scripts/testsuite_flags"
 
     # By default, we assume we want to run program images.
     global dg-do-what-default
@@ -52,7 +60,7 @@ proc libmudflap-init { compiler } {
 
     set ld_library_path "."
     append ld_library_path ":${gccdir}"
-    append ld_library_path ":../../libstdc++-v3/src/.libs"
+    append ld_library_path ":${cxxblddir}/src/.libs"
     if {[is_remote host] == 0} {
 	foreach i "[exec ${gccdir}/xgcc --print-multi-lib]" {
 	    set mldir ""
@@ -63,17 +71,28 @@ proc libmudflap-init { compiler } {
 	    }
 	    if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] == 1 } {
 		append ld_library_path ":${gccdir}/${mldir}"
-		append ld_library_path ":../../libstdc++-v3/${mldir}/src/.libs"
 	    }
 	}
     }
     append ld_library_path ":${blddir}/.libs"
-    set cxx $compiler
-    set libs "-L../.libs -L../../libstdc++-v3/src/.libs -L../../../gcc"
+
+    set libs "-L../.libs -L../../../gcc"
     set cxxflags "-ggdb3 -DDEBUG_ASSERT"
     set includes "-I${srcdir} -I.."
 
-    verbose "ld_library_path=$ld_library_path"
+    if {$language == "c++"} {
+        if {[file exists $cxxflags_file]} then {
+            set includes "${includes} [exec sh $cxxflags_file --build-includes]"
+            set cxxflags "${cxxflags} [exec sh $cxxflags_file --cxxflags]"
+            # c++ libs are included by --build-cxx below
+            set cxx "[exec sh $cxxflags_file --build-cxx]"
+        } else {
+            lappend libs "-L../../libstdc++-v3/src/.libs"
+            lappend includes "-I../../libstdc++-v3/include"
+        }
+    }
+
+    verbose -log "ld_library_path=$ld_library_path"
     setenv  LD_LIBRARY_PATH     $ld_library_path
     setenv  SHLIB_PATH          $ld_library_path
     setenv  LD_LIBRARYN32_PATH  $ld_library_path
@@ -212,9 +231,9 @@ proc libmudflap-list-sourcefiles { } {
 	set res {}
 	foreach w $sfiles {
 	    if [regexp "wchar_t" $w] {
-		verbose "element out list is $w"
+		verbose -log "element out list is $w"
 	    } else {
-		verbose "element in list is $w"
+		verbose -log "element in list is $w"
 		lappend res $w
 	    }
 	}
Index: testsuite/libmudflap.c/cfrags.exp
===================================================================
RCS file: /cvs/gcc/gcc/libmudflap/testsuite/libmudflap.c/cfrags.exp,v
retrieving revision 1.2
diff -u -p -r1.2 cfrags.exp
--- testsuite/libmudflap.c/cfrags.exp	13 May 2004 06:41:04 -0000	1.2
+++ testsuite/libmudflap.c/cfrags.exp	17 May 2004 20:27:09 -0000
@@ -1,5 +1,5 @@
 
-libmudflap-init [find_gcc]
+libmudflap-init c
 
 dg-init
 
Index: testsuite/libmudflap.c++/c++frags.exp
===================================================================
RCS file: /cvs/gcc/gcc/libmudflap/testsuite/libmudflap.c++/c++frags.exp,v
retrieving revision 1.2
diff -u -p -r1.2 c++frags.exp
--- testsuite/libmudflap.c++/c++frags.exp	13 May 2004 06:41:05 -0000	1.2
+++ testsuite/libmudflap.c++/c++frags.exp	17 May 2004 20:27:09 -0000
@@ -1,5 +1,5 @@
 
-libmudflap-init [find_g++]
+libmudflap-init c++
 
 dg-init
 
Index: testsuite/libmudflap.cth/cthfrags.exp
===================================================================
RCS file: /cvs/gcc/gcc/libmudflap/testsuite/libmudflap.cth/cthfrags.exp,v
retrieving revision 1.2
diff -u -p -r1.2 cthfrags.exp
--- testsuite/libmudflap.cth/cthfrags.exp	13 May 2004 06:41:05 -0000	1.2
+++ testsuite/libmudflap.cth/cthfrags.exp	17 May 2004 20:27:09 -0000
@@ -1,5 +1,5 @@
 
-libmudflap-init [find_gcc]
+libmudflap-init c
 
 dg-init
 



More information about the Gcc-patches mailing list