public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Move getSourceLine from Dwfl to DwflModule.
Date: Thu, 05 Jun 2008 23:15:00 -0000	[thread overview]
Message-ID: <20080605231506.12219.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  b10ad03749019cfbac9a2f531f47bcebac7511b2 (commit)
      from  6c5c57e7c1e887ccedbab85f9da5074e691d44a1 (commit)

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

- Log -----------------------------------------------------------------
commit b10ad03749019cfbac9a2f531f47bcebac7511b2
Author: Andrew Cagney <cagney@redhat.com>
Date:   Thu Jun 5 19:14:09 2008 -0400

    Move getSourceLine from Dwfl to DwflModule.
    
    frysk-sys/lib/dwfl/ChangeLog
    2008-06-05  Andrew Cagney  <cagney@redhat.com>
    
    	* DwflLine.java: Pass pointer to native methods.
    	(DwflLine(long,DwflModule)): Replace DwflLine(long,Dwfl).
    	(getPointer()): Delete.
    	* cni/DwflLine.cxx: Update.
    	* jni/DwflLine.cxx: Update.
    	* DwflModule.java (getSourceLine()): New.
    	(dwfl_module_getsrc): New.
    	* jni/DwflModule.cxx: Update.
    	* cni/DwflModule.cxx: Update.
    	* Dwfl.java (getSourceLine()): Call DwflModule.getSourceLine.
    	(dwfl_getsrc): Delete.
    	* cni/Dwfl.cxx: Update.
    	* jni/Dwfl.cxx: Update.

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

Summary of changes:
 frysk-sys/lib/dwfl/ChangeLog          |   14 ++++
 frysk-sys/lib/dwfl/Dwfl.java          |   17 +----
 frysk-sys/lib/dwfl/DwflLine.java      |  109 +++++++++++++-------------------
 frysk-sys/lib/dwfl/DwflModule.java    |   19 ++++++
 frysk-sys/lib/dwfl/cni/Dwfl.cxx       |    5 --
 frysk-sys/lib/dwfl/cni/DwflLine.cxx   |   47 +++++++-------
 frysk-sys/lib/dwfl/cni/DwflModule.cxx |    7 ++-
 frysk-sys/lib/dwfl/jni/Dwfl.cxx       |    5 --
 frysk-sys/lib/dwfl/jni/DwflLine.cxx   |   12 ++--
 frysk-sys/lib/dwfl/jni/DwflModule.cxx |    8 ++-
 10 files changed, 124 insertions(+), 119 deletions(-)

First 500 lines of diff:
diff --git a/frysk-sys/lib/dwfl/ChangeLog b/frysk-sys/lib/dwfl/ChangeLog
index e6ff387..1160aa0 100644
--- a/frysk-sys/lib/dwfl/ChangeLog
+++ b/frysk-sys/lib/dwfl/ChangeLog
@@ -1,5 +1,19 @@
 2008-06-05  Andrew Cagney  <cagney@redhat.com>
 
+	* DwflLine.java: Pass pointer to native methods.
+	(DwflLine(long,DwflModule)): Replace DwflLine(long,Dwfl).
+	(getPointer()): Delete.
+	* cni/DwflLine.cxx: Update.
+	* jni/DwflLine.cxx: Update.
+	* DwflModule.java (getSourceLine()): New.
+	(dwfl_module_getsrc): New.
+	* jni/DwflModule.cxx: Update.
+	* cni/DwflModule.cxx: Update.
+	* Dwfl.java (getSourceLine()): Call DwflModule.getSourceLine.
+	(dwfl_getsrc): Delete.
+	* cni/Dwfl.cxx: Update.
+	* jni/Dwfl.cxx: Update.
+	
 	* DwflDie.java: Replace DwflDieBias.java; extends DwarfDie.
 	* DwarfDieFactory.java (makeDwflDie(long,DwflModule)): New.
 	* DwarfDie.java: Simplify.
