[SCM] master: swagiaal: test case and support for static data members.
swagiaal@sourceware.org
swagiaal@sourceware.org
Thu Nov 22 20:59:00 GMT 2007
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
More information about the Frysk-cvs
mailing list