From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11432 invoked by alias); 9 Nov 2007 19:21:43 -0000 Received: (qmail 11395 invoked by uid 9561); 9 Nov 2007 19:21:41 -0000 Date: Fri, 09 Nov 2007 19:21:00 -0000 Message-ID: <20071109192140.11380.qmail@sourceware.org> From: swagiaal@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: swagiaal: Prepare CompositeType for support of static memebers. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: fdb837f1918543acf84ece7806c0900798fd27d2 X-Git-Newrev: 0f6d423b274fdbde0e75003e468a041032284a8f Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2007-q4/txt/msg00332.txt.bz2 The branch, master has been updated via 0f6d423b274fdbde0e75003e468a041032284a8f (commit) via 23954c1bc36265e03cb5c67b4dab931a5b044ba1 (commit) via a3c6407966e079ff93d3b6b9ff1c77a1537210db (commit) from fdb837f1918543acf84ece7806c0900798fd27d2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 0f6d423b274fdbde0e75003e468a041032284a8f Author: Sami Wagiaalla Date: Fri Nov 9 13:29:01 2007 -0500 swagiaal: Prepare CompositeType for support of static memebers. frysk-core/frysk/debuginfo/ChangeLog +2007-11-09 Sami Wagiaalla + + * TestTypeEntry.java (testClassWithStaticMembers): New test. + frysk-core/frysk/scopes/ChangeLog @@ -1,3 +1,7 @@ +2007-11-09 Sami Wagiaalla + + * Composite.java (getType): New function. + frysk-core/frysk/value/ChangeLog +2007-11-09 Sami Wagiaalla + + * CompositeType.java (addStaticMember): New function. + (Member.Member): Moved Access and inheretence arguments + from DynamicMember to this constructor. + commit 23954c1bc36265e03cb5c67b4dab931a5b044ba1 Author: Sami Wagiaalla Date: Tue Nov 6 15:52:59 2007 -0500 swagiaal: Created class StaticMember in CompositeType frysk-core/frysk/value/ChangeLog +2007-11-06 Sami Wagiaalla + + * CompositeType.java: Renamed Member to DynamicMember. + Created StaticMember + Created Member. + DynamicMember and StaticMember now extends Member. + commit a3c6407966e079ff93d3b6b9ff1c77a1537210db Author: Sami Wagiaalla Date: Tue Nov 6 11:13:40 2007 -0500 swagiaal: Renamed Dwfl::getDie to Dwfl::getCompilationUnit. frysk-core/frysk/debuginfo/ChangeLog +2007-11-06 Sami Wagiaalla + + Renamed Dwfl::getDie to Dwfl::getCompilationUnit. + * gen-type-expect-tests.py: Updated. + * TestTypeEntry.java: Updated. + * TestDebugInfoStackTrace.java: Updated. + * DebugInfoFrame.java: Updated. + * DebugInfo.java: Updated. + frysk-core/frysk/scopes/ChangeLog +2007-11-06 Sami Wagiaalla + + Renamed Dwfl::getDie to Dwfl::getCompilationUnit. + * TestScopeFactory.java: Updated. + frysk-sys/lib/dwfl/ChangeLog +2007-11-06 Sami Wagiaalla + + * Dwfl.java: Renamed getDie to getCompilationUnit. + * TestDwfl.java: Updated. + * TestDwarfDie.java: Updated. + ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/debuginfo/ChangeLog | 13 +++ frysk-core/frysk/debuginfo/DebugInfo.java | 4 +- frysk-core/frysk/debuginfo/DebugInfoFrame.java | 4 +- frysk-core/frysk/debuginfo/TestFrameDebugInfo.java | 4 +- frysk-core/frysk/debuginfo/TestTypeEntry.java | 56 ++++++++++++- .../frysk/debuginfo/gen-type-expect-tests.py | 2 +- ...pes-class-static.cxx => funit-class-static.cxx} | 8 +- frysk-core/frysk/scopes/ChangeLog | 9 ++ frysk-core/frysk/scopes/Composite.java | 5 + frysk-core/frysk/scopes/TestScopeFactory.java | 2 +- frysk-core/frysk/value/ChangeLog | 13 +++ frysk-core/frysk/value/CompositeType.java | 86 ++++++++++++++------ frysk-sys/lib/dwfl/ChangeLog | 6 ++ frysk-sys/lib/dwfl/Dwfl.java | 2 +- frysk-sys/lib/dwfl/TestDwarfDie.java | 2 +- frysk-sys/lib/dwfl/TestDwfl.java | 2 +- 16 files changed, 172 insertions(+), 46 deletions(-) copy frysk-core/frysk/pkglibdir/{funit-cpp-scopes-class-static.cxx => funit-class-static.cxx} (62%) First 500 lines of diff: diff --git a/frysk-core/frysk/debuginfo/ChangeLog b/frysk-core/frysk/debuginfo/ChangeLog index 956665f..0f09d35 100644 --- a/frysk-core/frysk/debuginfo/ChangeLog +++ b/frysk-core/frysk/debuginfo/ChangeLog @@ -1,7 +1,20 @@ +2007-11-09 Sami Wagiaalla + + * TestTypeEntry.java (testClassWithStaticMembers): New test. + 2007-11-07 Stan Cox * gen-type-expect-tests.py (j.start_test): Only unresolve value tests. +2007-11-06 Sami Wagiaalla + + Renamed Dwfl::getDie to Dwfl::getCompilationUnit. + * gen-type-expect-tests.py: Updated. + * TestTypeEntry.java: Updated. + * TestDebugInfoStackTrace.java: Updated. + * DebugInfoFrame.java: Updated. + * DebugInfo.java: Updated. + 2007-11-05 Teresa Thomas * PieceLocation.java (getAddress): Edit exception message. diff --git a/frysk-core/frysk/debuginfo/DebugInfo.java b/frysk-core/frysk/debuginfo/DebugInfo.java index 5d29be9..6768379 100644 --- a/frysk-core/frysk/debuginfo/DebugInfo.java +++ b/frysk-core/frysk/debuginfo/DebugInfo.java @@ -94,7 +94,7 @@ public class DebugInfo { public int complete (DebugInfoFrame frame, String buffer, int cursor, List candidates) { long pc = frame.getAdjustedAddress(); Dwfl dwfl = DwflCache.getDwfl(frame.getTask()); - DwflDieBias bias = dwfl.getDie(pc); + DwflDieBias bias = dwfl.getCompilationUnit(pc); DwarfDie die = bias.die; String token = ""; @@ -153,7 +153,7 @@ public class DebugInfo { public String what(DebugInfoFrame frame, String sInput) { long pc = frame.getAdjustedAddress(); Dwfl dwfl = DwflCache.getDwfl(frame.getTask()); - DwflDieBias bias = dwfl.getDie(pc); + DwflDieBias bias = dwfl.getCompilationUnit(pc); TypeEntry typeEntry = new TypeEntry(frame.getTask().getISA()); if (bias == null) throw new RuntimeException("No symbol table is available."); diff --git a/frysk-core/frysk/debuginfo/DebugInfoFrame.java b/frysk-core/frysk/debuginfo/DebugInfoFrame.java index 724c89b..5a60f7e 100644 --- a/frysk-core/frysk/debuginfo/DebugInfoFrame.java +++ b/frysk-core/frysk/debuginfo/DebugInfoFrame.java @@ -89,7 +89,7 @@ public class DebugInfoFrame extends FrameDecorator { if (scope == null) { Dwfl dwfl = DwflCache.getDwfl(this.getTask()); - DwflDieBias bias = dwfl.getDie(getAdjustedAddress()); + DwflDieBias bias = dwfl.getCompilationUnit(getAdjustedAddress()); if (bias != null) { @@ -135,7 +135,7 @@ public class DebugInfoFrame extends FrameDecorator { this.inlinedSubprograms = new LinkedList(); Dwfl dwfl = DwflCache.getDwfl(this.getTask()); - DwflDieBias bias = dwfl.getDie(getAdjustedAddress()); + DwflDieBias bias = dwfl.getCompilationUnit(getAdjustedAddress()); if (bias != null) { diff --git a/frysk-core/frysk/debuginfo/TestFrameDebugInfo.java b/frysk-core/frysk/debuginfo/TestFrameDebugInfo.java index 34aec18..bee94f5 100644 --- a/frysk-core/frysk/debuginfo/TestFrameDebugInfo.java +++ b/frysk-core/frysk/debuginfo/TestFrameDebugInfo.java @@ -124,7 +124,7 @@ public class TestFrameDebugInfo Frame frame = StackFactory.createFrame(task); Dwfl dwfl = DwflCache.getDwfl(task); - DwflDieBias bias = dwfl.getDie(frame.getAdjustedAddress()); + DwflDieBias bias = dwfl.getCompilationUnit(frame.getAdjustedAddress()); DwarfDie[] scopes = bias.die.getScopes(frame.getAdjustedAddress() - bias.bias); assertEquals("number of scopes", 3, scopes.length); @@ -158,7 +158,7 @@ public class TestFrameDebugInfo Frame frame = StackFactory.createFrame(task); Dwfl dwfl = DwflCache.getDwfl(task); - DwflDieBias bias = dwfl.getDie(frame.getAdjustedAddress()); + DwflDieBias bias = dwfl.getCompilationUnit(frame.getAdjustedAddress()); DwarfDie[] scopes = bias.die.getScopes(frame.getAdjustedAddress() - bias.bias); scopes = scopes[0].getScopesDie(); diff --git a/frysk-core/frysk/debuginfo/TestTypeEntry.java b/frysk-core/frysk/debuginfo/TestTypeEntry.java index fe40d78..b02a08c 100644 --- a/frysk-core/frysk/debuginfo/TestTypeEntry.java +++ b/frysk-core/frysk/debuginfo/TestTypeEntry.java @@ -39,6 +39,7 @@ package frysk.debuginfo; +import java.util.Iterator; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -50,7 +51,9 @@ import frysk.dwfl.DwflCache; import frysk.proc.Task; import frysk.testbed.DaemonBlockedAtSignal; import frysk.testbed.TestLib; +import frysk.value.CompositeType; import frysk.value.Type; +import frysk.value.CompositeType.Member; public class TestTypeEntry extends TestLib @@ -89,7 +92,7 @@ public class TestTypeEntry DwarfDie varDie; long pc = frame.getAdjustedAddress(); dwfl = DwflCache.getDwfl(frame.getTask()); - DwflDieBias bias = dwfl.getDie(pc); + DwflDieBias bias = dwfl.getCompilationUnit(pc); DwarfDie die = bias.die; allDies = die.getScopes(pc - bias.bias); TypeEntry typeEntry = new TypeEntry(frame.getTask().getISA()); @@ -120,7 +123,7 @@ public class TestTypeEntry DwarfDie varDie; long pc = frame.getAdjustedAddress(); dwfl = DwflCache.getDwfl(frame.getTask()); - DwflDieBias bias = dwfl.getDie(pc); + DwflDieBias bias = dwfl.getCompilationUnit(pc); DwarfDie die = bias.die; allDies = die.getScopes(pc - bias.bias); TypeEntry typeEntry = new TypeEntry(frame.getTask().getISA()); @@ -151,7 +154,7 @@ public class TestTypeEntry DwarfDie varDie; long pc = frame.getAdjustedAddress(); dwfl = DwflCache.getDwfl(frame.getTask()); - DwflDieBias bias = dwfl.getDie(pc); + DwflDieBias bias = dwfl.getCompilationUnit(pc); DwarfDie die = bias.die; allDies = die.getScopes(pc - bias.bias); TypeEntry typeEntry = new TypeEntry(frame.getTask().getISA()); @@ -191,7 +194,7 @@ public class TestTypeEntry DwarfDie varDie; long pc = frame.getAdjustedAddress(); dwfl = DwflCache.getDwfl(frame.getTask()); - DwflDieBias bias = dwfl.getDie(pc); + DwflDieBias bias = dwfl.getCompilationUnit(pc); DwarfDie die = bias.die; allDies = die.getScopes(pc - bias.bias); TypeEntry typeEntry = new TypeEntry(frame.getTask().getISA()); @@ -226,7 +229,7 @@ public class TestTypeEntry DwarfDie varDie; long pc = frame.getAdjustedAddress(); dwfl = DwflCache.getDwfl(frame.getTask()); - DwflDieBias bias = dwfl.getDie(pc); + DwflDieBias bias = dwfl.getCompilationUnit(pc); DwarfDie die = bias.die; allDies = die.getScopes(pc - bias.bias); TypeEntry typeEntry = new TypeEntry(frame.getTask().getISA()); @@ -239,4 +242,47 @@ public class TestTypeEntry assertTrue("testClass " + expect[i].symbol, m.matches()); } } + + public void testClassWithStaticMembers () { + + if(unresolved(5301)){ + return; + } + + Task task = (new DaemonBlockedAtSignal("funit-class-static")).getMainTask(); + + DebugInfoFrame frame = DebugInfoStackFactory.createVirtualStackTrace(task); + + CompositeType compositeType = (CompositeType) frame.getSubprogram().getComposite().getType(); + + assertNotNull("Retrieved type successfully", compositeType); + + Iterator iterator = compositeType.iterator(); + + while(iterator.hasNext()){ + System.out.println("TestTypeEntry.testClassWithStaticMembers() " + ((Member)iterator.next()).getName() + "\n"); + } + + 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/gen-type-expect-tests.py b/frysk-core/frysk/debuginfo/gen-type-expect-tests.py index 9bb9e1b..7b6f526 100644 --- a/frysk-core/frysk/debuginfo/gen-type-expect-tests.py +++ b/frysk-core/frysk/debuginfo/gen-type-expect-tests.py @@ -96,7 +96,7 @@ public class %s extends TestLib { frame = DebugInfoStackFactory.createDebugInfoStackTrace(task); long pc = frame.getAdjustedAddress(); Dwfl dwfl = DwflCache.getDwfl(frame.getTask()); - DwflDieBias bias = dwfl.getDie(pc); + DwflDieBias bias = dwfl.getCompilationUnit(pc); die = bias.die; allDies = die.getScopes(pc - bias.bias); typeEntry = new TypeEntry(frame.getTask().getISA()); diff --git a/frysk-core/frysk/pkglibdir/funit-cpp-scopes-class-static.cxx b/frysk-core/frysk/pkglibdir/funit-class-static.cxx similarity index 62% copy from frysk-core/frysk/pkglibdir/funit-cpp-scopes-class-static.cxx copy to frysk-core/frysk/pkglibdir/funit-class-static.cxx index 7889cea..c086f74 100644 --- a/frysk-core/frysk/pkglibdir/funit-cpp-scopes-class-static.cxx +++ b/frysk-core/frysk/pkglibdir/funit-class-static.cxx @@ -1,12 +1,12 @@ #include #include -int first = 11; - class A{ - static const int first = 22; //*this* one should be found + static int static_i; + int i; public: - static void crash(); + static void static_crash(); + void crash(); }; void A::crash(){ diff --git a/frysk-core/frysk/scopes/ChangeLog b/frysk-core/frysk/scopes/ChangeLog index 66ac318..499343f 100644 --- a/frysk-core/frysk/scopes/ChangeLog +++ b/frysk-core/frysk/scopes/ChangeLog @@ -1,3 +1,12 @@ +2007-11-09 Sami Wagiaalla + + * Composite.java (getType): New function. + +2007-11-06 Sami Wagiaalla + + Renamed Dwfl::getDie to Dwfl::getCompilationUnit. + * TestScopeFactory.java: Updated. + 2007-11-05 Sami Wagiaalla * TestScopes.java (testGetOriginalStaticSubprogram): New test. diff --git a/frysk-core/frysk/scopes/Composite.java b/frysk-core/frysk/scopes/Composite.java index 4e7cd1b..f344ce3 100644 --- a/frysk-core/frysk/scopes/Composite.java +++ b/frysk-core/frysk/scopes/Composite.java @@ -41,6 +41,7 @@ package frysk.scopes; import frysk.debuginfo.TypeEntry; import frysk.value.CompositeType; +import frysk.value.Type; import lib.dwfl.DwarfDie; /** @@ -60,4 +61,8 @@ public class Composite extends Scope { public String getName(){ return this.getDie().getName(); } + + public Type getType(){ + return this.compositeType; + } } diff --git a/frysk-core/frysk/scopes/TestScopeFactory.java b/frysk-core/frysk/scopes/TestScopeFactory.java index c4e9bde..d7e2ec8 100644 --- a/frysk-core/frysk/scopes/TestScopeFactory.java +++ b/frysk-core/frysk/scopes/TestScopeFactory.java @@ -59,7 +59,7 @@ public class TestScopeFactory Frame frame = StackFactory.createFrame(task); Dwfl dwfl = DwflCache.getDwfl(task); - DwflDieBias bias = dwfl.getDie(frame.getAdjustedAddress()); + DwflDieBias bias = dwfl.getCompilationUnit(frame.getAdjustedAddress()); DwarfDie[] scopes = bias.die.getScopes(frame.getAdjustedAddress() - bias.bias); TypeEntry typeEntry = new TypeEntry(frame.getTask().getISA()); diff --git a/frysk-core/frysk/value/ChangeLog b/frysk-core/frysk/value/ChangeLog index e696918..0a2c650 100644 --- a/frysk-core/frysk/value/ChangeLog +++ b/frysk-core/frysk/value/ChangeLog @@ -1,3 +1,16 @@ +2007-11-09 Sami Wagiaalla + + * CompositeType.java (addStaticMember): New function. + (Member.Member): Moved Access and inheretence arguments + from DynamicMember to this constructor. + +2007-11-09 Sami Wagiaalla + + * CompositeType.java: Renamed Member to DynamicMember. + Created StaticMember + Created Member. + DynamicMember and StaticMember now extends Member. + 2007-11-08 Teresa Thomas * Type.java (index): Make operation commutative. diff --git a/frysk-core/frysk/value/CompositeType.java b/frysk-core/frysk/value/CompositeType.java index 1ce5d73..059351b 100644 --- a/frysk-core/frysk/value/CompositeType.java +++ b/frysk-core/frysk/value/CompositeType.java @@ -52,30 +52,52 @@ import java.io.PrintWriter; public abstract class CompositeType extends Type { + + public static class Member{ + final int index; + final String name; + final Type type; + final Access access; + final boolean inheritance; + + public Member(int index, String name, Type type, Access access, + boolean inheritance) { + this.index = index; + this.type = type; + this.name = name; + this.access = access; + this.inheritance = inheritance; + } + + public String getName(){ + return this.name; + } + } + + static class StaticMember extends Member{ + + public StaticMember(int index, String name, Type type, Access access, + boolean inheritance) { + super(index, name, type, access, inheritance); + } + + } + /** * Class members; package private. */ - static class Member { + static class DynamicMember extends Member{ // XXX: To keep getValue working. - final int index; - final String name; - final Type type; final long offset; - final Access access; final int bitOffset; final int bitSize; - final boolean inheritance; - Member(int index, String name, Type type, long offset, + DynamicMember(int index, String name, Type type, long offset, Access access, int bitOffset, int bitSize, boolean inheritance) { - this.index = index; - this.type = type; - this.name = name; + super(index, name, type, access, inheritance); this.offset = offset; - this.access = access; this.bitOffset = bitOffset; this.bitSize = bitSize; - this.inheritance = inheritance; } public String toString() { return ("{" @@ -106,8 +128,8 @@ public abstract class CompositeType /** * Return the composit's members as an array. PACKAGE PRIVATE. */ - Member[] members() { - Member[] m = new Member[members.size()]; + DynamicMember[] members() { + DynamicMember[] m = new DynamicMember[members.size()]; members.toArray(m); return m; } @@ -155,11 +177,20 @@ public abstract class CompositeType */ private CompositeType add(String name, Type type, long offset, Access access, int bitOffset, int bitLength, + boolean staticMember, boolean inheritance) { if (bitOffset >= 0 && bitLength > 0) type = type.pack(bitOffset, bitLength); - Member member = new Member(members.size(), name, type, offset, + + Member member; + + if(staticMember){ + member = new StaticMember(members.size(), name, type, + access, inheritance); + }else{ + member = new DynamicMember(members.size(), name, type, offset, access, bitOffset, bitLength, inheritance); + } nameToMember.put(name, member); members.add(member); return this; @@ -167,18 +198,22 @@ public abstract class CompositeType public CompositeType addMember(String name, Type type, long offset, Access access) { - return add(name, type, offset, access, -1, -1, false); + return add(name, type, offset, access, -1, -1,false, false); } public CompositeType addMember(String name, Type type, long offset, Access access, int bitOffset, int bitLength) { - return add(name, type, offset, access, bitOffset, bitLength, false); + return add(name, type, offset, access, bitOffset, bitLength, false, false); } public CompositeType addInheritance(String name, Type type, long offset, Access access) { - return add(name, type, offset, access, -1, -1, true); + return add(name, type, offset, access, -1, -1,false, true); + } + + public CompositeType addStaticMember(String name, Type type, long offset, + Access access){ + return add(name, type, offset, access, -1, -1,false, false); } - /** * Iterate through the class types. */ @@ -186,7 +221,6 @@ public abstract class CompositeType implements java.util.Iterator { private int idx; - ClassIterator () { idx = -1; } @@ -199,7 +233,7 @@ public abstract class CompositeType } public String nextName () { - return ((Member)members.get(idx)).name; + return ((DynamicMember)members.get(idx)).name; } public Object next () { @@ -219,7 +253,7 @@ public abstract class CompositeType writer.print("{"); boolean first = true; for (Iterator i = members.iterator(); i.hasNext();) { - Member member = (Member)i.next(); + DynamicMember member = (DynamicMember)i.next(); if (member.type instanceof frysk.value.FunctionType) continue; else { @@ -261,11 +295,11 @@ public abstract class CompositeType } // : public PARENT ... boolean first = true; - Member member = null; + DynamicMember member = null; Iterator i = members.iterator(); // Types this inherits come first; print them out. while (i.hasNext()) { - member = (Member)i.next(); + member = (DynamicMember)i.next(); if (!member.inheritance) break; if (first) { @@ -323,7 +357,7 @@ public abstract class CompositeType writer.print(";\n"); // Advance if (i.hasNext()) - member = (Member)i.next(); + member = (DynamicMember)i.next(); else member = null; } @@ -338,7 +372,7 @@ public abstract class CompositeType public Value member(Value var1, String member) { - Member mem = (Member)nameToMember.get(member); + DynamicMember mem = (DynamicMember)nameToMember.get(member); if (mem == null) hooks/post-receive -- frysk system monitor/debugger