diff --git a/frysk-sys/lib/dwfl/Dwfl.java b/frysk-sys/lib/dwfl/Dwfl.java
index ecb1fd2..9e9ef82 100644
--- a/frysk-sys/lib/dwfl/Dwfl.java
+++ b/frysk-sys/lib/dwfl/Dwfl.java
@@ -81,16 +81,11 @@ public class Dwfl {
     private static native void callbacksEnd(long callbacks);
     
     public DwflLine getSourceLine (long addr) {
-	long val = 0;
-	try {
-	    val = dwfl_getsrc(addr);
-	} catch (NullPointerException npe) {
-	    System.out.println(npe.getMessage());
-	    val = 0;
-	}
-	if (val == 0)
+	DwflModule module = getModule(addr);
+	if (module == null) {
 	    return null;
-	return new DwflLine(val, this);
+	}
+	return module.getSourceLine(addr);
     }
 
     public DwflDie getCompilationUnit (long addr) {
@@ -304,8 +299,4 @@ public class Dwfl {
 	}
 	return null;
     }
-
-    // protected native long[] dwfl_get_modules();
-    // protected native long[] dwfl_getdwarf();
-    protected native long dwfl_getsrc (long addr);
 }
diff --git a/frysk-sys/lib/dwfl/DwflLine.java b/frysk-sys/lib/dwfl/DwflLine.java
index 637d33d..061e475 100644
--- a/frysk-sys/lib/dwfl/DwflLine.java
+++ b/frysk-sys/lib/dwfl/DwflLine.java
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2005, 2007 Red Hat Inc.
+// Copyright 2005, 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
@@ -37,70 +37,49 @@
 // version and license this file solely under the GPL without
 // exception.
 
-
 package lib.dwfl;
 
-public class DwflLine
-{
-
-  private long pointer;
-
-  private Dwfl parent;
-
-  DwflLine (long pointer, Dwfl parent)
-  {
-    this.pointer = pointer;
-    this.parent = parent;
-  }
-
-  public String toString()
-  {
-    return "DwflLine[0x" + Long.toHexString(getAddress())
-      + " " + getSourceFile() + ":" + getLineNum() + ":" + getColumn() + "]";
-  }
-
-  public String getSourceFile ()
-  {
-    return dwfl_lineinfo_source();
-  }
-
-  public long getAddress ()
-  {
-    return dwfl_lineinfo_addr();
-  }
-
-  public int getLineNum ()
-  {
-    return dwfl_lineinfo_linenum();
-  }
-
-  public int getColumn ()
-  {
-    return dwfl_lineinfo_col();
-  }
-
-  public String getCompilationDir ()
-  {
-    return dwfl_linecomp_dir();
-  }
-
-  protected long getPointer ()
-  {
-    return pointer;
-  }
-
-  protected Dwfl getParent ()
-  {
-    return this.parent;
-  }
-
-  protected native String dwfl_lineinfo_source ();
-
-  protected native long dwfl_lineinfo_addr ();
-
-  protected native int dwfl_lineinfo_linenum ();
-
-  protected native int dwfl_lineinfo_col ();
-
-  protected native String dwfl_linecomp_dir ();
+public class DwflLine {
+
+    private long pointer;
+    private DwflModule parent;
+
+    DwflLine(long pointer, DwflModule parent) {
+	this.pointer = pointer;
+	this.parent = parent;
+    }
+
+    DwflModule getParent() {
+	return parent;
+    }
+
+    public String toString() {
+	return "DwflLine[0x" + Long.toHexString(getAddress())
+	    + " " + getSourceFile() + ":" + getLineNum() + ":" + getColumn() + "]";
+    }
+
+    public String getSourceFile() {
+	return dwfl_lineinfo_source(pointer);
+    }
+    private static native String dwfl_lineinfo_source(long pointer);
+
+    public long getAddress() {
+	return dwfl_lineinfo_addr(pointer);
+    }
+    private static native long dwfl_lineinfo_addr(long pointer);
+
+    public int getLineNum() {
+	return dwfl_lineinfo_linenum(pointer);
+    }
+    private static native int dwfl_lineinfo_linenum(long pointer);
+
+    public int getColumn() {
+	return dwfl_lineinfo_col(pointer);
+    }
+    private native int dwfl_lineinfo_col(long pointer);
+
+    public String getCompilationDir() {
+	return dwfl_line_comp_dir(pointer);
+    }
+    private native String dwfl_line_comp_dir(long pointer);
 }
diff --git a/frysk-sys/lib/dwfl/DwflModule.java b/frysk-sys/lib/dwfl/DwflModule.java
index 39cb01a..b262ec4 100644
--- a/frysk-sys/lib/dwfl/DwflModule.java
+++ b/frysk-sys/lib/dwfl/DwflModule.java
@@ -174,4 +174,23 @@ public class DwflModule {
     }
     private long bias = -1;
     private static native long dwflModuleGetBias(long pointer);
+
+
+    /**
+     * Return line information for the specified address.
+     */
+    public DwflLine getSourceLine(long addr) {
+	try {
+	    long dwflLinePointer = dwfl_module_getsrc(pointer, addr);
+	    if (dwflLinePointer == 0) {
+		return null;
+	    } else {
+		return new DwflLine(dwflLinePointer, this);
+	    }
+	} catch (NullPointerException npe) {
+	    System.out.println(npe.getMessage());
+	    return null;
+	}
+    }
+    private static native long dwfl_module_getsrc(long pointer, long addr);
 }
