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