public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Allow for LocalMemory being part of a separate shared library.
Date: Fri, 06 Jun 2008 02:12:00 -0000	[thread overview]
Message-ID: <20080606021248.10345.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  320da5218a7124bc55ab876d80f49b38a256ca9b (commit)
      from  4c1f1d27185537bb1a43f8aac8e723ba0deab3a8 (commit)

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

- Log -----------------------------------------------------------------
commit 320da5218a7124bc55ab876d80f49b38a256ca9b
Author: Andrew Cagney <cagney@redhat.com>
Date:   Thu Jun 5 22:08:17 2008 -0400

    Allow for LocalMemory being part of a separate shared library.
    
    frysk-sys/frysk/testbed/ChangeLog
    2008-06-05  Andrew Cagney  <cagney@redhat.com>
    
    	* LocalMemory.java (getCodeName()): New.
    	* jni/LocalMemory.cxx: Update.
    	* cni/LocalMemory.cxx: Synchronise with JNI version.
    
    frysk-sys/lib/dwfl/ChangeLog
    2008-06-05  Andrew Cagney  <cagney@redhat.com>
    
    	* TestDwfl.java (testGetModules()): Allow for JNI.
    	(testGetDie()): Use LocalMemory.getCodeName.

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

Summary of changes:
 frysk-sys/frysk/testbed/ChangeLog           |    6 +
 frysk-sys/frysk/testbed/LocalMemory.java    |    5 +
 frysk-sys/frysk/testbed/cni/LocalMemory.cxx |   21 +++-
 frysk-sys/frysk/testbed/jni/LocalMemory.cxx |   10 ++-
 frysk-sys/lib/dwfl/ChangeLog                |    3 +
 frysk-sys/lib/dwfl/TestDwfl.java            |  173 ++++++++++++++-------------
 6 files changed, 129 insertions(+), 89 deletions(-)

First 500 lines of diff:
diff --git a/frysk-sys/frysk/testbed/ChangeLog b/frysk-sys/frysk/testbed/ChangeLog
index 1cf45e6..6d16666 100644
--- a/frysk-sys/frysk/testbed/ChangeLog
+++ b/frysk-sys/frysk/testbed/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-05  Andrew Cagney  <cagney@redhat.com>
+
+	* LocalMemory.java (getCodeName()): New.
+	* jni/LocalMemory.cxx: Update.
+	* cni/LocalMemory.cxx: Synchronise with JNI version.
+
 2008-05-24  Andrew Cagney  <cagney@redhat.com>
 
 	* jni/LocalMemory.cxx: Update; byteArray -> jbyteArray.
