public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: swagiaal: Tested DwarfDie.getOffset. Implmented and tested DwarfDie.getDieByOffset().
@ 2007-12-07 22:11 swagiaal
  0 siblings, 0 replies; only message in thread
From: swagiaal @ 2007-12-07 22:11 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  36cff033d7840d1968d9952a44486abbe3b26b3f (commit)
       via  d44d1d4b37527e6af661a2e59db675f5a146b01c (commit)
      from  f58119c5647ea4f0fde832a9bb080227926a52db (commit)

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

- Log -----------------------------------------------------------------
commit 36cff033d7840d1968d9952a44486abbe3b26b3f
Author: Sami Wagiaalla <swagiaal@redhat.com>
Date:   Fri Dec 7 16:32:06 2007 -0500

    swagiaal: Tested DwarfDie.getOffset. Implmented and tested DwarfDie.getDieByOffset().
    
    frysk-sys/lib/dwfl/ChangeLog
    +2007-12-07  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +       * DwflModule.java (getDieByOffset): New function
    +       * cni/DwflModule.cxx (DwflModule::offdie): New function.
    +       * TestDwarfDie.java (testGetOffset): New test.
    +

commit d44d1d4b37527e6af661a2e59db675f5a146b01c
Author: Sami Wagiaalla <swagiaal@redhat.com>
Date:   Fri Dec 7 12:00:23 2007 -0500

    swagiaal: DwarfDie.getOffset() now returns long instead of int.
    
    frysk-core/frysk/debuginfo/ChangeLog
    +2007-12-07  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +       DwarfDie.getOffset() now returns long.
    +       * TypeEntry.java: Updated.
    +
    
    frysk-sys/lib/dwfl/ChangeLog
    +2007-12-07  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +       * DwarfDie.java (getOffset): Now returns long.
    +       * cni/DwarfDie.cxx: Updated.
    +

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

Summary of changes:
 frysk-core/frysk/debuginfo/ChangeLog      |    5 +++++
 frysk-core/frysk/debuginfo/TypeEntry.java |    8 ++++----
 frysk-sys/lib/dwfl/ChangeLog              |   11 +++++++++++
 frysk-sys/lib/dwfl/DwarfDie.java          |    4 ++--
 frysk-sys/lib/dwfl/DwflModule.java        |    8 +++++++-
 frysk-sys/lib/dwfl/TestDwarfDie.java      |   24 ++++++++++++++++++++++++
 frysk-sys/lib/dwfl/cni/DwarfDie.cxx       |    4 ++--
 frysk-sys/lib/dwfl/cni/DwflModule.cxx     |   16 ++++++++++++++++
 8 files changed, 71 insertions(+), 9 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/debuginfo/ChangeLog b/frysk-core/frysk/debuginfo/ChangeLog
index 82bb3b9..4cea696 100644
--- a/frysk-core/frysk/debuginfo/ChangeLog
+++ b/frysk-core/frysk/debuginfo/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-07  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	DwarfDie.getOffset() now returns long.
+	* TypeEntry.java: Updated.
+
 2007-12-05  Stan Cox  <scox@redhat.com>
 
 	* gen-type-expect-tests.py (j.start_test): Use splitext instead of split
diff --git a/frysk-core/frysk/debuginfo/TypeEntry.java b/frysk-core/frysk/debuginfo/TypeEntry.java
index 5aac115..4e0567f 100644
--- a/frysk-core/frysk/debuginfo/TypeEntry.java
+++ b/frysk-core/frysk/debuginfo/TypeEntry.java
@@ -342,16 +342,16 @@ public class TypeEntry
 	else
 	    type = typeDie;
 
-	Type mappedType = (Type)dieHash.get(new Integer(type.getOffset()));
+	Type mappedType = (Type)dieHash.get(new Long(type.getOffset()));
 	if (mappedType != null)
 	    return mappedType;
