public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Implement jni/CmdLineBuilder.
@ 2008-05-20 13:19 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-05-20 13:19 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  131f1576b9fea62702a2a776e569b444cd7a0630 (commit)
      from  24e628ca394f14d40fb4b297b2ad949cba3c2fa6 (commit)

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

- Log -----------------------------------------------------------------
commit 131f1576b9fea62702a2a776e569b444cd7a0630
Author: Andrew Cagney <cagney@redhat.com>
Date:   Tue May 20 09:17:36 2008 -0400

    Implement jni/CmdLineBuilder.
    
    frysk-core/frysk/isa/corefiles/ChangeLog
    2008-05-20  Andrew Cagney  <cagney@redhat.com>
    
    	* IA32LinuxElfCorefile.java (buildBuffer(byte[])): Delete.
    	* X8664LinuxElfCorefile.java: Ditto.
    	* PPC32LinuxElfCorefile.java: Ditto.
    	* PPC64LinuxElfCorefile.java: Ditto.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-05-20  Andrew Cagney  <cagney@redhat.com>
    
    	* LinuxPtraceProc.java (buildBuffer(byte[])): Delete.
    
    frysk-sys/frysk/sys/proc/ChangeLog
    2008-05-20  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/CmdLineBuilder.cxx: Implement.
    	* CmdLineBuilder.java (buildBuffer(byte[])): Delete.
    	* TestCmdLine.java: Update.
    	* cni/CmdLineBuilder.cxx: Update.

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

Summary of changes:
 frysk-core/frysk/isa/corefiles/ChangeLog           |    7 +++
 .../frysk/isa/corefiles/IA32LinuxElfCorefile.java  |    4 --
 .../frysk/isa/corefiles/PPC32LinuxElfCorefile.java |    4 --
 .../frysk/isa/corefiles/PPC64LinuxElfCorefile.java |    4 --
 .../frysk/isa/corefiles/X8664LinuxElfCorefile.java |    4 --
 frysk-core/frysk/proc/live/ChangeLog               |    4 ++
 frysk-core/frysk/proc/live/LinuxPtraceProc.java    |    2 -
 frysk-sys/frysk/sys/proc/ChangeLog                 |    5 ++
 frysk-sys/frysk/sys/proc/CmdLineBuilder.java       |    6 --
 frysk-sys/frysk/sys/proc/TestCmdLine.java          |    3 -
 frysk-sys/frysk/sys/proc/cni/CmdLineBuilder.cxx    |    3 +-
 frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx    |   54 +++++++++++++++++++-
 12 files changed, 70 insertions(+), 30 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/isa/corefiles/ChangeLog b/frysk-core/frysk/isa/corefiles/ChangeLog
index bb8140c..a0afb19 100644
--- a/frysk-core/frysk/isa/corefiles/ChangeLog
+++ b/frysk-core/frysk/isa/corefiles/ChangeLog
@@ -1,3 +1,10 @@
+2008-05-20  Andrew Cagney  <cagney@redhat.com>
+
+	* IA32LinuxElfCorefile.java (buildBuffer(byte[])): Delete.
+	* X8664LinuxElfCorefile.java: Ditto.
+	* PPC32LinuxElfCorefile.java: Ditto.
+	* PPC64LinuxElfCorefile.java: Ditto.
+
 2008-03-11  Andrew Cagney  <cagney@redhat.com>
 
 	* TestLinuxElfCorefile.java: Update to match Offspring.
