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).