Accepting request 66845 from devel:tools
Accepted submit request 66845 from user coolo OBS-URL: https://build.opensuse.org/request/show/66845 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/strace?expand=0&rev=28
This commit is contained in:
commit
e237a01935
126
io-submit-fix.patch
Normal file
126
io-submit-fix.patch
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
commit c614b5785876c46cb15fd3f340f739926e913859
|
||||||
|
Author: Andi Kleen <ak@linux.intel.com>
|
||||||
|
Date: Wed Apr 6 15:12:41 2011 -0700
|
||||||
|
|
||||||
|
Fix io_submit decoding in strace
|
||||||
|
|
||||||
|
strace didn't decode important fields in the iocb passed to io_submit.
|
||||||
|
This patch changes the code to dump them all. Also I prefixed the fields
|
||||||
|
with names to make it easier to read.
|
||||||
|
|
||||||
|
diff --git a/desc.c b/desc.c
|
||||||
|
index 2b9f30a..57dc755 100644
|
||||||
|
--- a/desc.c
|
||||||
|
+++ b/desc.c
|
||||||
|
@@ -806,6 +806,51 @@ sys_io_destroy(struct tcb *tcp)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#define ARRAY_SIZE(x) (sizeof(x)/sizeof(*(x)))
|
||||||
|
+
|
||||||
|
+enum iocb_sub {
|
||||||
|
+ SUB_NONE, SUB_COMMON, SUB_POLL, SUB_VECTOR
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const char *
|
||||||
|
+iocb_cmd_lookup(unsigned cmd, enum iocb_sub *sub)
|
||||||
|
+{
|
||||||
|
+ static char buf[20];
|
||||||
|
+ static struct {
|
||||||
|
+ const char *name;
|
||||||
|
+ enum iocb_sub sub;
|
||||||
|
+ } cmds[] = {
|
||||||
|
+ { "pread", SUB_COMMON },
|
||||||
|
+ { "pwrite", SUB_COMMON },
|
||||||
|
+ { "fsync", SUB_NONE },
|
||||||
|
+ { "fdsync", SUB_NONE },
|
||||||
|
+ { "op4", SUB_NONE },
|
||||||
|
+ { "poll", SUB_POLL },
|
||||||
|
+ { "noop", SUB_NONE },
|
||||||
|
+ { "preadv", SUB_VECTOR },
|
||||||
|
+ { "pwritev", SUB_VECTOR },
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ if (cmd < ARRAY_SIZE(cmds)) {
|
||||||
|
+ *sub = cmds[cmd].sub;
|
||||||
|
+ return cmds[cmd].name;
|
||||||
|
+ }
|
||||||
|
+ *sub = SUB_NONE;
|
||||||
|
+ snprintf(buf, sizeof buf, "?%u?", cmd);
|
||||||
|
+ return buf;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* Not defined in libaio.h */
|
||||||
|
+#define IOCB_RESFD (1 << 0)
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+print_common_flags(struct iocb *iocb)
|
||||||
|
+{
|
||||||
|
+ if (iocb->u.c.flags & IOCB_RESFD)
|
||||||
|
+ tprintf("resfd=%d, ", iocb->u.c.resfd);
|
||||||
|
+ if (iocb->u.c.flags & ~IOCB_RESFD)
|
||||||
|
+ tprintf("flags=%x, ", iocb->u.c.flags);
|
||||||
|
+}
|
||||||
|
int
|
||||||
|
sys_io_submit(struct tcb *tcp)
|
||||||
|
{
|
||||||
|
@@ -822,7 +867,9 @@ sys_io_submit(struct tcb *tcp)
|
||||||
|
struct iocb *iocbp, **iocbs = (void *)tcp->u_arg[2];
|
||||||
|
|
||||||
|
for (i = 0; i < nr; i++, iocbs++) {
|
||||||
|
+ enum iocb_sub sub;
|
||||||
|
struct iocb iocb;
|
||||||
|
+ int k;
|
||||||
|
if (i == 0)
|
||||||
|
tprintf("{");
|
||||||
|
else
|
||||||
|
@@ -833,10 +880,45 @@ sys_io_submit(struct tcb *tcp)
|
||||||
|
tprintf("{...}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
- tprintf("{%p, %u, %hu, %hu, %d}",
|
||||||
|
- iocb.data, iocb.key,
|
||||||
|
- iocb.aio_lio_opcode,
|
||||||
|
- iocb.aio_reqprio, iocb.aio_fildes);
|
||||||
|
+ tprintf("{");
|
||||||
|
+ if (iocb.data)
|
||||||
|
+ tprintf("data:%p, ", iocb.data);
|
||||||
|
+ if (iocb.key)
|
||||||
|
+ tprintf("key:%u, ", iocb.key);
|
||||||
|
+ tprintf("%s, ", iocb_cmd_lookup(iocb.aio_lio_opcode, &sub));
|
||||||
|
+ if (iocb.aio_reqprio)
|
||||||
|
+ tprintf("reqprio:%d, ", iocb.aio_reqprio);
|
||||||
|
+ tprintf("filedes:%d", iocb.aio_fildes);
|
||||||
|
+ switch (sub) {
|
||||||
|
+ case SUB_COMMON:
|
||||||
|
+ tprintf(", buf:%p, nbytes:%lu, offset:%llx",
|
||||||
|
+ iocb.u.c.buf,
|
||||||
|
+ iocb.u.c.nbytes,
|
||||||
|
+ iocb.u.c.offset);
|
||||||
|
+ print_common_flags(&iocb);
|
||||||
|
+ break;
|
||||||
|
+ case SUB_VECTOR:
|
||||||
|
+ tprintf(", %llx, ", iocb.u.v.offset);
|
||||||
|
+ print_common_flags(&iocb);
|
||||||
|
+ for (k = 0; k < iocb.u.v.nr; k++) {
|
||||||
|
+ struct iovec iov;
|
||||||
|
+ tprintf("%s", k == 0 ? "" : ", ");
|
||||||
|
+ if (umove(tcp, (unsigned long)iocb.u.v.vec +
|
||||||
|
+ sizeof(struct iovec)*k, &iov))
|
||||||
|
+ tprintf("{...}");
|
||||||
|
+ else
|
||||||
|
+ tprintf("{ %p, %lu }",
|
||||||
|
+ iov.iov_base,
|
||||||
|
+ iov.iov_len);
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ case SUB_POLL:
|
||||||
|
+ tprintf(", %x", iocb.u.poll.events);
|
||||||
|
+ break;
|
||||||
|
+ case SUB_NONE:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ tprintf("}");
|
||||||
|
}
|
||||||
|
if (i)
|
||||||
|
tprintf("}");
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:ea8c059369eaa5ad90b246f34eab247d0ee48bfdee2670c7196320a4669ccabd
|
|
||||||
size 504078
|
|
3
strace-4.6.tar.bz2
Normal file
3
strace-4.6.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:52f6044d92558594b1567778951e93a3bc9913edc4a1a4c34fda6a9a85af3c9b
|
||||||
|
size 489582
|
@ -1,294 +0,0 @@
|
|||||||
From: Jeff Mahoney <jeffm@suse.com>
|
|
||||||
Subject: strace: Add support for block ioctls
|
|
||||||
References: bnc#539521
|
|
||||||
|
|
||||||
This patch adds support for blkdev_ioctl()-handled ioctls.
|
|
||||||
|
|
||||||
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
|
||||||
---
|
|
||||||
Makefile.am | 2
|
|
||||||
block.c | 221 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
defs.h | 1
|
|
||||||
ioctl.c | 3
|
|
||||||
linux/ioctlent.sh | 3
|
|
||||||
5 files changed, 229 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: strace-4.5.20/Makefile.am
|
|
||||||
===================================================================
|
|
||||||
--- strace-4.5.20.orig/Makefile.am
|
|
||||||
+++ strace-4.5.20/Makefile.am
|
|
||||||
@@ -15,7 +15,7 @@ INCLUDES = -I$(srcdir)/$(OS)/$(ARCH) -I$
|
|
||||||
strace_SOURCES = strace.c syscall.c count.c util.c desc.c file.c ipc.c \
|
|
||||||
io.c ioctl.c mem.c net.c process.c bjm.c quota.c \
|
|
||||||
resource.c signal.c sock.c system.c term.c time.c \
|
|
||||||
- proc.c scsi.c stream.c
|
|
||||||
+ proc.c scsi.c stream.c block.c
|
|
||||||
noinst_HEADERS = defs.h
|
|
||||||
|
|
||||||
EXTRA_DIST = $(man_MANS) errnoent.sh signalent.sh syscallent.sh ioctlsort.c \
|
|
||||||
Index: strace-4.5.20/block.c
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
|
||||||
+++ strace-4.5.20/block.c
|
|
||||||
@@ -0,0 +1,221 @@
|
|
||||||
+#include "defs.h"
|
|
||||||
+#ifdef LINUX
|
|
||||||
+#include <stdint.h>
|
|
||||||
+#include <linux/blkpg.h>
|
|
||||||
+#include <linux/fs.h>
|
|
||||||
+#include <linux/hdreg.h>
|
|
||||||
+#include <linux/blktrace_api.h>
|
|
||||||
+
|
|
||||||
+#ifndef BLKALIGNOFF
|
|
||||||
+#define BLKALIGNOFF _IO(0x12,122)
|
|
||||||
+#endif
|
|
||||||
+#ifndef BLKPBSZGET
|
|
||||||
+#define BLKPBSZGET _IO(0x12,123)
|
|
||||||
+#endif
|
|
||||||
+#ifndef BLKIOMIN
|
|
||||||
+#define BLKIOMIN _IO(0x12,120)
|
|
||||||
+#endif
|
|
||||||
+#ifndef BLKIOOPT
|
|
||||||
+#define BLKIOOPT _IO(0x12,121)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+print_blkpg_req(struct tcb *tcp, struct blkpg_ioctl_arg *blkpg)
|
|
||||||
+{
|
|
||||||
+ struct blkpg_partition p;
|
|
||||||
+ if (!(blkpg->op == BLKPG_ADD_PARTITION ||
|
|
||||||
+ blkpg->op == BLKPG_DEL_PARTITION)) {
|
|
||||||
+ tprintf("{%d, <invalid>", blkpg->op);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ tprintf("{%s, ", blkpg->op == BLKPG_ADD_PARTITION ?
|
|
||||||
+ "BLKPG_ADD_PARTITION" : "BLKPG_DEL_PARTITION");
|
|
||||||
+ tprintf("flags=%d, datalen=%d, ", blkpg->flags, blkpg->datalen);
|
|
||||||
+
|
|
||||||
+ if (umove(tcp, (unsigned long)blkpg->data, &p) < 0) {
|
|
||||||
+ tprintf("%#lx", (unsigned long)blkpg->data);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ tprintf("{start=%lld, length=%lld, pno=%d, ",
|
|
||||||
+ p.start, p.length, p.pno);
|
|
||||||
+
|
|
||||||
+ tprintf("devname=\"%s\", volname=\"%s\"}",
|
|
||||||
+ p.devname, p.volname);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+block_ioctl(struct tcb *tcp, long code, long arg)
|
|
||||||
+{
|
|
||||||
+ switch (code) {
|
|
||||||
+
|
|
||||||
+ /* These pass arg as a value, not a pointer */
|
|
||||||
+ case BLKRASET:
|
|
||||||
+ case BLKFRASET:
|
|
||||||
+ if (entering(tcp))
|
|
||||||
+ tprintf(", %ld", arg);
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ /* Just pass in a signed int */
|
|
||||||
+ case BLKROSET:
|
|
||||||
+ case BLKBSZSET:
|
|
||||||
+ if (entering(tcp)) {
|
|
||||||
+ int int_val;
|
|
||||||
+ if (umove(tcp, arg, &int_val) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", %d", int_val);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ /* Just return an unsigned short */
|
|
||||||
+ case BLKSECTGET:
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ unsigned short ushort_val;
|
|
||||||
+ if (umove(tcp, arg, &ushort_val) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", %hu", ushort_val);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ /* Just return a signed int */
|
|
||||||
+ case BLKROGET:
|
|
||||||
+ case BLKBSZGET:
|
|
||||||
+ case BLKSSZGET:
|
|
||||||
+ case BLKALIGNOFF:
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ int int_val;
|
|
||||||
+ if (umove(tcp, arg, &int_val) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", %d", int_val);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ /* Just return an unsigned int */
|
|
||||||
+ case BLKPBSZGET:
|
|
||||||
+ case BLKIOMIN:
|
|
||||||
+ case BLKIOOPT:
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ unsigned int uint_val;
|
|
||||||
+ if (umove(tcp, arg, &uint_val) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", %u", uint_val);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ /* Just return a signed long */
|
|
||||||
+ case BLKRAGET:
|
|
||||||
+ case BLKFRAGET:
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ long size;
|
|
||||||
+ if (umove(tcp, arg, &size) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", %ld", size);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ /* Just return an unsigned long */
|
|
||||||
+ case BLKGETSIZE:
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ unsigned long ulong_val;
|
|
||||||
+ if (umove(tcp, arg, &ulong_val) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", %lu", ulong_val);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ /* Just return a quad */
|
|
||||||
+ case BLKGETSIZE64:
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ uint64_t uint64_val;
|
|
||||||
+ if (umove(tcp, arg, &uint64_val) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", %llu", (unsigned long long)uint64_val);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ /* More complex types */
|
|
||||||
+ case BLKDISCARD:
|
|
||||||
+ if (entering(tcp)) {
|
|
||||||
+ uint64_t range[2];
|
|
||||||
+ if (umove(tcp, arg, range) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", {%llx, %llx}",
|
|
||||||
+ (unsigned long long)range[0],
|
|
||||||
+ (unsigned long long)range[1]);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case HDIO_GETGEO:
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ struct hd_geometry geo;
|
|
||||||
+ if (umove(tcp, arg, &geo) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else
|
|
||||||
+ tprintf(", {heads=%hhu, sectors=%hhu, "
|
|
||||||
+ "cylinders=%hu, start=%lu}",
|
|
||||||
+ geo.heads, geo.sectors,
|
|
||||||
+ geo.cylinders, geo.start);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ case BLKPG:
|
|
||||||
+ if (entering(tcp)) {
|
|
||||||
+ struct blkpg_ioctl_arg blkpg;
|
|
||||||
+ if (umove(tcp, arg, &blkpg) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else {
|
|
||||||
+ tprintf(", ");
|
|
||||||
+ print_blkpg_req(tcp, &blkpg);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ tprintf("}");
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ case BLKTRACESETUP:
|
|
||||||
+ if (entering(tcp)) {
|
|
||||||
+ struct blk_user_trace_setup buts;
|
|
||||||
+ if (umove(tcp, arg, &buts) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else {
|
|
||||||
+ tprintf(", {act_mask=%hu, buf_size=%u, ",
|
|
||||||
+ buts.act_mask, buts.buf_size);
|
|
||||||
+ tprintf("buf_nr=%u, start_lba=%llu, ",
|
|
||||||
+ buts.buf_nr, buts.start_lba);
|
|
||||||
+ tprintf("end_lba=%llu, pid=%u}",
|
|
||||||
+ buts.end_lba, buts.pid);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (exiting(tcp)) {
|
|
||||||
+ struct blk_user_trace_setup buts;
|
|
||||||
+ if (umove(tcp, arg, &buts) < 0)
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ else {
|
|
||||||
+ tprintf(", {name=\"%s\"}", buts.name);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ /* No arguments or unhandled */
|
|
||||||
+ case BLKFLSBUF: /* Requires driver knowlege */
|
|
||||||
+ case BLKRRPART: /* No args */
|
|
||||||
+ case BLKTRACESTART:
|
|
||||||
+ case BLKTRACESTOP:
|
|
||||||
+ case BLKTRACETEARDOWN:
|
|
||||||
+ default:
|
|
||||||
+ if (entering(tcp))
|
|
||||||
+ tprintf(", %#lx", arg);
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ };
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+#endif /* LINUX */
|
|
||||||
Index: strace-4.5.20/defs.h
|
|
||||||
===================================================================
|
|
||||||
--- strace-4.5.20.orig/defs.h
|
|
||||||
+++ strace-4.5.20/defs.h
|
|
||||||
@@ -550,6 +550,7 @@ extern int stream_ioctl(struct tcb *, in
|
|
||||||
#ifdef LINUX
|
|
||||||
extern int rtc_ioctl(struct tcb *, long, long);
|
|
||||||
extern int scsi_ioctl(struct tcb *, long, long);
|
|
||||||
+extern int block_ioctl(struct tcb *, long, long);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern int tv_nz(struct timeval *);
|
|
||||||
Index: strace-4.5.20/ioctl.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-4.5.20.orig/ioctl.c
|
|
||||||
+++ strace-4.5.20/ioctl.c
|
|
||||||
@@ -152,6 +152,9 @@ long code, arg;
|
|
||||||
#ifdef LINUX
|
|
||||||
case 'p':
|
|
||||||
return rtc_ioctl(tcp, code, arg);
|
|
||||||
+ case 0x03:
|
|
||||||
+ case 0x12:
|
|
||||||
+ return block_ioctl(tcp, code, arg);
|
|
||||||
case 0x22:
|
|
||||||
return scsi_ioctl(tcp, code, arg);
|
|
||||||
#endif
|
|
||||||
Index: strace-4.5.20/linux/ioctlent.sh
|
|
||||||
===================================================================
|
|
||||||
--- strace-4.5.20.orig/linux/ioctlent.sh
|
|
||||||
+++ strace-4.5.20/linux/ioctlent.sh
|
|
||||||
@@ -69,6 +69,9 @@ lookup_ioctls 56 linux/vt.h
|
|
||||||
lookup_ioctls '7[12]' linux/videotext.h
|
|
||||||
lookup_ioctls 89 $asm/sockios.h asm-generic/sockios.h linux/sockios.h
|
|
||||||
lookup_ioctls 8B linux/wireless.h
|
|
||||||
+lookup_ioctls 03 linux/hdreg.h
|
|
||||||
+lookup_ioctls fd dm-ioctl.h
|
|
||||||
+lookup_ioctls 52 linux/rfkill.h
|
|
||||||
|
|
||||||
if [ -e $dir/Kbuild ]; then
|
|
||||||
# kernel has exported user space headers, so query only them
|
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
linux/sparc/syscall.h | 6 ++++++
|
|
||||||
1 file changed, 6 insertions(+)
|
|
||||||
|
|
||||||
Index: strace-4.5.20/linux/sparc/syscall.h
|
|
||||||
===================================================================
|
|
||||||
--- strace-4.5.20.orig/linux/sparc/syscall.h
|
|
||||||
+++ strace-4.5.20/linux/sparc/syscall.h
|
|
||||||
@@ -215,6 +215,12 @@ int sys_move_pages(), sys_getcpu();
|
|
||||||
int sys_epoll_pwait();
|
|
||||||
int sys_signalfd(), sys_timerfd(), sys_eventfd();
|
|
||||||
|
|
||||||
+int sys_mbind(), sys_get_mempolicy(), sys_set_mempolicy();
|
|
||||||
+int sys_utimensat(), sys_timerfd_create(), sys_fallocate();
|
|
||||||
+int sys_timerfd_settime(), sys_timerfd_gettime(), sys_signalfd4();
|
|
||||||
+int sys_eventfd2(), sys_epoll_create1(), sys_dup3(), sys_pipe2();
|
|
||||||
+int sys_inotify_init1();
|
|
||||||
+
|
|
||||||
# define SYS_socket_subcall 353
|
|
||||||
#define SYS_sub_socket (SYS_socket_subcall + 1)
|
|
||||||
#define SYS_sub_bind (SYS_socket_subcall + 2)
|
|
@ -1,3 +1,55 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Apr 11 15:30:46 CEST 2011 - meissner@suse.de
|
||||||
|
|
||||||
|
- More AIO decoding from Andi Kleen, bnc#679917
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Mar 16 11:13:09 CET 2011 - meissner@suse.de
|
||||||
|
|
||||||
|
- Updated to 4.6
|
||||||
|
* Changes in behavior
|
||||||
|
* Print diagnostic information about changes in personality mode to
|
||||||
|
standard error instead of standard output.
|
||||||
|
* Improvements
|
||||||
|
* Implemented a new method of following clone, fork, and vfork
|
||||||
|
syscalls using the Linux kernel's explicit facilities for tracing
|
||||||
|
creation of threads and child processes.
|
||||||
|
* Implemented CLONE_PARENT and CLONE_UNTRACED flags handling.
|
||||||
|
* Implemented decoding of TLS syscalls on m68k.
|
||||||
|
* Implemented biarch support on powerpc64.
|
||||||
|
* Implemented biarch support for getrlimit() and setrlimit().
|
||||||
|
* Implemented decoding of struct ucred in getsockopt SO_PEERCRED.
|
||||||
|
* Implemented SOL_SCTP socket options decoding.
|
||||||
|
* Added HDIO_* ioctl names. (Addresses Debian bug #450953).
|
||||||
|
* Added LOOP_* ioctl names.
|
||||||
|
* Updated lists of CLOCK_*, CLONE_*, MS_*, and SOL_* constants to match Linux 2.6.37.
|
||||||
|
* Updated the list of IPPROTO_* constants to match netinet/in.h.
|
||||||
|
* Implemented decoding of HDIO_* and BLK* ioctls.
|
||||||
|
* Added MicroBlaze architecture support.
|
||||||
|
* Added new syscall entries to match Linux 2.6.37.
|
||||||
|
* Regenerated list of ioctl names from Linux 2.6.37.
|
||||||
|
* Enhanced signal notification decoding.
|
||||||
|
* Documented -C and -D options.
|
||||||
|
* Bug fixes
|
||||||
|
* Fixed fetching syscall arguments on m68k.
|
||||||
|
* Fixed an error when judging whether a process has children.
|
||||||
|
* Fixed get/set_robust_list syscall numbers for powerpc.
|
||||||
|
* Fixed a corner case in printing clone flags.
|
||||||
|
* Fixed cross-compiling issues.
|
||||||
|
* Fixed build issues on powerpc64, SH and SPARC.
|
||||||
|
* Fixed syscall flags of fstatat*, mmap, mmap2, fadvise64*, swapoff,
|
||||||
|
fgetxattr, flistxattr, fremovexattr, epoll_create, fallocate,
|
||||||
|
fanotify_init, and fanotify_mark syscalls.
|
||||||
|
* Fixed decoding of get[ug]id, gete[ug]id and setfs[ug]id return values.
|
||||||
|
* Fixed biarch support in IO dumping.
|
||||||
|
* Fixed raw exit_group decoding.
|
||||||
|
* Fixed decoding of file descriptors on 64-bit architectures.
|
||||||
|
* Fixed a corner case in waitpid handling. (Addresses Red Hat bug #663547).
|
||||||
|
* Fixed stat64 decoding on mips (Addresses Debian bug #599028).
|
||||||
|
* Fixed misleading italics in the manual page. (Addresses Debian bug #589323).
|
||||||
|
- buildrequire libaio-devel bnc#679917
|
||||||
|
- buildrequire lksctp-tools-devel for sctp decoding
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Dec 8 11:35:56 UTC 2010 - puzel@novell.com
|
Wed Dec 8 11:35:56 UTC 2010 - puzel@novell.com
|
||||||
|
|
||||||
|
25
strace.spec
25
strace.spec
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: strace
|
Name: strace
|
||||||
BuildRequires: libacl-devel
|
BuildRequires: libacl-devel libaio-devel lksctp-tools-devel
|
||||||
License: BSD3c
|
License: BSD3c
|
||||||
Group: Development/Tools/Debuggers
|
Group: Development/Tools/Debuggers
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
@ -27,14 +27,13 @@ AutoReqProv: on
|
|||||||
Obsoletes: strace-64bit
|
Obsoletes: strace-64bit
|
||||||
%endif
|
%endif
|
||||||
#
|
#
|
||||||
Version: 4.5.20
|
Version: 4.6
|
||||||
Release: 5
|
Release: 5
|
||||||
Summary: A utility to trace the system calls of a program
|
Summary: A utility to trace the system calls of a program
|
||||||
Source: http://dl.sourceforge.net/strace/strace-%{version}.tar.bz2
|
Source: http://dl.sourceforge.net/strace/strace-%{version}.tar.bz2
|
||||||
Source2: baselibs.conf
|
Source2: baselibs.conf
|
||||||
Patch: strace-%{version}.diff
|
Patch0: strace-%{version}.diff
|
||||||
Patch2: strace-sparc-proto.diff
|
Patch1: io-submit-fix.patch
|
||||||
Patch3: strace-add-support-for-block-ioctls.patch
|
|
||||||
Url: http://sourceforge.net/projects/strace/
|
Url: http://sourceforge.net/projects/strace/
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
@ -53,24 +52,24 @@ Authors:
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch -p1
|
%patch0 -p1
|
||||||
%patch2 -p1
|
%patch1 -p1
|
||||||
%patch3 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export CFLAGS="$RPM_OPT_FLAGS"
|
export CFLAGS="$RPM_OPT_FLAGS"
|
||||||
%ifarch alpha
|
%ifarch alpha
|
||||||
CFLAGS="$CFLAGS -ffixed-8"
|
CFLAGS="$CFLAGS -ffixed-8"
|
||||||
%endif
|
%endif
|
||||||
# strace-add-support-for-block-ioctls.patch modifies Makefile.am
|
%configure \
|
||||||
autoreconf -fi
|
|
||||||
./configure \
|
|
||||||
%ifarch %sparc
|
%ifarch %sparc
|
||||||
--host=%_target_platform \
|
--host=%_target_platform
|
||||||
%endif
|
%endif
|
||||||
--prefix=%{_prefix} --mandir=%{_mandir}
|
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
%check
|
||||||
|
make check
|
||||||
|
|
||||||
%install
|
%install
|
||||||
make install DESTDIR=$RPM_BUILD_ROOT
|
make install DESTDIR=$RPM_BUILD_ROOT
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user