From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10983 invoked by alias); 18 Feb 2008 17:53:08 -0000 Received: (qmail 10940 invoked by uid 9563); 18 Feb 2008 17:52:59 -0000 Date: Mon, 18 Feb 2008 17:53:00 -0000 Message-ID: <20080218175259.10925.qmail@sourceware.org> From: cmoller@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Massive update from my local working copy into the frysk tree. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: cc9ac95bda7b3ebb504f9be9b67168c7aa6d6ee3 X-Git-Newrev: d599db9bb2a2410232f96c688c9d795a2c9d590b Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q1/txt/msg00221.txt.bz2 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 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 +#include +#include +#include + +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 + +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 +#include + +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 + +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 +#include + +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 +#include +#include +#include +#include +#include + + +/* + * 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 +#include +#include + +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 +#include +#include +#include +#include + +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 @@ + +]> + + + &checkpid; + 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 @@ + + utracer_check_pid + 2 + + + + utracer_check_pid + verifies that a specified pid is attached to a specified + client + + + + + + #include <utracer.h> + + + long utracer_check_pid + long client_pid + long traced_pid + + + + +Description + + The utracer_check_pid() function verifies that the + process specified by the traced_pid parameter + is attached to the client specified by the + client_pid parameter. + + + + + Return Value + + If successful, utracer_check_pid() returns zero, + indicating that the process specified by traced_pid + exists and is attached to the specified client. If the call is not + successful, it will return a -1 and set errno. The + value of errno will be either of those appropriate to + the open() system call (q.v.) or one of the following + (some of which are unique to the utracer module). + + + + + Errors + + + + ESRCH + + + The traced process no longer exists. + + + + + + UTRACER_ETRACING + + + The process specified by the client_pid + parameter either doesn't exist or isn't registered as a utracer + client. + + + + + + UTRACER_ETRACED + + + The process specified by the traced_pid + parameter has not been registered (via + utracer_attach()) with utracer. + + + + + + UTRACER_EENGINE + + + The process specified by the traced_pid + parameter is no longer attached. + + + + + + +&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 @@ + +]> + + + &close; + 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 @@ + + utracer_close + 2 + + + + utracer_close + close a connection to the utracer kernel module + + + + + + #include <utracer.h> + + + int utracer_close + long client_pid + + + + + + Description + + utracer_close() is used to close the connection + previously opened by utracer_open() to the utracer + kernel module. The parameter client_pid must be the + value returned by a successful utracer_open() call. + + + + + Return Value + + If successful, utracer_close() returns a zero; + otherwise a -1 is returned and errno is set with a value + determined by an ioctl() call (q.v.) or to + UTRACER_ETRACING if either the parameter + pid is invalid or does not refer to a previously + established connection. + + + +&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 @@ + +]> + + + &detach; + 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 @@ + + utracer_detach + 2 + + + + utracer_detach + detach a specified process from a specified client + + + + + + #include <utracer.h> + hooks/post-receive -- frysk system monitor/debugger