diff --git a/frysk-sys/lib/dwfl/cni/Dwfl.cxx b/frysk-sys/lib/dwfl/cni/Dwfl.cxx
index bba5dd0..066c5cc 100644
--- a/frysk-sys/lib/dwfl/cni/Dwfl.cxx
+++ b/frysk-sys/lib/dwfl/cni/Dwfl.cxx
@@ -202,8 +202,3 @@ struct ModuleAdderData
   DwflModuleArray *moduleArray;
   int index;
 };
-
-jlong
-lib::dwfl::Dwfl::dwfl_getsrc(jlong addr){
-  return (jlong) ::dwfl_getsrc(DWFL_POINTER, (::Dwarf_Addr) addr);
-}
diff --git a/frysk-sys/lib/dwfl/cni/DwflLine.cxx b/frysk-sys/lib/dwfl/cni/DwflLine.cxx
index 93df8ae..8c506e0 100644
--- a/frysk-sys/lib/dwfl/cni/DwflLine.cxx
+++ b/frysk-sys/lib/dwfl/cni/DwflLine.cxx
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2005, Red Hat Inc.
+// Copyright 2005, 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
@@ -36,47 +36,48 @@
 // modification, you must delete this exception statement from your
 // version and license this file solely under the GPL without
 // exception.
+
 #include <libdwfl.h>
 #include <alloca.h>
 #include <gcj/cni.h>
 
 #include "lib/dwfl/DwflLine.h"
 
-#define DWFL_LINE_POINTER (::Dwfl_Line *) this->pointer
+#define DWFL_LINE_POINTER ((::Dwfl_Line *) pointer)
 
 jstring
-lib::dwfl::DwflLine::dwfl_lineinfo_source(){
-	const char* str = ::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, NULL, NULL, NULL, NULL);
-	return JvNewStringUTF(str);
+lib::dwfl::DwflLine::dwfl_lineinfo_source(jlong pointer) {
+  const char* str = ::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, NULL, NULL, NULL, NULL);
+  return JvNewStringUTF(str);
 }
 
 jlong
