public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Implement jni/CmdLineBuilder.
Date: Tue, 20 May 2008 13:19:00 -0000	[thread overview]
Message-ID: <20080520131853.29452.qmail@sourceware.org> (raw)

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


                 reply	other threads:[~2008-05-20 13:19 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=20080520131853.29452.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).