public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: scox@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Merge branch 'master' of ssh://sources.redhat.com/git/frysk
Date: Sat, 10 Nov 2007 00:34:00 -0000	[thread overview]
Message-ID: <20071110003427.21507.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  15b8b363369e0940cf83a199162a1e4023bf22e5 (commit)
       via  691f275a213a2eaddb4689b83fee7bfdd8d1842c (commit)
       via  541b4186e931dab4246e5dc99efa811c06945822 (commit)
      from  3b9805588cfd98e0f769f691365f9d55b7204a01 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 15b8b363369e0940cf83a199162a1e4023bf22e5
Merge: 691f275a213a2eaddb4689b83fee7bfdd8d1842c 3b9805588cfd98e0f769f691365f9d55b7204a01
Author: Stan Cox <scox@redhat.com>
Date:   Fri Nov 9 19:32:55 2007 -0500

    Merge branch 'master' of ssh://sources.redhat.com/git/frysk

commit 691f275a213a2eaddb4689b83fee7bfdd8d1842c
Merge: 541b4186e931dab4246e5dc99efa811c06945822 8b867fb62647409597fd921ec3e0888e53976190
Author: Stan Cox <scox@redhat.com>
Date:   Fri Nov 9 18:02:57 2007 -0500

    Merge branch 'master' of ssh://sources.redhat.com/git/frysk

commit 541b4186e931dab4246e5dc99efa811c06945822
Author: Stan Cox <scox@redhat.com>
Date:   Fri Nov 9 18:02:09 2007 -0500

    Clean up array display in anticipation of turning on TestTypeEntryValue.
    
    * gen-type-expect-tests.py (j.prologue): Throttle ptr tests for now.
    * gen-type-funit-tests.py (c.add): Filter quotes, new lines, member "."
    (main): Handle char specially.  Match result formatting to fhpd
    * ArrayType.java (toPrint): Do multiple dimension here.  Move
    vector handling...
    (toPrintVector): ...here.
    expectations.

-----------------------------------------------------------------------

Summary of changes:
 frysk-core/frysk/debuginfo/ChangeLog               |    4 +
 .../frysk/debuginfo/gen-type-expect-tests.py       |   14 ++--
 frysk-core/frysk/pkglibdir/ChangeLog               |    6 ++
 frysk-core/frysk/pkglibdir/gen-type-funit-tests.py |   58 +++++++++------
 frysk-core/frysk/value/ArrayType.java              |   81 ++++++++++++++-----
 frysk-core/frysk/value/ChangeLog                   |    6 ++
 6 files changed, 117 insertions(+), 52 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/debuginfo/ChangeLog b/frysk-core/frysk/debuginfo/ChangeLog
index 0f09d35..83e86a8 100644
--- a/frysk-core/frysk/debuginfo/ChangeLog
+++ b/frysk-core/frysk/debuginfo/ChangeLog
@@ -1,3 +1,7 @@
+2007-11-09  Stan Cox  <scox@redhat.com>
+
+	* gen-type-expect-tests.py (j.prologue): Throttle ptr tests for now.
+
 2007-11-09  Sami Wagiaalla  <swagiaal@redhat.com>
 
 	* TestTypeEntry.java (testClassWithStaticMembers): New test.
diff --git a/frysk-core/frysk/debuginfo/gen-type-expect-tests.py b/frysk-core/frysk/debuginfo/gen-type-expect-tests.py
index 7b6f526..4d748ec 100644
--- a/frysk-core/frysk/debuginfo/gen-type-expect-tests.py
+++ b/frysk-core/frysk/debuginfo/gen-type-expect-tests.py
@@ -114,7 +114,6 @@ public class %s extends TestLib {
                      System.out.println("Error: Cannot find " + expect[i].symbol);
 		 assertNotNull(varDie);
 		 varType = typeEntry.getType(varDie.getType());
-                    // System.out.println("Expect: " + expect[i].symbol + "\\n'" + expect[i].output + "'\\nGot:\\n'" + valueString + "'");
 		 assertNotNull(varType);
 		 assertEquals(myName + expect[i].symbol, expect[i].output, varType.toPrint());
 	     }