-lib::dwfl::DwflLine::dwfl_lineinfo_addr(){
-	Dwarf_Addr addr;
-	::dwfl_lineinfo(DWFL_LINE_POINTER, &addr, NULL, NULL, NULL, NULL);
-	return (jlong) addr;
+lib::dwfl::DwflLine::dwfl_lineinfo_addr(jlong pointer) {
+  Dwarf_Addr addr;
+  ::dwfl_lineinfo(DWFL_LINE_POINTER, &addr, NULL, NULL, NULL, NULL);
+  return (jlong) addr;
 }
 
 jint
-lib::dwfl::DwflLine::dwfl_lineinfo_linenum(){
-	int lineNum;
-	::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, &lineNum, NULL, NULL, NULL);
-	return (jint) lineNum;
+lib::dwfl::DwflLine::dwfl_lineinfo_linenum(jlong pointer) {
+  int lineNum;
+  ::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, &lineNum, NULL, NULL, NULL);
+  return (jint) lineNum;
 }
 
 
 jint
-lib::dwfl::DwflLine::dwfl_lineinfo_col(){
-	int col;
-	::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, NULL, &col, NULL, NULL);
-	return (jint) col;
+lib::dwfl::DwflLine::dwfl_lineinfo_col(jlong pointer) {
+  int col;
+  ::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, NULL, &col, NULL, NULL);
+  return (jint) col;
 }
 
 jstring
-lib::dwfl::DwflLine::dwfl_linecomp_dir(){
-	const char *dir = ::dwfl_line_comp_dir(DWFL_LINE_POINTER);	
-	if(dir == NULL){
-	  return JvNewStringUTF("");
-	}
-	return JvNewStringUTF(dir);
+lib::dwfl::DwflLine::dwfl_line_comp_dir(jlong pointer) {
+  const char *dir = ::dwfl_line_comp_dir(DWFL_LINE_POINTER);	
+  if(dir == NULL){
+    return JvNewStringUTF("");
+  }
+  return JvNewStringUTF(dir);
 }
diff --git a/frysk-sys/lib/dwfl/cni/DwflModule.cxx b/frysk-sys/lib/dwfl/cni/DwflModule.cxx
index 5cd51c4..ad85344 100644
--- a/frysk-sys/lib/dwfl/cni/DwflModule.cxx
+++ b/frysk-sys/lib/dwfl/cni/DwflModule.cxx
@@ -101,7 +101,7 @@ lib::dwfl::DwflModule::getLines(jstring filename, jint lineno, jint column)
       for (size_t i = 0; i < nsrcs; i++)
 	{
 	  lib::dwfl::DwflLine *line = new lib::dwfl::DwflLine((jlong)srcsp[i],
-							  getParent());
+							      this);
 	  elements(array)[i] = line;
 	}
       std::free(srcsp);
@@ -498,3 +498,8 @@ lib::dwfl::DwflModule::dwflModuleGetBias(jlong pointer) {
   else
     return -1;
 }
+
+jlong
+lib::dwfl::DwflModule::dwfl_module_getsrc(jlong pointer, jlong addr) {
+  return (jlong) ::dwfl_module_getsrc(DWFL_MODULE_POINTER, (Dwarf_Addr)addr);
+}
diff --git a/frysk-sys/lib/dwfl/jni/Dwfl.cxx b/frysk-sys/lib/dwfl/jni/Dwfl.cxx
index 50d7357..c984daa 100644
--- a/frysk-sys/lib/dwfl/jni/Dwfl.cxx
+++ b/frysk-sys/lib/dwfl/jni/Dwfl.cxx
@@ -185,8 +185,3 @@ lib::dwfl::Dwfl::reportModule(jnixx::env env, jlong pointer,
 				      (::Dwarf_Addr) low,
 				      (::Dwarf_Addr) high);  
 }
-
-jlong
-lib::dwfl::Dwfl::dwfl_getsrc(jnixx::env env, jlong addr){
-  return (jlong) ::dwfl_getsrc(DWFL_POINTER_FIXME, (::Dwarf_Addr) addr);
-}
diff --git a/frysk-sys/lib/dwfl/jni/DwflLine.cxx b/frysk-sys/lib/dwfl/jni/DwflLine.cxx
index 8a8fb5a..32d67ad 100644
--- a/frysk-sys/lib/dwfl/jni/DwflLine.cxx
+++ b/frysk-sys/lib/dwfl/jni/DwflLine.cxx
@@ -44,23 +44,23 @@
 
 using namespace java::lang;
 
