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