diff --git a/frysk-sys/frysk/testbed/LocalMemory.java b/frysk-sys/frysk/testbed/LocalMemory.java
index 633a151..5a171dd 100644
--- a/frysk-sys/frysk/testbed/LocalMemory.java
+++ b/frysk-sys/frysk/testbed/LocalMemory.java
@@ -58,6 +58,11 @@ public class LocalMemory {
     public static native byte[] getDataBytes();
 
     /**
+     * Returns the name of the code function.
+     */
+    public static native String getCodeName();
+
+    /**
      * Returns the address of a function.
      */
     public static native long getCodeAddr();
diff --git a/frysk-sys/frysk/testbed/cni/LocalMemory.cxx b/frysk-sys/frysk/testbed/cni/LocalMemory.cxx
index 6eef06c..5730980 100644
--- a/frysk-sys/frysk/testbed/cni/LocalMemory.cxx
+++ b/frysk-sys/frysk/testbed/cni/LocalMemory.cxx
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2005, 2006, 2007 Red Hat Inc.
+// Copyright 2005, 2006, 2007, 2008 Red Hat Inc.
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -74,7 +74,19 @@ frysk::testbed::LocalMemory::getDataBytes() {
  * Function used by getCode*(), must be on a single line for __LINE__
  * to work correctly.
  */
-jint frysk::testbed::LocalMemory::getCodeLine () { return __LINE__; }
+extern "C" {
+  static jint codeLine() { return __LINE__; }
+}
+
+jstring
+frysk::testbed::LocalMemory::getCodeName() {
+  return JvNewStringUTF("codeLine");
+}
+
+jint
+frysk::testbed::LocalMemory::getCodeLine() {
+  return codeLine();
+}
 
 jstring
 frysk::testbed::LocalMemory::getCodeFile() {
@@ -84,11 +96,12 @@ frysk::testbed::LocalMemory::getCodeFile() {
 static void*
 codeAddr() {
 #ifdef __powerpc64__
-  return *((void**) frysk::testbed::LocalMemory::getCodeLine);
+  return *((void**) codeLine);
 #else
-  return (void*)&frysk::testbed::LocalMemory::getCodeLine;
+  return (void*)&codeLine;
 #endif
 }
+
 jlong
 frysk::testbed::LocalMemory::getCodeAddr() {
   return (jlong)codeAddr();
diff --git a/frysk-sys/frysk/testbed/jni/LocalMemory.cxx b/frysk-sys/frysk/testbed/jni/LocalMemory.cxx
index f3d9e02..02c7c6f 100644
--- a/frysk-sys/frysk/testbed/jni/LocalMemory.cxx
+++ b/frysk-sys/frysk/testbed/jni/LocalMemory.cxx
@@ -74,7 +74,14 @@ frysk::testbed::LocalMemory::getDataBytes(::jnixx::env env) {
  * Function used by getCode*(), must be on a single line for __LINE__
  * to work correctly.
  */
-static jint codeLine() { return __LINE__; }
+extern "C" {
+  static jint codeLine() { return __LINE__; }
+}
+
+String
+frysk::testbed::LocalMemory::getCodeName(jnixx::env env) {
+  return String::NewStringUTF(env, "codeLine");
+}
 
 jint
 frysk::testbed::LocalMemory::getCodeLine(::jnixx::env) {
@@ -94,6 +101,7 @@ codeAddr() {
   return (void*)&codeLine;
 #endif
 }
+
 jlong
 frysk::testbed::LocalMemory::getCodeAddr(::jnixx::env) {
   return (jlong)codeAddr();
diff --git a/frysk-sys/lib/dwfl/ChangeLog b/frysk-sys/lib/dwfl/ChangeLog
index d162897..bb39b95 100644
--- a/frysk-sys/lib/dwfl/ChangeLog
+++ b/frysk-sys/lib/dwfl/ChangeLog
@@ -1,5 +1,8 @@
 2008-06-05  Andrew Cagney  <cagney@redhat.com>
 
+	* TestDwfl.java (testGetModules()): Allow for JNI.
+	(testGetDie()): Use LocalMemory.getCodeName.
+
 	* cni/Dwfl.cxx: Fix includes.
 	
 	* DwflLine.java: Pass pointer to native methods.
diff --git a/frysk-sys/lib/dwfl/TestDwfl.java b/frysk-sys/lib/dwfl/TestDwfl.java
index d04e0e6..1e3392b 100644
--- a/frysk-sys/lib/dwfl/TestDwfl.java
+++ b/frysk-sys/lib/dwfl/TestDwfl.java
@@ -42,14 +42,15 @@ package lib.dwfl;
 import java.io.File;
 import java.util.Iterator;
 import java.util.List;
-
+import frysk.rsl.Log;
 import frysk.junit.Runner;
 import frysk.junit.TestCase;
 import frysk.testbed.LocalMemory;
+import frysk.config.Runtime;
+
+public class TestDwfl extends TestCase {
+    public static final Log finest = Log.finest(TestDwfl.class);
 
-public class TestDwfl
-    extends TestCase
-{
   public void testDwfl()
   {
     Dwfl dwfl = new Dwfl("");
@@ -143,88 +144,92 @@ public class TestDwfl
     assertEquals("column", 0, line.getColumn());
   }
 
-  public void testGetDie ()
-  {
-    Dwfl dwfl = DwflTestbed.createFromSelf();
-    assertNotNull(dwfl);
-    
-    DwflDie die = dwfl.getCompilationUnit(LocalMemory.getCodeAddr());
-    assertNotNull("die", die);
-    assertEquals("bias", 0, die.getBias());
+    public void testGetDie() {
+	Dwfl dwfl = DwflTestbed.createFromSelf();
+	assertNotNull("dwfl", dwfl);
     
-    assertEquals("file",
-		 new File(LocalMemory.getCodeFile()).getName(),
-		 new File(die.getName()).getName());
-
-    DwarfDie[] allDies = die.getScopes(LocalMemory.getCodeAddr() - die.getBias());
-    assertNotNull(allDies);
+	DwflDie die = dwfl.getCompilationUnit(LocalMemory.getCodeAddr());
+	assertNotNull("die", die);
+	// assertEquals("bias", 0, die.getBias());
+	assertEquals("file",
+		     new File(LocalMemory.getCodeFile()).getName(),
+		     new File(die.getName()).getName());
 
-    String[] names = {
-	"getCodeLine",
-	new File(LocalMemory.getCodeFile()).getName()
-    };
-
-    for (int i = 0; i < allDies.length; i++)
-      {
-	  assertNotNull("allDies[i]", allDies[i]);
-	  // Enable this line if you think that checking for inlined
-	  // code in a test suite is ok
-//        assertEquals(false, allDies[i].isInlinedFunction());        
-	  if (i == 1)
-	      assertEquals("names[i]", names[i],
-			   new File(allDies[i].getName()).getName());
-	  else
-	      assertEquals(names[i], allDies[i].getName());
-      }
-  }
+	DwarfDie[] allDies
+	    = die.getScopes(LocalMemory.getCodeAddr() - die.getBias());
+	assertNotNull("allDies", allDies);
+	String[] names = {
+	    LocalMemory.getCodeName(),
+	    new File(LocalMemory.getCodeFile()).getName()
+	};
+	for (int i = 0; i < allDies.length; i++) {
+	    assertNotNull("allDies[i]", allDies[i]);
+	    // Enable this line if you think that checking for inlined
+	    // code in a test suite is ok
+	    //        assertEquals(false, allDies[i].isInlinedFunction());        
+	    if (i == 1)
+		assertEquals("names " + i, names[i],
+			     new File(allDies[i].getName()).getName());
+	    else
+		assertEquals("names " + i, names[i], allDies[i].getName());
+	}
+    }
 
-  // Get all the modules of the test application; look for some that
-  // should be there. 
-  public void testGetModules() 
-  {
-    Dwfl dwfl = DwflTestbed.createFromSelf();
-    DwflModule[] modules = dwfl.getModules();
-    assertNotNull(modules);
-    // Look for some modules that should be there.
-    boolean foundTestRunner = false;
-    boolean foundlibc = false;
-    boolean foundlibgcj = false;
-    for (int i = 0; i < modules.length; i++) 
-      {
-	String modName = modules[i].getName();
-	if (modName.lastIndexOf (Runner.getProgramBasename ()) >= 0)
-	  foundTestRunner = true;
-	else if (modName.lastIndexOf("libc") >= 0)
-	  foundlibc = true;
-	else if (modName.lastIndexOf("libgcj") >= 0)
-	  foundlibgcj = true;
-      }
-    assertTrue(foundTestRunner && foundlibc && foundlibgcj);
-  }
+    /**
+     * Get all the modules of the test application; look for some that
+     * should be there.
+     */
+    public void testGetModules() {
+	Dwfl dwfl = DwflTestbed.createFromSelf();
+	DwflModule[] modules = dwfl.getModules();
+	assertNotNull("modules", modules);
+	// Look for some modules that should be there.
+	boolean foundSelf = false;
+	boolean foundlibc = false;
+	for (int i = 0; i < modules.length; i++) {
+	    String modName = modules[i].getName();
+	    if (modName.lastIndexOf("libc") >= 0) {
+		foundlibc = true;
+		continue;
+	    }
+	    if (Runtime.get() == Runtime.JAVA_NATIVE_INTERFACE) {
+		if (modName.lastIndexOf("libfrysk-sys-jni.so") >= 0) {
+		    foundSelf = true;
+		}
+	    }
+	    if (Runtime.get() == Runtime.COMPILER_NATIVE_INTERFACE) {
+		if (modName.lastIndexOf (Runner.getProgramBasename ()) >= 0) {
+		    foundSelf = true;
+		}
+	    }
+	}
+	assertTrue("found libc", foundlibc);
+	assertTrue("found self", foundSelf);
+    }
 
-  // Get a line from an address, then see that the address is included
-  // in the DwflLine records returned for a line.
-  public void testGetAddresses() 
-  {
-    Dwfl dwfl = DwflTestbed.createFromSelf();
-    assertNotNull(dwfl);
-    long addr = LocalMemory.getCodeAddr();
-    DwflLine line = dwfl.getSourceLine(addr);
-    assertNotNull(line);
-    List lines = dwfl.getLineAddresses(line.getSourceFile(), 
-					 line.getLineNum(),
-					 0);
-    Iterator linesIterator = lines.iterator();
-    boolean foundAddress = false;
-    while (linesIterator.hasNext()) 
-      {
-	DwflLine addrLine = (DwflLine)linesIterator.next();
-	if (addrLine.getAddress() == addr) 
-	  {
-	    foundAddress = true;
-	    break;
-	  }
-      }
-    assertTrue(foundAddress);
-  }
+    /**
+     * Get a line from an address, then see that the address is
+     * included in the DwflLine records returned for a line.
+     */
+    public void testGetAddresses() {
+	Dwfl dwfl = DwflTestbed.createFromSelf();
+	assertNotNull("dwfl", dwfl);
+	long addr = LocalMemory.getCodeAddr();
+	finest.log("addr", addr);
+	DwflLine line = dwfl.getSourceLine(addr);
+	assertNotNull("line", line);
+	List lines = dwfl.getLineAddresses(line.getSourceFile(), 
+					   line.getLineNum(),
+					   0);
+	Iterator linesIterator = lines.iterator();
+	boolean foundAddress = false;
+	while (linesIterator.hasNext()) {
+	    DwflLine addrLine = (DwflLine)linesIterator.next();
+	    if (addrLine.getAddress() == addr) {
+		foundAddress = true;
+		break;
+	    }
+	}
+	assertTrue(foundAddress);
+    }
 }


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


                 reply	other threads:[~2008-06-06  2:12 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=20080606021248.10345.qmail@sourceware.org \
    --to=cagney@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).