public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: swagiaal@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: swagiaal: test case and support for static data members.
Date: Thu, 22 Nov 2007 20:59:00 -0000	[thread overview]
Message-ID: <20071122205859.12596.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  a60c7c85cd7f5f4e570350c196d52e23381f335b (commit)
      from  23d35ae52512823d608fb46136564301948b5fe1 (commit)

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

- Log -----------------------------------------------------------------
commit a60c7c85cd7f5f4e570350c196d52e23381f335b
Author: Sami Wagiaalla <swagiaal@redhat.com>
Date:   Thu Nov 22 15:34:53 2007 -0500

    swagiaal: test case and support for static data members.
    
    frysk-core/frysk/debuginfo/ChangeLog
    +2007-11-22  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +       * TestTypeEntry.java (testClassWithStaticMembers): Added test for static
    +       and dynamic data members and member functions.
    +       (getGccStructOrClassType): Added Check for static data members.
    +
    
    frysk-core/frysk/value/ChangeLog
    +2007-11-22  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +       * CompositeType.java (addStaticMember): New overloaded functions.
    +

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

Summary of changes:
 frysk-core/frysk/debuginfo/ChangeLog          |    6 +++
 frysk-core/frysk/debuginfo/TestTypeEntry.java |   41 ++++++++++-----------
 frysk-core/frysk/debuginfo/TypeEntry.java     |   49 ++++++++++++++++++-------
 frysk-core/frysk/value/ChangeLog              |    4 ++
 frysk-core/frysk/value/CompositeType.java     |   13 +++++--
 5 files changed, 75 insertions(+), 38 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/debuginfo/ChangeLog b/frysk-core/frysk/debuginfo/ChangeLog
index 728e5bb..33d0db3 100644
--- a/frysk-core/frysk/debuginfo/ChangeLog
+++ b/frysk-core/frysk/debuginfo/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-22  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	* TestTypeEntry.java (testClassWithStaticMembers): Added test for static
+	and dynamic data members and member functions.
+	(getGccStructOrClassType): Added Check for static data members.
+
 2007-11-22  Andrew Cagney  <cagney@redhat.com>
 
 	* gen-type-expect-tests.py: Do not import "subprocess".
diff --git a/frysk-core/frysk/debuginfo/TestTypeEntry.java b/frysk-core/frysk/debuginfo/TestTypeEntry.java
index b02a08c..95f85e6 100644
--- a/frysk-core/frysk/debuginfo/TestTypeEntry.java
+++ b/frysk-core/frysk/debuginfo/TestTypeEntry.java
@@ -53,7 +53,9 @@ import frysk.testbed.DaemonBlockedAtSignal;
 import frysk.testbed.TestLib;
 import frysk.value.CompositeType;
 import frysk.value.Type;
+import frysk.value.CompositeType.DynamicMember;
 import frysk.value.CompositeType.Member;
+import frysk.value.CompositeType.StaticMember;
 
 public class TestTypeEntry
     extends TestLib
@@ -260,29 +262,24 @@ public class TestTypeEntry
       Iterator iterator = compositeType.iterator();
       
       while(iterator.hasNext()){
-	  System.out.println("TestTypeEntry.testClassWithStaticMembers() " + ((Member)iterator.next()).getName() + "\n");
+	  Member member = (Member) iterator.next();
+	  
+	  if(member.getName().equals("i")){
+	      assertTrue("Member " + member.getName() + " has the correct class", member instanceof DynamicMember);
+	  }
+	
+	  if(member.getName().equals("static_i")){
+	      assertTrue("Member " + member.getName() + " has the correct class", member instanceof StaticMember);
+	  }
+	
+	  if(member.getName().equals("crash")){
+	      assertTrue("Member " + member.getName() + " has the correct class", member instanceof DynamicMember);
+	  }
+	
+	  if(member.getName().equals("static_crash")){
+	      assertTrue("Member " + member.getName() + " has the correct class", member instanceof StaticMember);
+	  }
       }
-      
-      assertTrue(false);
-      
-//      Dwfl dwfl;
-//      DwarfDie[] allDies;
-//      Type varType;
-//      DwarfDie varDie;
-//      long pc = frame.getAdjustedAddress();
-//      dwfl = DwflCache.getDwfl(frame.getTask());
-//      DwflDieBias bias = dwfl.getCompilationUnit(pc);
-//      DwarfDie die = bias.die;
-//      allDies = die.getScopes(pc - bias.bias);
-//      TypeEntry typeEntry = new TypeEntry(frame.getTask().getISA());
-//    
-//      for (int i = 0; i < expect.length; i++) {
-//	  varDie = die.getScopeVar(allDies, expect[i].symbol);
-//	  varType = typeEntry.getType(varDie.getType());
-//	  Pattern p = Pattern.compile(expect[i].output, Pattern.DOTALL);
-//	  Matcher m = p.matcher(varType.toPrint());
-//	  assertTrue("testClass " + expect[i].symbol, m.matches());
-//      }
   }
 
 }  
