summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /sys-block/megactl/files/megactl-0.4.1-tracefix.patch
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'sys-block/megactl/files/megactl-0.4.1-tracefix.patch')
-rw-r--r--sys-block/megactl/files/megactl-0.4.1-tracefix.patch232
1 files changed, 232 insertions, 0 deletions
diff --git a/sys-block/megactl/files/megactl-0.4.1-tracefix.patch b/sys-block/megactl/files/megactl-0.4.1-tracefix.patch
new file mode 100644
index 000000000000..915cc2d2a20d
--- /dev/null
+++ b/sys-block/megactl/files/megactl-0.4.1-tracefix.patch
@@ -0,0 +1,232 @@
+diff -Nuar megactl-0.4.1.orig/src/megactl.c megactl-0.4.1/src/megactl.c
+--- megactl-0.4.1.orig/src/megactl.c 2007-08-21 00:19:53.000000000 -0700
++++ megactl-0.4.1/src/megactl.c 2014-07-14 11:15:14.538745305 -0700
+@@ -45,6 +45,9 @@
+
+ ********************************************************************/
+
++#define __STDC_FORMAT_MACROS
++#include <inttypes.h>
++
+ #include "mega.h"
+ #include "megaioctl.h"
+ #include "adapter.h"
+@@ -207,7 +210,7 @@
+
+ for (k = 0; (b >= 1024) && (k < sizeof (suffix) / sizeof (suffix[0]) - 1); ++k, b /= 1024)
+ ;
+- snprintf (bytes, sizeof bytes, "%3llu%s%s", b, suffix[k], unit);
++ snprintf (bytes, sizeof bytes, "%3"PRIu64"%s%s", b, suffix[k], unit);
+ return bytes;
+ }
+
+@@ -604,6 +607,8 @@
+ fprintf (stderr, "megaraid driver version %x too old.\n", driverVersion);
+ return 1;
+ }
++#else
++ driverVersion = 0;
+ #endif
+
+ if (megaGetNumAdapters (fd, &numAdapters, sas) < 0)
+diff -Nuar megactl-0.4.1.orig/src/megaioctl.c megactl-0.4.1/src/megaioctl.c
+--- megactl-0.4.1.orig/src/megaioctl.c 2014-07-14 11:30:03.590781305 -0700
++++ megactl-0.4.1/src/megaioctl.c 2014-07-14 11:31:36.410258930 -0700
+@@ -87,7 +87,11 @@
+ m->cmd = cmd;
+ m->opcode = opcode;
+ m->subopcode = subopcode;
++#ifdef __x86_64__
++ m->xferaddr = (uint64_t) data;
++#else
+ m->xferaddr = (uint32_t) data;
++#endif
+ if (data)
+ memset (data, 0, len);
+
+@@ -115,7 +119,11 @@
+ m->cmd = cmd;
+ m->opcode = opcode;
+ m->subopcode = subopcode;
++#ifdef __x86_64__
++ m->xferaddr = (uint64_t) data;
++#else
+ m->xferaddr = (uint32_t) data;
++#endif
+ if (data)
+ memset (data, 0, len);
+
+@@ -178,11 +186,19 @@
+ u.ui.fcs.adapno = MKADAP(adapter->adapno);
+ u.data = data;
+ m->cmd = MBOXCMD_PASSTHRU;
++#ifdef __x86_64__
++ m->xferaddr = (uint64_t) p;
++#else
+ m->xferaddr = (uint32_t) p;
++#endif
+ p->timeout = 3;
+ p->ars = 1;
+ p->target = target;
+- p->dataxferaddr = (uint32_t) data;
++#ifdef __x86_64__
++ p->dataxferaddr = (uint64_t) data;
++#else
++ p->dataxferaddr = (uint32_t) data;
++#endif
+ p->dataxferlen = len;
+ p->scsistatus = 239; /* HMMM */
+ memcpy (p->cdb, cdb, cdblen);
+diff -Nuar megactl-0.4.1.orig/src/megatrace.c megactl-0.4.1/src/megatrace.c
+--- megactl-0.4.1.orig/src/megatrace.c 2014-07-14 01:31:47.704312799 -0700
++++ megactl-0.4.1/src/megatrace.c 2014-07-14 11:37:20.570755832 -0700
+@@ -170,7 +170,11 @@
+ fprintf (stderr, "ptrace:getregs: %s\n", strerror (errno));
+ exit (1);
+ }
++#ifdef __x86_64__
++ call = r.orig_rax;
++#else
+ call = r.orig_eax;
++#endif
+ /*printthis = call == SYS_ioctl;*/
+
+ if (state == INBOUND)
+@@ -188,18 +192,30 @@
+ {
+ if ((call < 0) || (call > callmax) || (callinfo[call].name == NULL))
+ {
++#ifdef __x86_64__
++ fprintf (stderr, "= 0x%08llx\n", (unsigned long long) r.rax);
++#else
+ fprintf (stderr, "= 0x%08lx\n", (unsigned long) r.eax);
++#endif
+ }
+ else
+ {
+ if (callinfo[call].ptrval)
+ {
+ if (printcalls || printthis)
++#ifdef __x86_64__
++ fprintf (stderr, " = 0x%08llx\n", r.rax);
++#else
+ fprintf (stderr, " = 0x%08lx\n", r.eax);
++#endif
+ }
+ else
+ {
++#ifdef __x86_64__
++ long rv = r.rax;
++#else
+ long rv = r.eax;
++#endif
+ if (rv < 0)
+ {
+ if (printcalls || printthis)
+@@ -219,16 +235,22 @@
+ unsigned int len = 16;
+ unsigned char buf[65536];
+
++#ifdef __x86_64__
++ unsigned long long fd = r.rbx;
++ unsigned long long ioc = r.rcx;
++ unsigned long long arg = r.rdx;
++#else
+ unsigned long fd = r.ebx;
+-
+ unsigned long ioc = r.ecx;
++ unsigned long arg = r.edx;
++#endif
++
+ unsigned int iocdir = _IOC_DIR(ioc);
+ unsigned char ioctype = _IOC_TYPE(ioc);
+ unsigned int iocnr = _IOC_NR(ioc);
+ unsigned int iocsize = _IOC_SIZE(ioc);
+ char *iocdirname;
+
+- unsigned long arg = r.edx;
+
+ switch (iocdir)
+ {
+@@ -240,7 +262,11 @@
+
+ fprintf (stderr, "%s: ioctl(%ld, _IOC(\"%s\",'%c',0x%02x,0x%02x), 0x%08lx)", tbuf, fd, iocdirname, ioctype, iocnr, iocsize, arg);
+ if (state == OUTBOUND)
++#ifdef __x86_64__
++ fprintf (stderr, " = %lld\n", r.rax);
++#else
+ fprintf (stderr, " = %ld\n", r.eax);
++#endif
+ if (getenv ("LOG_INBOUND"))
+ fprintf (stderr, "\n");
+
+@@ -249,10 +275,18 @@
+ if (len > sizeof buf)
+ len = sizeof buf;
+
++#ifdef __x86_64__
++ if (printregs)
++ fprintf (stderr, " rbx=%08llx rcx=%08llx rdx=%08llx rsi=%08llx rdi=%08llx rbp=%08llx rax=%08llx ds=%08llx es=%08llx fs=%08llx gs=%08llx orig_rax=%08llx rip=%08llx cs=%08llx eflags=%08llx rsp=%08llx ss=%08llx\n", r.rbx, r.rcx, r.rdx, r.rsi, r.rdi, r.rbp, r.rax, r.ds, r.es, r.fs, r.gs, r.orig_rax, r.rip, r.cs, r.eflags, r.rsp, r.ss);
++
++ copyout (buf, len, pid, r.rdx);
++#else
+ if (printregs)
+ fprintf (stderr, " ebx=%08lx ecx=%08lx edx=%08lx esi=%08lx edi=%08lx ebp=%08lx eax=%08lx xds=%08lx xes=%08lx xfs=%08lx xgs=%08lx orig_eax=%08lx eip=%08lx xcs=%08lx eflags=%08lx esp=%08lx xss=%08lx\n", r.ebx, r.ecx, r.edx, r.esi, r.edi, r.ebp, r.eax, r.xds, r.xes, r.xfs, r.xgs, r.orig_eax, r.eip, r.xcs, r.eflags, r.esp, r.xss);
+
+ copyout (buf, len, pid, r.edx);
++#endif
++
+
+ if ((ioctype == 'm') && (iocnr == 0) && (iocsize == sizeof (struct uioctl_t)))
+ {
+@@ -405,7 +439,11 @@
+ else
+ {
+ fprintf (stderr, " host %d, off 0x%04x, count %d, sense_off 0x%08x, sense_len 0x%08x\n", iocp->host_no, iocp->sgl_off, iocp->sge_count, iocp->sense_off, iocp->sense_len);
++#ifdef __x86_64__
++ dumpbytes (stderr, buf, len, (void *) r.rdx, NULL);
++#else
+ dumpbytes (stderr, buf, len, (void *) r.edx, NULL);
++#endif
+ }
+ if (log)
+ {
+@@ -427,23 +465,38 @@
+ }
+ else
+ {
++#ifdef __x86_64__
++ dumpbytes (stderr, buf, len, (void *) r.rdx, NULL);
++#else
+ dumpbytes (stderr, buf, len, (void *) r.edx, NULL);
++#endif
+ }
+ fprintf (stderr, "\n");
+ }
+
+ switch (state)
+ {
++#ifdef __x86_64__
++ static u64 lastrip = 0;
++#else
+ static u32 lasteip = 0;
++#endif
++
+
+ case UNTRACED:
+ /* We don't know whether we were inbound or outbound on the first signal; this
+ appears to differ between kernels. So we defer until we see the same eip in
+ two successive traps, at which point we know we were outbound, so the next
+ trap is inbound. */
++#ifdef __x86_64__
++ if (lastrip == r.rip)
++ state = INBOUND;
++ lastrip = r.rip;
++#else
+ if (lasteip == r.eip)
+ state = INBOUND;
+ lasteip = r.eip;
++#endif
+ break;
+ case INBOUND: state = OUTBOUND; break;
+ case OUTBOUND: state = INBOUND; break;