public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cmoller@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Massive update from my local working copy into the frysk tree.
Date: Mon, 18 Feb 2008 17:53:00 -0000	[thread overview]
Message-ID: <20080218175259.10925.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  d599db9bb2a2410232f96c688c9d795a2c9d590b (commit)
      from  cc9ac95bda7b3ebb504f9be9b67168c7aa6d6ee3 (commit)

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

- Log -----------------------------------------------------------------
commit d599db9bb2a2410232f96c688c9d795a2c9d590b
Author: Chris Moller <moller@hotbox.mollernet.net>
Date:   Mon Feb 18 12:52:48 2008 -0500

    Massive update from my local working copy into the frysk tree.

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

Summary of changes:
 frysk-utrace/utracer/aux/bitter.c                  |   44 ++++++++
 frysk-utrace/utracer/aux/fp.c                      |    9 ++
 frysk-utrace/utracer/aux/mallocer.c                |    7 ++
 frysk-utrace/utracer/aux/pf.c                      |    6 +
 frysk-utrace/utracer/aux/spinner.c                 |   10 ++
 frysk-utrace/utracer/aux/testsyscall               |  Bin 0 -> 6142 bytes
 frysk-utrace/utracer/aux/testsyscall.c             |   71 +++++++++++++
 frysk-utrace/utracer/aux/tryopt.c                  |   42 ++++++++
 frysk-utrace/utracer/aux/ts                        |  Bin 0 -> 5439 bytes
 frysk-utrace/utracer/aux/ts.c                      |   25 +++++
 frysk-utrace/utracer/judb/tjudb                    |   11 ++
 .../utracer/utracer/docs/utracer_check_pid.sgml    |    7 ++
 .../utracer/docs/utracer_check_pid_body.sgml       |   95 ++++++++++++++++++
 .../utracer/utracer/docs/utracer_close.sgml        |    7 ++
 .../utracer/utracer/docs/utracer_close_body.sgml   |   46 +++++++++
 .../utracer/utracer/docs/utracer_detach.sgml       |    7 ++
 .../utracer/utracer/docs/utracer_detach_body.sgml  |   93 +++++++++++++++++
 .../utracer/utracer/docs/utracer_get_pids.sgml     |    7 ++
 .../utracer/docs/utracer_get_pids_body.sgml        |   94 ++++++++++++++++++
 frysk-utrace/utracer/utracer/docs/utracer_run.sgml |    7 ++
 .../utracer/utracer/docs/utracer_run_body.sgml     |   81 +++++++++++++++
 .../utracer/utracer/docs/utracer_sync.sgml         |    7 ++
 .../utracer/utracer/docs/utracer_sync_body.sgml    |  104 ++++++++++++++++++++
 .../utracer/utracer/docs/utracer_unregister.sgml   |    7 --
 .../utracer/docs/utracer_unregister_body.sgml      |   70 -------------
 .../utracer/utracer/docs/utracer_xref.sgml         |   41 ++++++++
 26 files changed, 821 insertions(+), 77 deletions(-)
 create mode 100644 frysk-utrace/utracer/aux/bitter.c
 create mode 100644 frysk-utrace/utracer/aux/fp.c
 create mode 100644 frysk-utrace/utracer/aux/mallocer.c
 create mode 100644 frysk-utrace/utracer/aux/pf.c
 create mode 100644 frysk-utrace/utracer/aux/spinner.c
 create mode 100755 frysk-utrace/utracer/aux/testsyscall
 create mode 100644 frysk-utrace/utracer/aux/testsyscall.c
 create mode 100644 frysk-utrace/utracer/aux/tryopt.c
 create mode 100755 frysk-utrace/utracer/aux/ts
 create mode 100644 frysk-utrace/utracer/aux/ts.c
 create mode 100755 frysk-utrace/utracer/judb/tjudb
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_check_pid.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_check_pid_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_close.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_close_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_detach.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_detach_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_get_pids.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_get_pids_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_run.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_run_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_sync.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_sync_body.sgml
 delete mode 100644 frysk-utrace/utracer/utracer/docs/utracer_unregister.sgml
 delete mode 100644 frysk-utrace/utracer/utracer/docs/utracer_unregister_body.sgml
 create mode 100644 frysk-utrace/utracer/utracer/docs/utracer_xref.sgml