diff --git a/frysk-core/frysk/debuginfo/TypeEntry.java b/frysk-core/frysk/debuginfo/TypeEntry.java
index 0af1b45..a33b6a1 100644
--- a/frysk-core/frysk/debuginfo/TypeEntry.java
+++ b/frysk-core/frysk/debuginfo/TypeEntry.java
@@ -125,17 +125,24 @@ public class TypeEntry
      * @return GccStructOrClassType for the struct
      */
     public GccStructOrClassType getGccStructOrClassType(DwarfDie classDie, String name) {
+	
 	dumpDie("classDie=", classDie);
 
 	GccStructOrClassType classType = new GccStructOrClassType(name, getByteSize(classDie));
-	for (DwarfDie member = classDie.getChild(); member != null; member = member
-	.getSibling()) {
+	
+	for (DwarfDie member = classDie.getChild();
+		member != null;
+		member = member.getSibling()) {
+	    
 	    dumpDie("member=", member);
+	
+	    boolean staticMember = false;
 	    long offset;
 	    try {
 		offset = member.getDataMemberLocation();
 	    } catch (DwAttributeNotFoundException de) {
 		offset = 0; // union
+		staticMember = true;
 	    }
 
 	    Access access = null;
@@ -144,8 +151,7 @@ public class TypeEntry
 	    case DwAccess.PROTECTED_: access = Access.PROTECTED; break;
 	    case DwAccess.PRIVATE_: access = Access.PRIVATE; break;
 	    }
-	    DwarfDie memberDieType = member.getUltimateType();
-
+	    
 	    if (member.getTag() == DwTag.SUBPROGRAM) {
 		Value v = getSubprogramValue(member);
 		classType.addMember(member.getName(), v.getType(), offset,
@@ -153,8 +159,9 @@ public class TypeEntry
 		continue;
 	    }
 	    
-	    if (memberDieType == null)
-		continue;
+//	    DwarfDie memberDieType = member.getUltimateType();
+//	    if (memberDieType == null)
+//		continue;
 
 	    Type memberType = getType (member.getType());
 	    if (memberType instanceof UnknownType == false) {
@@ -164,17 +171,33 @@ public class TypeEntry
 		if (bitSize != -1) {
 		    int bitOffset = member
 		    .getAttrConstant(DwAt.BIT_OFFSET);
-		    classType.addMember(member.getName(), memberType, offset, access,
-			    bitOffset, bitSize);
+		    if(staticMember){
+			classType.addStaticMember(member.getName(), memberType, offset, access,
+				    bitOffset, bitSize);
+		    }else{
+			classType.addMember(member.getName(), memberType, offset, access,
+				    bitOffset, bitSize);
+		    }
+		}
+		else{
+		    if(staticMember){
+			classType.addStaticMember(member.getName(), memberType, offset, access);
+		    }else{
+			classType.addMember(member.getName(), memberType, offset, access);
+		    }
+		    
 		}
-		else
-		    classType.addMember(member.getName(), memberType, offset, access);
-		
 		continue;
 	    }
-	    else
-		classType.addMember(member.getName(), new UnknownType(member
+	    else{
+		if(staticMember){
+		    classType.addStaticMember(member.getName(), new UnknownType(member
 			.getName()), offset, access);
+		}else{
+		    classType.addMember(member.getName(), new UnknownType(member
+				.getName()), offset, access);
+		}
+	    }
 	}
 
 	return classType;
diff --git a/frysk-core/frysk/value/ChangeLog b/frysk-core/frysk/value/ChangeLog
index b280d2a..ce55ce4 100644
--- a/frysk-core/frysk/value/ChangeLog
+++ b/frysk-core/frysk/value/ChangeLog
@@ -1,3 +1,7 @@
+2007-11-22  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	* CompositeType.java (addStaticMember): New overloaded functions.
+
 2007-11-21  Teresa Thomas  <tthomas@redhat.com>
 
 	* ArrayType.java (slice): New.
diff --git a/frysk-core/frysk/value/CompositeType.java b/frysk-core/frysk/value/CompositeType.java
index 27de857..9f8bc8b 100644
--- a/frysk-core/frysk/value/CompositeType.java
+++ b/frysk-core/frysk/value/CompositeType.java
@@ -75,7 +75,7 @@ public abstract class CompositeType
 	}
     }
     
-    static class StaticMember extends Member{
+    public static class StaticMember extends Member{
 
 	public StaticMember(int index, String name, Type type, Access access,
 		boolean inheritance) {
@@ -87,7 +87,7 @@ public abstract class CompositeType
     /**
      * Class members; package private.
      */
-    static class DynamicMember extends Member{
+    public static class DynamicMember extends Member{
 	// XXX: To keep getValue working.
 	final long offset;
 	final int bitOffset;
@@ -213,8 +213,15 @@ public abstract class CompositeType
     
     public CompositeType addStaticMember(String name, Type type, long offset,
 		   Access access){
-	return add(name, type, offset, access, -1, -1,false, false);
+	return add(name, type, offset, access, -1, -1,true, false);
     }
+    
+    public CompositeType addStaticMember(String name, Type type, long offset,
+		   Access access, int bitOffset,
+		   int bitLength) {
+	return add(name, type, offset, access, bitOffset, bitLength, true, false);
+    }
+
     /**
      * Iterate through the class types.
      */


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


                 reply	other threads:[~2007-11-22 20:59 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20071122205859.12596.qmail@sourceware.org \
    --to=swagiaal@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).