diff --git a/frysk-core/frysk/isa/corefiles/IA32LinuxElfCorefile.java b/frysk-core/frysk/isa/corefiles/IA32LinuxElfCorefile.java
index 56d0b77..d7aa00d 100644
--- a/frysk-core/frysk/isa/corefiles/IA32LinuxElfCorefile.java
+++ b/frysk-core/frysk/isa/corefiles/IA32LinuxElfCorefile.java
@@ -129,10 +129,6 @@ public class IA32LinuxElfCorefile extends LinuxElfCorefile {
 	class BuildCmdLine extends CmdLineBuilder {
 	    String prettyArgs = "";
 
-	    public void buildBuffer(byte[] buf) {
-
-	    }
-
 	    public void buildArgv(String[] argv) {
 
 		for (int i = 0; i < argv.length; i++)
diff --git a/frysk-core/frysk/isa/corefiles/PPC32LinuxElfCorefile.java b/frysk-core/frysk/isa/corefiles/PPC32LinuxElfCorefile.java
index 2f2e5c7..bbab7c2 100644
--- a/frysk-core/frysk/isa/corefiles/PPC32LinuxElfCorefile.java
+++ b/frysk-core/frysk/isa/corefiles/PPC32LinuxElfCorefile.java
@@ -135,10 +135,6 @@ public class PPC32LinuxElfCorefile extends LinuxElfCorefile {
 	class BuildCmdLine extends CmdLineBuilder {
 	    String prettyArgs = "";
 
-	    public void buildBuffer(byte[] buf) {
-
-	    }
-
 	    public void buildArgv(String[] argv) {
 
 		for (int i = 0; i < argv.length; i++)
diff --git a/frysk-core/frysk/isa/corefiles/PPC64LinuxElfCorefile.java b/frysk-core/frysk/isa/corefiles/PPC64LinuxElfCorefile.java
index f1d2ad4..0e977f9 100644
--- a/frysk-core/frysk/isa/corefiles/PPC64LinuxElfCorefile.java
+++ b/frysk-core/frysk/isa/corefiles/PPC64LinuxElfCorefile.java
@@ -133,10 +133,6 @@ public class PPC64LinuxElfCorefile extends LinuxElfCorefile {
 	class BuildCmdLine extends CmdLineBuilder {
 	    String prettyArgs = "";
 
-	    public void buildBuffer(byte[] buf) {
-
-	    }
-
 	    public void buildArgv(String[] argv) {
 
 		for (int i = 0; i < argv.length; i++)
diff --git a/frysk-core/frysk/isa/corefiles/X8664LinuxElfCorefile.java b/frysk-core/frysk/isa/corefiles/X8664LinuxElfCorefile.java
index f5079dd..d18fe0d 100644
--- a/frysk-core/frysk/isa/corefiles/X8664LinuxElfCorefile.java
+++ b/frysk-core/frysk/isa/corefiles/X8664LinuxElfCorefile.java
@@ -128,10 +128,6 @@ public class X8664LinuxElfCorefile extends LinuxElfCorefile {
 	class BuildCmdLine extends CmdLineBuilder {
 	    String prettyArgs = "";
 
-	    public void buildBuffer(byte[] buf) {
-
-	    }
-
 	    public void buildArgv(String[] argv) {
 
 		for (int i = 0; i < argv.length; i++)
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index 5c4a96f..211ec66 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,3 +1,7 @@
+2008-05-20  Andrew Cagney  <cagney@redhat.com>
+
+	* LinuxPtraceProc.java (buildBuffer(byte[])): Delete.
+
 2008-05-14  Phil Muldoon  <pmuldoon@redhat.com>
 
 	* LinuxPtraceTaskState.java (Running.checkWatchpoint): Check watchpoint
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceProc.java b/frysk-core/frysk/proc/live/LinuxPtraceProc.java
index f789d84..d05466b 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceProc.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceProc.java
@@ -197,8 +197,6 @@ public class LinuxPtraceProc extends LiveProc {
 	if (cmdLine == null) {
 	    class BuildCmdLine extends CmdLineBuilder {
 		String[] argv;
-		public void buildBuffer (byte[] buf) {
-		}
 		public void buildArgv (String[] argv) {
 		    this.argv = argv;
 		}
diff --git a/frysk-sys/frysk/sys/proc/ChangeLog b/frysk-sys/frysk/sys/proc/ChangeLog
index cabdfac..0bf727e 100644
--- a/frysk-sys/frysk/sys/proc/ChangeLog
+++ b/frysk-sys/frysk/sys/proc/ChangeLog
@@ -1,5 +1,10 @@
 2008-05-20  Andrew Cagney  <cagney@redhat.com>
 
+	* jni/CmdLineBuilder.cxx: Implement.
+	* CmdLineBuilder.java (buildBuffer(byte[])): Delete.
+	* TestCmdLine.java: Update.
+	* cni/CmdLineBuilder.cxx: Update.
+
 	* jni/AuxvBuilder.cxx: Implement.
 
 2008-05-14  Andrew Cagney  <cagney@redhat.com>
diff --git a/frysk-sys/frysk/sys/proc/CmdLineBuilder.java b/frysk-sys/frysk/sys/proc/CmdLineBuilder.java
index 61a9a7a..9869dbc 100644
--- a/frysk-sys/frysk/sys/proc/CmdLineBuilder.java
+++ b/frysk-sys/frysk/sys/proc/CmdLineBuilder.java
@@ -72,12 +72,6 @@ public abstract class CmdLineBuilder {
     public final native boolean construct (byte[] cmdline);
 
     /**
-     * Called with the raw byte buffer slurped by {@link
-     * #construct(int)}.
-     */
-    abstract public void buildBuffer (byte[] cmdline);
-
-    /**
      * Build the argument vector corresponding to <tt>cmdline</tt>.
      */
     abstract public void buildArgv (String[] argv);
diff --git a/frysk-sys/frysk/sys/proc/TestCmdLine.java b/frysk-sys/frysk/sys/proc/TestCmdLine.java
index f108d34..a7f8a08 100644
--- a/frysk-sys/frysk/sys/proc/TestCmdLine.java
+++ b/frysk-sys/frysk/sys/proc/TestCmdLine.java
@@ -60,9 +60,6 @@ public class TestCmdLine
 	    extends CmdLineBuilder
 	{
 	    String[] argv;
-	    public void buildBuffer (byte[] auxv)
-	    {
-	    }
 	    public void buildArgv (String[] argv)
 	    {
 		this.argv = argv;
diff --git a/frysk-sys/frysk/sys/proc/cni/CmdLineBuilder.cxx b/frysk-sys/frysk/sys/proc/cni/CmdLineBuilder.cxx
index a7dc5f7..7798feb 100644
--- a/frysk-sys/frysk/sys/proc/cni/CmdLineBuilder.cxx
+++ b/frysk-sys/frysk/sys/proc/cni/CmdLineBuilder.cxx
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2006, Red Hat Inc.
+// Copyright 2006, 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
@@ -50,7 +50,6 @@ frysk::sys::proc::CmdLineBuilder::construct (jint pid)
   jbyteArray buf = slurp (pid, "cmdline");
   if (buf == NULL)
     return false;
-  buildBuffer (buf);
   return construct (buf);
 }
 
diff --git a/frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx b/frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx
index b358932..8a432db 100644
--- a/frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx
+++ b/frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2008, Red Hat Inc.
+// Copyright 2006, 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
@@ -38,3 +38,55 @@
 // exception.
 
 #include "jni.hxx"
+
+#include "jnixx/exceptions.hxx"
+#include "jnixx/elements.hxx"
+
+using namespace java::lang;
+
+static bool
+construct(jnixx::env env, frysk::sys::proc::CmdLineBuilder* builder,
+	  Bytes& bytes) {
+  // Count the number of parameters.
+  int argc = 0;
+  for (int i = 0; i < bytes.length; i++) {
+    if (bytes.elements[i] == '\0')
+      argc++;
+  }
+
+  // Create the array.
+  jnixx::array<String> argv
+    = jnixx::array<String>::NewObjectArray(env, argc);
+
+  // Copy over the strings.
+  int start = 0;
+  argc = 0;
+  for (int i = 0; i < bytes.length; i++) {
+    if (bytes.elements[i] == '\0') {
+      argv.SetObjectArrayElement(env, argc, String::NewStringUTF(env, (const char*)bytes.elements + start));
+      start = i + 1;
+      argc++;
+    }
+  }
+  builder->buildArgv(env, argv);
+  return true;
+}
+
+bool
+frysk::sys::proc::CmdLineBuilder::construct(jnixx::env env, jint pid) {
+  FileBytes bytes = FileBytes(env, pid, "cmdline");
+  if (bytes.elements == NULL)
+    return false;
+  bool ok = ::construct(env, this, bytes);
+  bytes.release();
+  return ok;
+}
+
+bool
+frysk::sys::proc::CmdLineBuilder::construct(jnixx::env env,
+					    jnixx::byteArray buf) {
+  ArrayBytes bytes = ArrayBytes(env, buf);
+  bool ok = ::construct(env, this, bytes);
+  bytes.release();
+  return ok;
+}


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


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

only message in thread, other threads:[~2008-05-20 13:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-20 13:19 [SCM] master: Implement jni/CmdLineBuilder cagney

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