First 500 lines of diff:
diff --git a/frysk-utrace/utracer/aux/bitter.c b/frysk-utrace/utracer/aux/bitter.c
new file mode 100644
index 0000000..fd68584
--- /dev/null
+++ b/frysk-utrace/utracer/aux/bitter.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <alloca.h>
+#include <strings.h>
+
+void
+show_bitvec (unsigned long * bitvec, int nr_longs)
+{
+  int i;
+  for (i = 0; i < nr_longs; i++) fprintf (stderr, "%08x ", bitvec[i]);
+  fprintf (stderr, "\n");
+}
+
+#define set_bit(bv, b) (bv[(b)/(8*sizeof(long))] |= (1<<((b)%(8*sizeof(long)))))
+#define test_bit(bv, b) (bv[(b)/(8*sizeof(long))] & (1<<((b)%(8*sizeof(long)))))
+#define clear_bit(bv, b) (bv[(b)/(8*sizeof(long))] &= ~(1<<((b)%(8*sizeof(long)))))
+
+main (int ac, char * av[])
+{
+  unsigned long * bitvec;
+  int nr_bits		= atoi (av[1]);
+  int bit_to_set	= atoi (av[2]);
+  int bit_to_clear	= atoi (av[3]);
+  int bit_to_test	= atoi (av[4]);
+  int nr_bits_per_long	= 8 * sizeof(long);
+  int nr_longs		= (nr_bits + (nr_bits_per_long -1))/nr_bits_per_long;
+
+  fprintf (stderr, "nr_longs = %d\n", nr_longs);
+
+  bitvec = alloca (nr_longs * sizeof(long));
+  bzero (bitvec, nr_longs * sizeof(long));
+
+  show_bitvec (bitvec, nr_longs);
+
+  if (bit_to_set < nr_bits) set_bit (bitvec, bit_to_set);
+  show_bitvec (bitvec, nr_longs);
+
+  if (bit_to_clear < nr_bits) clear_bit (bitvec, bit_to_clear);
+  show_bitvec (bitvec, nr_longs);
+
+  if (bit_to_test < nr_bits)
+    fprintf (stderr, "bit %d is %s\n", bit_to_test,
+	     (test_bit (bitvec, bit_to_test) ? "on" : "off"));
+}
diff --git a/frysk-utrace/utracer/aux/fp.c b/frysk-utrace/utracer/aux/fp.c
new file mode 100644
index 0000000..1a4454b
--- /dev/null
+++ b/frysk-utrace/utracer/aux/fp.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+main()
+{
+  double result;
+  
+  asm ("FLDPI");
+  asm ("FSTP %[result]" : [result] "=f" (result));
+}
diff --git a/frysk-utrace/utracer/aux/mallocer.c b/frysk-utrace/utracer/aux/mallocer.c
new file mode 100644
index 0000000..32661ea
--- /dev/null
+++ b/frysk-utrace/utracer/aux/mallocer.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+#include <malloc.h>
+
+main()
+{
+  char * ggg = malloc (64);
+}
diff --git a/frysk-utrace/utracer/aux/pf.c b/frysk-utrace/utracer/aux/pf.c
new file mode 100644
index 0000000..c094522
--- /dev/null
+++ b/frysk-utrace/utracer/aux/pf.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+main (int ac, char * av[])
+{
+  fprintf (stderr, "\"%.*s\"\n", atoi (av[1]), av[2]);
+}
diff --git a/frysk-utrace/utracer/aux/spinner.c b/frysk-utrace/utracer/aux/spinner.c
new file mode 100644
index 0000000..924110c
--- /dev/null
+++ b/frysk-utrace/utracer/aux/spinner.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+#include <unistd.h>
+
+main()
+{
+  while(1) {
+    fprintf (stderr, "tick\n");
+    sleep (1);
+  }
+}
diff --git a/frysk-utrace/utracer/aux/testsyscall b/frysk-utrace/utracer/aux/testsyscall
new file mode 100755
index 0000000..b901213
Binary files /dev/null and b/frysk-utrace/utracer/aux/testsyscall differ
diff --git a/frysk-utrace/utracer/aux/testsyscall.c b/frysk-utrace/utracer/aux/testsyscall.c
new file mode 100644
index 0000000..84eaf80
--- /dev/null
+++ b/frysk-utrace/utracer/aux/testsyscall.c
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <error.h>
+#include <errno.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+
+
+/*
+ * for write:
+ *
+ *	orig_eax = syscall nr (4)
+ *	eax = rc (-ENOSYS = -38)
+ *	ebx = fd (1 for stdout)
+ *	ecx = addr of string
+ *	edx = length of string
+ *
+ * for read:
+ *
+ *	orig_eax = syscall nr (4)
+ *	eax = rc (-ENOSYS = -38)
+ *	ebx = fd (6 for opened file)
+ *	ecx = addr of string
+ *	edx = length of string (4096 for buffered read)
+ *
+ * for open
+ *
+ *	orig_eax = syscall nr (5)
+ *	eax = rc (-ENOSYS = -38)
+ *
+ * for close
+ *
+ *	orig_eax = syscall nr (6)
+ *	eax = rc (-ENOSYS = -38)
+ *	ebx = fd (6 for opened file)
+ *
+ * for alloca
+ *
+ *	orig_eax = syscall nr (45 == brk)
+ *	eax = rc (-ENOSYS = -38)
+ *
+ */
+
+char arg1[] = {"one"};
+char arg2[] = {"two"};
+char arg3[] = {"three"};
+
+char * val[] = {
+  arg1,
+  arg2,
+  arg3,
+  NULL
+};
+
+main()
+{
+#define BSIZE 256
+  char * bffr = malloc (BSIZE);
+  FILE * file = fopen ("./aux/testsyscall.c", "r");
+  if (!file) error (1, errno, "fopen");
+
+  fprintf (stderr, "bffr = %08x\n", file);
+  
+  vfprintf (stdout, "%s %s %s\n", (va_list)val);
+
+  while (fgets (bffr, BSIZE, file)) fprintf (stdout, "%s", bffr);
+
+  fclose (file);
+  free (bffr);
+  _exit (0);
+}
diff --git a/frysk-utrace/utracer/aux/tryopt.c b/frysk-utrace/utracer/aux/tryopt.c
new file mode 100644
index 0000000..cddb789
--- /dev/null
+++ b/frysk-utrace/utracer/aux/tryopt.c
@@ -0,0 +1,42 @@
+#define _GNU_SOURCE
+#include <getopt.h>
+#include <stdio.h>
+#include <unistd.h>
+
+main (int ac, char * av[])
+{
+  int run = 1;
+
+  fprintf (stderr, "pass 1\n");
+  while (1 == run) {
+    int val = getopt_long (ac, av, "a:m:w:l:r", NULL, NULL);
+    switch (val) {
+    case 'a':
+      fprintf (stderr, "got an a: %s\n", optarg);
+      break;
+    case 'm':
+      fprintf (stderr, "got an m: %s\n", optarg);
+      break;
+    case 'r':
+      run = 0;
+      break;
+    }
+  }
+
+  fprintf (stderr, "pass 2\n");
+  while (1 == run) {
+    int val = getopt_long (ac, av, "a:m:w:l:r", NULL, NULL);
+    switch (val) {
+    case 'a':
+      fprintf (stderr, "got an a: %s\n", optarg);
+      break;
+    case 'm':
+      fprintf (stderr, "got an m: %s\n", optarg);
+      break;
+    case 'r':
+      _exit (0);
+      break;
+    }
+  }
+}
+
diff --git a/frysk-utrace/utracer/aux/ts b/frysk-utrace/utracer/aux/ts
new file mode 100755
index 0000000..c57d42f
Binary files /dev/null and b/frysk-utrace/utracer/aux/ts differ
diff --git a/frysk-utrace/utracer/aux/ts.c b/frysk-utrace/utracer/aux/ts.c
new file mode 100644
index 0000000..9d858e0
--- /dev/null
+++ b/frysk-utrace/utracer/aux/ts.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <malloc.h>
+#include <alloca.h>
+
+char * arg1 = "one\n";
+
+main()
+{
+  char * arg2 = "two\n";
+  char * arg3 = malloc(8);
+  char * arg4 = alloca(8);
+
+  bzero (arg3, 8);
+  bzero (arg4, 8);
+  strcpy (arg3, "three\n");
+  strcpy (arg4, "four\n");
+
+  write (fileno(stdout), arg1, strlen(arg1));
+  write (fileno(stdout), arg2, strlen(arg2));
+  write (fileno(stdout), arg3, strlen(arg3));
+  write (fileno(stdout), arg4, strlen(arg4));
+  _exit (0);
+}
diff --git a/frysk-utrace/utracer/judb/tjudb b/frysk-utrace/utracer/judb/tjudb
new file mode 100755
index 0000000..5861786
--- /dev/null
+++ b/frysk-utrace/utracer/judb/tjudb
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+stty sane
+
+lsmod | grep -q utracer
+if (( $? != 0 )); then sudo /sbin/insmod ../utracer/module/utracer.ko; fi
+
+./Judb
+
+sudo /sbin/rmmod ../utracer/module/utracer.ko
+
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_check_pid.sgml b/frysk-utrace/utracer/utracer/docs/utracer_check_pid.sgml
new file mode 100644
index 0000000..0d57708
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_check_pid.sgml
@@ -0,0 +1,7 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [
+<!ENTITY checkpid SYSTEM "utracer_check_pid_body.sgml">
+]>
+
+<refentry id="utracercheckpid">
+  &checkpid;
+</refentry>
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_check_pid_body.sgml b/frysk-utrace/utracer/utracer/docs/utracer_check_pid_body.sgml
new file mode 100644
index 0000000..1e32674
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_check_pid_body.sgml
@@ -0,0 +1,95 @@
+<refmeta>
+  <refentrytitle>utracer_check_pid</refentrytitle>
+  <manvolnum>2</manvolnum>
+</refmeta>
+
+<refnamediv>
+  <refname>utracer_check_pid</refname>
+  <refpurpose>verifies that a specified pid is attached to a specified
+  client</refpurpose> 
+</refnamediv>
+
+<refsynopsisdiv>
+  <funcsynopsis>
+    <funcsynopsisinfo>
+      #include &lt;utracer.h&gt;
+    </funcsynopsisinfo>
+    <funcprototype>
+      <funcdef>long <function>utracer_check_pid</function></funcdef>
+      <paramdef>long <parameter>client_pid</parameter></paramdef>
+      <paramdef>long <parameter>traced_pid</parameter></paramdef>
+    </funcprototype>
+  </funcsynopsis>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+  <para>
+    The <function>utracer_check_pid</function>() function verifies that the
+    process specified by the <parameter>traced_pid</parameter> parameter
+    is attached to the client specified by the
+    <parameter>client_pid</parameter> parameter.
+  </para>
+</refsect1>
+
+<refsect1>
+  <title>Return Value</title>
+  <para>
+    If successful, <function>utracer_check_pid</function>() returns zero,
+    indicating that the process specified by <parameter>traced_pid</parameter>
+    exists and is attached to the specified client.  If the call is not
+    successful, it will return a -1 and set <varname>errno</varname>.  The
+    value of <varname>errno</varname> will be either of those appropriate to
+    the <function>open</function>() system call (q.v.) or one of the following
+    (some of which are unique to the utracer module).
+  </para>
+</refsect1>
+
+<refsect1>
+  <title>Errors</title>
+  <variablelist>
+      
+    <varlistentry>
+      <term><constant>ESRCH</constant></term>
+      <listitem>
+	<para>
+	  The traced process no longer exists.
+	</para>
+      </listitem>
+    </varlistentry>
+      
+    <varlistentry>
+      <term><constant>UTRACER_ETRACING</constant></term>
+      <listitem>
+	<para>
+	  The process specified by the <parameter>client_pid</parameter>
+          parameter either doesn't exist or isn't registered as a utracer
+          client.
+	</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><constant>UTRACER_ETRACED</constant></term>
+      <listitem>
+        <para>
+          The process specified by the <parameter>traced_pid</parameter>
+          parameter has not been registered (via
+          <function>utracer_attach</function>()) with utracer.
+        </para>
+      </listitem>
+    </varlistentry>
+      
+    <varlistentry>
+      <term><constant>UTRACER_EENGINE</constant></term>
+      <listitem>
+	<para>
+	  The process specified by the <parameter>traced_pid</parameter>
+          parameter is no longer attached.
+	</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refsect1>
+
+&xref;
+
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_close.sgml b/frysk-utrace/utracer/utracer/docs/utracer_close.sgml
new file mode 100644
index 0000000..a9003ea
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_close.sgml
@@ -0,0 +1,7 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [
+<!ENTITY unregister SYSTEM "utracer_close_body.sgml">
+]>
+
+<refentry id="utracerclose">
+  &close;
+</refentry>
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_close_body.sgml b/frysk-utrace/utracer/utracer/docs/utracer_close_body.sgml
new file mode 100644
index 0000000..eee76a5
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_close_body.sgml
@@ -0,0 +1,46 @@
+<refmeta>
+  <refentrytitle>utracer_close</refentrytitle>
+  <manvolnum>2</manvolnum>
+</refmeta>
+
+<refnamediv>
+  <refname>utracer_close</refname>
+  <refpurpose>close a connection to the utracer kernel module</refpurpose> 
+</refnamediv>
+
+<refsynopsisdiv>
+  <funcsynopsis>
+    <funcsynopsisinfo>
+      #include &lt;utracer.h&gt;
+    </funcsynopsisinfo>
+    <funcprototype>
+      <funcdef>int <function>utracer_close</function></funcdef>
+      <paramdef>long <parameter>client_pid</parameter></paramdef>
+    </funcprototype>
+  </funcsynopsis>
+</refsynopsisdiv>
+
+<refsect1>
+  <title>Description</title>
+  <para>
+    <function>utracer_close</function>() is used to close the connection
+    previously opened by <function>utracer_open</function>() to the utracer
+    kernel module.  The parameter <parameter>client_pid</parameter> must be the
+    value returned by a successful <function>utracer_open</function>() call.
+  </para>
+</refsect1>
+
+<refsect1>
+  <title>Return Value</title>
+  <para>
+    If successful, <function>utracer_close</function>() returns a zero;
+    otherwise a -1 is returned and <varname>errno</varname> is set with a value
+    determined by an <function>ioctl</function>() call (q.v.) or to
+    <errorname>UTRACER_ETRACING</errorname> if either the parameter
+    <parameter>pid</parameter> is invalid or does not refer to a previously
+    established connection.
+  </para>
+</refsect1>
+
+&xref;
+
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_detach.sgml b/frysk-utrace/utracer/utracer/docs/utracer_detach.sgml
new file mode 100644
index 0000000..39a0a8d
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_detach.sgml
@@ -0,0 +1,7 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [
+<!ENTITY detach SYSTEM "utracer_detach_body.sgml">
+]>
+
+<refentry id="utracerdetach">
+  &detach;
+</refentry>
diff --git a/frysk-utrace/utracer/utracer/docs/utracer_detach_body.sgml b/frysk-utrace/utracer/utracer/docs/utracer_detach_body.sgml
new file mode 100644
index 0000000..69dada9
--- /dev/null
+++ b/frysk-utrace/utracer/utracer/docs/utracer_detach_body.sgml
@@ -0,0 +1,93 @@
+<refmeta>
+  <refentrytitle>utracer_detach</refentrytitle>
+  <manvolnum>2</manvolnum>
+</refmeta>
+
+<refnamediv>
+  <refname>utracer_detach</refname>
+  <refpurpose>detach a specified process from a specified client</refpurpose> 
+</refnamediv>
+
+<refsynopsisdiv>
+  <funcsynopsis>
+    <funcsynopsisinfo>
+      #include &lt;utracer.h&gt;
+    </funcsynopsisinfo>


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


                 reply	other threads:[~2008-02-18 17:53 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=20080218175259.10925.qmail@sourceware.org \
    --to=cmoller@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).