@@ -128,11 +127,9 @@ public class %s extends TestLib {
 	    ByteArrayOutputStream baos = new ByteArrayOutputStream(32);
 	    PrintWriter pw = new PrintWriter(baos, true);
 	    for (int i = 0; i < expect.length; i++) {
-                // ??? cache address of x so &x can be checked
-	        if (expect[i].output.indexOf("&") >= 0)
-		    continue;
-                // ??? ignore char for now
-	        if (expect[i].symbol.indexOf("char_") >= 0)
+                // ??? cache address of x so &x can be checked?
+	        if (expect[i].output.indexOf("&") >= 0
+                    || expect[i].symbol.indexOf("ptr") >= 0)
 		    continue;
                 DwarfDie varDie = die.getScopeVar(allDies, expect[i].symbol);
                 if (varDie == null)
@@ -143,7 +140,9 @@ public class %s extends TestLib {
                 value.toPrint(pw, task.getMemory(), Format.NATURAL);
                 pw.flush();
                 String valueString = baos.toString();
-//                System.out.println("Expect: " + expect[i].symbol + "\\n'" + expect[i].output + "'\\nGot:\\n'" + valueString + "'");
+                // System.out.println("Expect: " + expect[i].symbol +
+                //     "\\n'" + expect[i].output + "'\\nGot:\\n'" +
+                //     valueString + "'" + " " + value.getType());
                 assertEquals(myName + expect[i].symbol, expect[i].output, valueString);
                 baos.reset();
             }
@@ -169,6 +168,7 @@ public class %s extends TestLib {
 
     def start_test(self, tool, name):
         print("    public void test%s () {" % (name))
+#        if (tool == "value" and (name == "Enum" or name == "Struct")):
         if (tool == "value"):
             print('''
         if (unresolved(5235))
diff --git a/frysk-core/frysk/pkglibdir/ChangeLog b/frysk-core/frysk/pkglibdir/ChangeLog
index f4de0b2..5901a1e 100644
--- a/frysk-core/frysk/pkglibdir/ChangeLog
+++ b/frysk-core/frysk/pkglibdir/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-09  Stan Cox  <scox@redhat.com>
+
+	* gen-type-funit-tests.py (c.add): Filter quotes, new lines, member "."
+	(main): Handle char specially.  Match result formatting to fhpd
+	expectations. 
+
 2007-11-05  Sami Wagiaalla  <swagiaal@redhat.com>
 
 	* funit-cpp-scopes-class-static.cxx: Removed print statement.
diff --git a/frysk-core/frysk/pkglibdir/gen-type-funit-tests.py b/frysk-core/frysk/pkglibdir/gen-type-funit-tests.py
index 8a2f744..6150c40 100644
--- a/frysk-core/frysk/pkglibdir/gen-type-funit-tests.py
+++ b/frysk-core/frysk/pkglibdir/gen-type-funit-tests.py
@@ -21,7 +21,8 @@ class c:
             self.write(" = " + initial)
         self.c_file.write(";\n")
         self.c_file.write("// Name: " + var + var_suffix + "\n")
-        self.c_file.write("// Value: " + initial + "\n")
+        # Escape quotes and new lines, remove struct member "."
+        self.c_file.write("// Value: " + initial.replace('"','\\"').replace('\n',"\\n").replace('{.','{').replace(' .',' ') + "\n")
         self.c_file.write("// Type: ")
         type += type_arr
         self.c_file.write(type.replace("\n", "\n// Type: "))
@@ -79,14 +80,14 @@ for t in sys.argv:
 # base types we generate variables for.  used to index into limits map
 base_types=('char','short int','int','long int','long long int','float','double')
 # Used for variable initialization
-limits={'char' : {'min' : '41', 'max' : '176'},
+limits={'char' : {'min' : "'!'", 'max' : "'~'"},
         'short int' : {'min' : '-32767', 'max' : '32767'},
-        'int' : {'min' : '-2147483647', 'max' : '2147483647'},
-        'long int' : {'min' : '-2147483647L', 'max' : '2147483647L'},
-        'long long int' : {'min' : '-9223372036854775807LL', 
-                           'max' :  '9223372036854775807LL'},
-        'float' : {'min' : '1.175494E-38', 'max' : '3.402823E+38'},
-        'double' : {'min' : '2.225074E-308', 'max' : '1.797693E+308'}
+        'int' : {'min' : '-65536', 'max' : '65536'},
+        'long int' : {'min' : '-65536', 'max' : '65536'},
+        'long long int' : {'min' : '-65536', 
+                           'max' :  '65536'},
+        'float' : {'min' : '1.1754939E-38', 'max' : '3.402823E38'},
+        'double' : {'min' : '2.225074E-308', 'max' : '1.797693E308'}
 }
 type_modifiers=('const','volatile')
 
@@ -136,26 +137,37 @@ for t in base_types:
     ts = t.replace(" ","_")
     min = limits[t]['min']
     max = limits[t]['max']
-    c_file.add(t, "arr_%s" % ts, "{%s,%s}" % (min,max), " [2]")
-    c_file.add(t, "arr_arr_%s" % ts, "{{%s,%s},{%s,%s}}" % (min,max,min,max), " [2][2]")
-    c_file.add(t, "arr_arr_arr_%s" % ts, "{{{%s,%s},{%s,%s}},{{%s,%s},{%s,%s}}}" % (min,max,min,max,min,max,min,max), " [2][2][2]")
-    c_file.add("%s *" % t, "arr_ptr_arr_arr_%s" % ts, "{arr_arr_%s[0],arr_arr_%s[1]}" % (ts,ts), " [2]")
-    c_file.add("%s (*" % t, "ptr_arr_%s" % ts, "&arr_%s" % ts, ")[2]")
+    if (t == "char"):
+        char1 = min.strip("'")
+        char2 = max.strip("'")
+        c_file.add(t, "arr_%s" % ts, '"%s%s"' % (char1,char2), " [2]")
+        c_file.add(t, "arr_arr_%s" % ts, '{{"%s%s"},{"%s%s"}}' % (char1,char2,char1,char2), " [2][2]")
+        c_file.add(t, "arr_arr_arr_%s" % ts, '{{{"%s%s"},{"%s%s"}},{{"%s%s"},{"%s%s"}}}' % (char1,char2,char1,char2,char1,char2,char1,char2), " [2][2][2]")
+        c_file.add("%s *" % t, "arr_ptr_arr_arr_%s" % ts, "{arr_arr_%s[0],arr_arr_%s[1]}" % (ts,ts), " [2]")
+        c_file.add("%s (*" % t, "ptr_arr_%s" % ts, "&arr_%s" % ts, ")[2]")
+    else:
+        c_file.add(t, "arr_%s" % ts, "{%s,%s}" % (min,max), " [2]")
+        c_file.add(t, "arr_arr_%s" % ts, "{{%s,%s},{%s,%s}}" % (min,max,min,max), " [2][2]")
+        c_file.add(t, "arr_arr_arr_%s" % ts, "{{{%s,%s},{%s,%s}},{{%s,%s},{%s,%s}}}" % (min,max,min,max,min,max,min,max), " [2][2][2]")
+        c_file.add(t, "arr_arr_arr_arr_%s" % ts, 
+                   "{{{{%s,%s},{%s,%s},{%s,%s}},{{%s,%s},{%s,%s},{%s,%s}}},{{{%s,%s},{%s,%s},{%s,%s}},{{%s,%s},{%s,%s},{%s,%s}}},{{{%s,%s},{%s,%s},{%s,%s}},{{%s,%s},{%s,%s},{%s,%s}}}}" % (min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max,min,max), " [3][2][3][2]")
+        c_file.add("%s *" % t, "arr_ptr_arr_arr_%s" % ts, "{arr_arr_%s[0],arr_arr_%s[1]}" % (ts,ts), " [2]")
+        c_file.add("%s (*" % t, "ptr_arr_%s" % ts, "&arr_%s" % ts, ")[2]")
 
 c_file.write("\nstatic int one = 1, two = 2, three = 3, four = 4;\n")
 
-c_file.add("struct {\n  int int_var;\n}", "arr_struct", "{{1},{2}}", " [2]")
-c_file.add("union {\n  int int_var;\n  float fl;\n}", "arr_union", "{{1},{2}}", " [2]")
-c_file.add("struct {\n  int int_var;\n}", "arr_arr_struct", "{{{1},{2}},{{3},{4}}}", " [2][2]")
-c_file.add("union {\n  int int_var;\n  float float_var;\n}", "arr_arr_union", "{{{1},{2}},{{3},{4}}}", " [2][2]")
+c_file.add("struct {\n  int int_var;\n}", "arr_struct", "{{.int_var=1,\n},{.int_var=2,\n}}", " [2]")
+c_file.add("union {\n  int int_var;\n  float fl;\n}", "arr_union", "{{.int_var=1,\n .fl=1.4012985E-45,\n},{.int_var=1073741824,\n .fl=2.0,\n}}", " [2]")
+c_file.add("struct {\n  int int_var;\n}", "arr_arr_struct", "{{{.int_var=1,\n},{.int_var=2,\n}},{{.int_var=3,\n},{.int_var=4,\n}}}", " [2][2]")
+c_file.add("union {\n  int int_var;\n  float float_var;\n}", "arr_arr_union", "{{{.int_var=1,\n .float_var=1.4012985E-45,\n},{.int_var=2,\n .float_var=2.802597E-45,\n}},{{.int_var=3,\n .float_var=4.2038954E-45,\n},{.int_var=4,\n .float_var=5.605194E-45,\n}}}", " [2][2]")
 c_file.add("int *", "arr_arr_ptr", "{{&one,&two},{&three,&four}}", " [2][2]")
-c_file.add("struct {\n  int arr_int[2];\n}", "arr_struct_arr_int", "{{{1, 2}}, {{3, 4}}}", " [2]")
-c_file.add("struct {\n  struct {\n    int int_var;\n  } struct_a;\n}", "arr_struct_struct", "{{{1}},{{2}}}", " [2]")
-c_file.add("struct {\n  union {\n    int int_var;\n    float float_var;\n  } struct_a;\n}", "arr_struct_union", "{{{1}},{{2}}}", " [2]")
+c_file.add("struct {\n  int arr_int[2];\n}", "arr_struct_arr_int", "{{.arr_int={1,2},\n},{.arr_int={3,4},\n}}", " [2]")
+c_file.add("struct {\n  struct {\n    int int_var;\n  } struct_a;\n}", "arr_struct_struct", "{{.struct_a={.int_var=1,\n},\n},{.struct_a={.int_var=2,\n},\n}}", " [2]")
+c_file.add("struct {\n  union {\n    int int_var;\n    float float_var;\n  } struct_a;\n}", "arr_struct_union", "{{.struct_a={.int_var=1,\n .float_var=1.4012985E-45,\n},\n},{.struct_a={.int_var=2,\n .float_var=2.802597E-45,\n},\n}}", " [2]")
 c_file.add("struct {\n  int * ptr;\n}", "arr_struct_ptr", "{{&one},{&two}}", " [2]")
-c_file.add("union {\n  int arr_int[2];\n  float arr_float[2];\n}", "arr_union_arr_int", "{{{1, 2}}, {{3, 4}}}", " [2]")
-c_file.add("union {\n  struct {\n    int int_var;\n  } struct_a;\n}", "arr_union_struct", "{{{1}}, {{2}}}", " [2]")
-c_file.add("union {\n  union {\n    int int_var;\n  } union_a;\n}", "arr_union_union", "{{{1}}, {{2}}}", " [2]")
+c_file.add("union {\n  int arr_int[2];\n  float arr_float[2];\n}", "arr_union_arr_int", "{{.arr_int={1,2},\n .arr_float={1.4012985E-45,2.802597E-45},\n},{.arr_int={3,4},\n .arr_float={4.2038954E-45,5.605194E-45},\n}}", " [2]")
+c_file.add("union {\n  struct {\n    int int_var;\n  } struct_a;\n}", "arr_union_struct", "{{.struct_a={.int_var=1,\n},\n},{.struct_a={.int_var=2,\n},\n}}", " [2]")
+c_file.add("union {\n  union {\n    int int_var;\n  } union_a;\n}", "arr_union_union", "{{.union_a={.int_var=1,\n},\n},{.union_a={.int_var=2,\n},\n}}", " [2]")
 c_file.add("union {\n  int * ptr;\n}", "arr_union_ptr", "{{&one}, {&two}}", " [2]", )
 # ??? fails
 # c_file.add("int (*", "arr_ptr_arr", "{&arr_int, &arr_int}", " [2])[2]")
diff --git a/frysk-core/frysk/value/ArrayType.java b/frysk-core/frysk/value/ArrayType.java
index 6eb0893..9505874 100644
--- a/frysk-core/frysk/value/ArrayType.java
+++ b/frysk-core/frysk/value/ArrayType.java
@@ -166,39 +166,76 @@ public class ArrayType
 	Location loc = PieceLocation.createSimpleLoc
 		       (var1.getLocation().getAddress(), type.getSize(), taskMem);
 	return new Value (type, loc);  
-    }    
-    
+    }
+
     void toPrint(PrintWriter writer, Location location,
 		 ByteBuffer memory, Format format) {
-	if (type instanceof CharType) {
-	    // Treat it as a character string
+	// XXX: Add dimension start/end instead of assuming {}
+	for (int i = 0; i < dimension.length - 1; i++)
+	    writer.print("{");
+	for (ArrayIterator e = new ArrayIterator(location); e.hasNext(); ) {
+	    if (e.idx > 0) {
+		for (int i = 0; i < stride.length - 2; i++)
+		    if ((e.idx % stride[i]) == 0)
+			writer.print("}");
+		if ((e.idx % stride[stride.length - 2]) == 0)
+		    writer.print(",");
+		for (int i = 0; i < stride.length - 2; i++)
+		    if ((e.idx % stride[i]) == 0)
+			writer.print("{");
+	    }
+	    if (! toPrintVector(writer, type, e, memory, format))
+	      break;
+	}
+	for (int i = 0; i < dimension.length - 1; i++)
+	    writer.print("}");
+    }
+
+    private boolean toPrintVector(PrintWriter writer, Type type, ArrayIterator e,
+	    ByteBuffer memory, Format format)
+    {
+	boolean isVector = dimension.length == 1;
+	int vectorLength = dimension[dimension.length - 1];
+	boolean haveCharType;
+	boolean noNullByte = true;
+	if (type instanceof CharType)
+	    haveCharType = true;
+	else
+	    haveCharType = false;
+	
+	if (haveCharType) {
+	    if (! isVector)
+		writer.print("{");
 	    writer.print("\"");
-	    for (ArrayIterator e = new ArrayIterator(location);
-		 e.hasNext(); ) {
-		Location l = (Location)e.next();
+	}
+	else
+	    writer.print("{");
+
+	for (int i = 0; i < vectorLength; i++) {
+	    Location l = (Location)e.next();
+	    if (haveCharType) {
 		BigInteger c = ((CharType)type).getBigInteger(l);
-		if (c.equals(BigInteger.ZERO))
+		if (c.equals(BigInteger.ZERO)) {
+		    noNullByte = false;
 		    break; // NUL
+		}
 		writer.print((char)c.longValue());
 	    }
-	    writer.print("\"");
-	} else {
-	    for (int i = 0; i < dimension.length; i++)
-		writer.print("{");
-	    for (ArrayIterator e = new ArrayIterator(location);
-		 e.hasNext(); ) {
-		if (e.idx > 0) {
-		    if ((e.idx % dimension[dimension.length - 1]) == 0)
-			writer.print("},{");
-		    else
-			writer.print(",");
-		}
-		Location l = (Location)e.next();
+	    else {
 		type.toPrint(writer, l, memory, format);
+		if (i < vectorLength - 1)
+		    writer.print(",");
 	    }
-	    for (int i = 0; i < dimension.length; i++)
+	}
+
+	if (haveCharType) {
+	    writer.print("\"");
+	    if (! isVector)
 		writer.print("}");
 	}
+	else
+	    writer.print("}");
+	return noNullByte;
     }
 
     public void toPrint(String s, PrintWriter writer) {
diff --git a/frysk-core/frysk/value/ChangeLog b/frysk-core/frysk/value/ChangeLog
index f89f379..48bf9aa 100644
--- a/frysk-core/frysk/value/ChangeLog
+++ b/frysk-core/frysk/value/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-09  Stan Cox  <scox@redhat.com>
+
+	* ArrayType.java (toPrint): Do multiple dimension here.  Move
+	vector handling...
+	(toPrintVector): ...here.
+
 2007-11-09  Teresa Thomas  <tthomas@redhat.com>
 
 	* TestValue.java (testIntOps): Test for logicalNegation,


hooks/post-receive
--
frysk system monitor/debugger


             reply	other threads:[~2007-11-10  0:34 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-10  0:34 scox [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-06-05 15:33 rmoseley
2008-05-12 16:30 rmoseley
2008-05-12 16:07 pmuldoon
2008-05-09 17:29 rmoseley
2008-04-02 22:41 pmuldoon
2008-04-01 12:28 pmuldoon
2008-03-20 20:20 rmoseley
2008-03-18 16:22 pmuldoon
2008-02-26 15:32 pmuldoon
2008-01-24 19:23 rmoseley
2008-01-23 21:10 rmoseley
2008-01-03 16:55 pmuldoon
2007-12-13 20:18 rmoseley
2007-12-04 17:45 jflavio
2007-11-30  4:24 jflavio
2007-11-28 21:40 jflavio
2007-11-28 16:20 jflavio
2007-11-28 13:08 pmuldoon
2007-11-28 12:04 mark
2007-11-20 22:47 scox
2007-11-19 17:58 scox
2007-11-17  8:35 rmoseley
2007-11-16 15:59 scox
2007-11-16 14:59 pmuldoon
2007-11-14  2:38 scox
2007-11-14  2:09 jflavio
2007-11-13  0:41 scox
2007-11-10 14:47 jflavio
2007-11-09 14:59 jflavio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071110003427.21507.qmail@sourceware.org \
    --to=scox@sourceware.org \
    --cc=frysk-cvs@sourceware.org \
    --cc=frysk@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).