-	else if (dieHash.containsKey(new Integer(type.getOffset()))) {
+	else if (dieHash.containsKey(new Long(type.getOffset()))) {
 	    // ??? will this always be a pointer to ourselves?
 	    // Instead of VoidType, we need a way to reference ourselves
 	    return new PointerType("", byteorder, getByteSize(type),  
 		    new VoidType());
 	}
-	dieHash.put(new Integer(type.getOffset()), null);
+	dieHash.put(new Long(type.getOffset()), null);
 	Type returnType = null;
 	
 	switch (type.getTag().hashCode()) {
@@ -434,7 +434,7 @@ public class TypeEntry
 	}
 
 	if (returnType != null) {
-	    dieHash.put(new Integer(type.getOffset()), returnType);
+	    dieHash.put(new Long(type.getOffset()), returnType);
 	    return returnType;
 	}
 	else
diff --git a/frysk-sys/lib/dwfl/ChangeLog b/frysk-sys/lib/dwfl/ChangeLog
index 4806cc3..9a6434c 100644
--- a/frysk-sys/lib/dwfl/ChangeLog
+++ b/frysk-sys/lib/dwfl/ChangeLog
@@ -1,3 +1,14 @@
+2007-12-07  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	* DwflModule.java (getDieByOffset): New function
+	* cni/DwflModule.cxx (DwflModule::offdie): New function.
+	* TestDwarfDie.java (testGetOffset): New test.
+
+2007-12-07  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	* DwarfDie.java (getOffset): Now returns long.
+	* cni/DwarfDie.cxx: Updated.
+	
 2007-12-05  Sami Wagiaalla  <swagiaal@redhat.com>
 
 	* TestDwarfDie.java (testGetModule): New Test.
diff --git a/frysk-sys/lib/dwfl/DwarfDie.java b/frysk-sys/lib/dwfl/DwarfDie.java
index 909fad7..1345417 100644
--- a/frysk-sys/lib/dwfl/DwarfDie.java
+++ b/frysk-sys/lib/dwfl/DwarfDie.java
@@ -261,7 +261,7 @@ abstract public class DwarfDie {
     /**
      * @return The offset for this die.
      */
-    public int getOffset() {
+    public long getOffset() {
 	return get_offset(this.getPointer());
     }
 
@@ -436,7 +436,7 @@ abstract public class DwarfDie {
   
     private native int get_attr_constant (long addr, int attr);
   
-    private native int get_offset (long addr);
+    private native long get_offset (long addr);
 
     // Package access for DwarfDieFactory
     static native int get_tag (long var_die);
diff --git a/frysk-sys/lib/dwfl/DwflModule.java b/frysk-sys/lib/dwfl/DwflModule.java
index def4304..6ddf2c1 100644
--- a/frysk-sys/lib/dwfl/DwflModule.java
+++ b/frysk-sys/lib/dwfl/DwflModule.java
@@ -91,9 +91,15 @@ public class DwflModule
 	}
 	return pubNames;
     }
-    
     private native void get_pubnames();
     
+    
+    protected DwarfDie getDieByOffset(long offset){
+	return offdie(this.getPointer(), offset);
+    }    
+    private native DwarfDie offdie(long die, long offset);
+
+    
     /**
      * Get the name of the module.
      *
diff --git a/frysk-sys/lib/dwfl/TestDwarfDie.java b/frysk-sys/lib/dwfl/TestDwarfDie.java
index ed2049c..cc5832e 100644
--- a/frysk-sys/lib/dwfl/TestDwarfDie.java
+++ b/frysk-sys/lib/dwfl/TestDwarfDie.java
@@ -101,4 +101,28 @@ public class TestDwarfDie extends TestCase {
 	assertTrue("Found correct module", dwflModule.getName().contains("TestRunner"));
     }
 
+    public void testGetOffset(){
+
+	Dwfl dwfl = new Dwfl(Pid.get());
+	assertNotNull(dwfl);
+	long addr = LocalMemory.getCodeAddr();
+
+	DwarfDie cuDie = dwfl.getCompilationUnit(addr).die;
+	assertNotNull(cuDie);
+	    
+	DwarfDie die = cuDie.getScopes(addr)[0];
+	
+	long offset = die.getOffset();
+	
+	DwarfDie retrievedDie = die.getModule().getDieByOffset(offset);
+	assertNotNull(retrievedDie);
+	
+	assertEquals("dies have the same name", die.getName(), retrievedDie.getName());
+	assertEquals("dies have the same tag", die.getTag(), retrievedDie.getTag());
+	
+	die = retrievedDie;
+	
+    }
+
+    
 }
diff --git a/frysk-sys/lib/dwfl/cni/DwarfDie.cxx b/frysk-sys/lib/dwfl/cni/DwarfDie.cxx
index 810882e..fc57d12 100644
--- a/frysk-sys/lib/dwfl/cni/DwarfDie.cxx
+++ b/frysk-sys/lib/dwfl/cni/DwarfDie.cxx
@@ -429,11 +429,11 @@ lib::dwfl::DwarfDie::get_attr_constant (jlong die_p, jint attr)
   return -1;
 }
   
-jint
+jlong
 lib::dwfl::DwarfDie::get_offset (jlong var_die)
 {
   Dwarf_Die *die = (Dwarf_Die*) var_die;
-  return (jint)dwarf_dieoffset(die);
+  return (jlong)dwarf_dieoffset(die);
 }
 
 void
diff --git a/frysk-sys/lib/dwfl/cni/DwflModule.cxx b/frysk-sys/lib/dwfl/cni/DwflModule.cxx
index 515632e..5cfdd09 100644
--- a/frysk-sys/lib/dwfl/cni/DwflModule.cxx
+++ b/frysk-sys/lib/dwfl/cni/DwflModule.cxx
@@ -233,3 +233,19 @@ lib::dwfl::DwflModule::get_pubnames()
   dwarf_getpubnames(dwarf, callback, this,0);
 }
 
+
+lib::dwfl::DwarfDie*
+lib::dwfl::DwflModule::offdie(jlong die, jlong offset){
+  
+  Dwarf_Addr bias;
+  Dwarf_Off dwarf_offset = (Dwarf_Off)offset;
+  Dwarf_Die* dwarf_die = (Dwarf_Die*)JvMalloc(sizeof(Dwarf_Die));
+  
+  ::Dwarf* dbg = dwfl_module_getdwarf ((Dwfl_Module*)this->getPointer(), &bias);
+  
+  dwarf_offdie (dbg, dwarf_offset, dwarf_die);
+  
+  lib::dwfl::DwarfDie* dwarfDie = this->parent->factory->makeDie((jlong)dwarf_die, this);  
+   
+  return dwarfDie;
+}


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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-12-07 22:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-07 22:11 [SCM] master: swagiaal: Tested DwarfDie.getOffset. Implmented and tested DwarfDie.getDieByOffset() swagiaal

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