Date: Sun, 03 Feb 2008 13:21:31 +0200 From: Andrew Pogrebennyk <marduk@portaone.com> To: John Birrell <jb@what-creek.com> Cc: freebsd-current@freebsd.org Subject: Re: DTrace/FreeBSD source snapshot Message-ID: <47A5A3BB.7010407@portaone.com> In-Reply-To: <20080202203632.GB96610@what-creek.com> References: <20080201093538.GA83169@what-creek.com> <18339.35979.765504.132672@grasshopper.cs.duke.edu> <20080201223719.GA88460@what-creek.com> <47A4700B.3000001@portaone.com> <20080202203632.GB96610@what-creek.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
John Birrell wrote:
> On Sat, Feb 02, 2008 at 03:28:43PM +0200, Andrew Pogrebennyk wrote:
>> In these lines we are trying to case pointer to struct trapframe to
>> pointer to u_char like:
>> frame->tf_eip += dtrace_instr_size((u_char *) frame->tf_eip);
>> What do i do to get it to work?
>
> Looks like I'm missing:
>
> #include <machine/frame.h>
Thanks. Attached patch summarizes what I've done so far on i386 for
compilation to succeed. But one thing remains unresolved:
cc1: warnings being treated as errors
In file included from
/usr/src/sys/modules/dtrace/dtrace/../../../contrib/opensolaris/uts/common/dtrace/dtrace.c:121:
/usr/src/sys/modules/dtrace/dtrace/../../../cddl/dev/dtrace/dtrace_debug.c:
In function 'dtrace_debug_lock':
/usr/src/sys/modules/dtrace/dtrace/../../../cddl/dev/dtrace/dtrace_debug.c:73:
warning: implicit declaration of function 'dtrace_cmpset_long'
/usr/src/sys/modules/dtrace/dtrace/../../../cddl/dev/dtrace/dtrace_debug.c:73:
warning: nested extern declaration of 'dtrace_cmpset_long'
*** Error code 1
I see that in dtrace_debug.c definition of dtrace_cmpset_long() is
enclosed in #if defined(__amd64__) and there is no such definition for
i386. If I make gcc ignore errors, the kernel does not boot: it
complains on unresolved symbol 'dtrace_cmpset_long'.
--
Sincerely,
Andrew Pogrebennyk
[-- Attachment #2 --]
--- sys/cddl/dev/dtrace/dtrace_ioctl.c.ORIG 2008-02-01 05:40:02.000000000 +0200
+++ sys/cddl/dev/dtrace/dtrace_ioctl.c 2008-02-01 19:37:03.000000000 +0200
@@ -291,7 +291,7 @@
mutex_exit(&dtrace_lock);
- DTRACE_IOCTL_PRINTF("%s(%d): copyout buffer desc: size %zd drops %lu errors %lu\n",__func__,__LINE__,desc.dtbd_size,(u_long) desc.dtbd_drops,(u_long) desc.dtbd_errors);
+ DTRACE_IOCTL_PRINTF("%s(%d): copyout buffer desc: size %llu drops %lu errors %lu\n",__func__,__LINE__,desc.dtbd_size,(u_long) desc.dtbd_drops,(u_long) desc.dtbd_errors);
/*
* Finally, copy out the buffer description.
--- sys/cddl/dev/dtrace/i386/dtrace_subr.c.ORIG 2008-01-05 23:57:24.000000000 +0200
+++ sys/cddl/dev/dtrace/i386/dtrace_subr.c 2008-02-02 23:40:25.000000000 +0200
@@ -35,6 +35,7 @@
#include <sys/kmem.h>
#include <sys/dtrace_impl.h>
#include <sys/dtrace_bsd.h>
+#include <machine/frame.h>
extern uintptr_t kernelbase;
extern uintptr_t dtrace_in_probe_addr;
@@ -418,7 +419,7 @@
/* Function to handle DTrace traps during probes. See i386/i386/trap.c */
int
-dtrace_trap(struct trapframe *frame)
+dtrace_trap(struct trapframe *frame, u_int type)
{
/*
* A trap can occur while DTrace executes a probe. Before
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47A5A3BB.7010407>