-#define DWFL_LINE_POINTER ((::Dwfl_Line *) GetPointer(env))
+#define DWFL_LINE_POINTER ((::Dwfl_Line *) pointer)
 
 String
-lib::dwfl::DwflLine::dwfl_lineinfo_source(jnixx::env env) {
+lib::dwfl::DwflLine::dwfl_lineinfo_source(jnixx::env env, jlong pointer) {
   const char* str = ::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, NULL, NULL, NULL, NULL);
   return String::NewStringUTF(env, str);
 }
 
 jlong
-lib::dwfl::DwflLine::dwfl_lineinfo_addr(jnixx::env env) {
+lib::dwfl::DwflLine::dwfl_lineinfo_addr(jnixx::env env, jlong pointer) {
   Dwarf_Addr addr;
   ::dwfl_lineinfo(DWFL_LINE_POINTER, &addr, NULL, NULL, NULL, NULL);
   return (jlong) addr;
 }
 
 jint
-lib::dwfl::DwflLine::dwfl_lineinfo_linenum(jnixx::env env) {
+lib::dwfl::DwflLine::dwfl_lineinfo_linenum(jnixx::env env, jlong pointer) {
   int lineNum;
   ::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, &lineNum, NULL, NULL, NULL);
   return (jint) lineNum;
@@ -68,14 +68,14 @@ lib::dwfl::DwflLine::dwfl_lineinfo_linenum(jnixx::env env) {
 
 
 jint
-lib::dwfl::DwflLine::dwfl_lineinfo_col(jnixx::env env) {
+lib::dwfl::DwflLine::dwfl_lineinfo_col(jnixx::env env, jlong pointer) {
   int col;
   ::dwfl_lineinfo(DWFL_LINE_POINTER, NULL, NULL, &col, NULL, NULL);
   return (jint) col;
 }
 
 String
-lib::dwfl::DwflLine::dwfl_linecomp_dir(jnixx::env env) {
+lib::dwfl::DwflLine::dwfl_line_comp_dir(jnixx::env env, jlong pointer) {
   const char *dir = ::dwfl_line_comp_dir(DWFL_LINE_POINTER);	
   if(dir == NULL){
     return String::NewStringUTF(env, "");
diff --git a/frysk-sys/lib/dwfl/jni/DwflModule.cxx b/frysk-sys/lib/dwfl/jni/DwflModule.cxx
index 3582efe..09092ce 100644
--- a/frysk-sys/lib/dwfl/jni/DwflModule.cxx
+++ b/frysk-sys/lib/dwfl/jni/DwflModule.cxx
@@ -80,7 +80,7 @@ lib::dwfl::DwflModule::getLines(jnixx::env env, String jfilename,
   DwflLineArray array = DwflLineArray::NewObjectArray(env, nsrcs);
   for (size_t i = 0; i < nsrcs; i++) {
     lib::dwfl::DwflLine line = lib::dwfl::DwflLine::New(env, (jlong)srcsp[i],
-							getParent(env));
+							*this);
     array.SetObjectArrayElement(env, i, line);
     line.DeleteLocalRef(env);
   }
@@ -421,3 +421,9 @@ lib::dwfl::DwflModule::dwflModuleGetBias(jnixx::env env, jlong pointer) {
   else
     return -1;
 }
+
+jlong
+lib::dwfl::DwflModule::dwfl_module_getsrc(jnixx::env env, jlong pointer,
+					  jlong addr) {
+  return (jlong) ::dwfl_module_getsrc(DWFL_MODULE_POINTER, (Dwarf_Addr)addr);
+}


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


                 reply	other threads:[~2008-06-05 23:15 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=20080605231506.12219.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).