19 messages in org.opensolaris.dtrace-discuss[dtrace-discuss] Missing -G flag in O...
FromSent OnAttachments
Robert LorOct 26, 2007 8:27 am 
Adam LeventhalOct 26, 2007 8:44 am 
Steve PetersOct 26, 2007 10:08 am 
Adam LeventhalOct 26, 2007 10:37 am 
Jarod JensonOct 26, 2007 11:57 am 
Robert LorOct 26, 2007 1:37 pm 
Adam LeventhalOct 26, 2007 2:25 pm 
Robert LorOct 26, 2007 2:51 pm 
Adam LeventhalOct 26, 2007 3:27 pm 
Adam LeventhalOct 27, 2007 9:39 am 
James McIlreeOct 29, 2007 1:42 pm 
Adam LeventhalOct 29, 2007 4:48 pm 
James McIlreeOct 29, 2007 5:44 pm 
Adam LeventhalOct 30, 2007 6:16 pm 
Steve PetersOct 31, 2007 9:17 am 
Adam LeventhalOct 31, 2007 9:21 am 
Robert LorNov 2, 2007 1:36 pm 
James McIlreeNov 5, 2007 11:50 am 
Robert LorNov 5, 2007 2:36 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[dtrace-discuss] Missing -G flag in OSX Dtrace portActions...
From:Adam Leventhal (ah@eng.sun.com)
Date:Oct 26, 2007 3:27:19 pm
List:org.opensolaris.dtrace-discuss

On Fri, Oct 26, 2007 at 04:51:44PM -0500, Robert Lor wrote:

We're not using 'dtrace -h' now, so I'm not following how the 'dtrace -G..." step can be removed. Maybe I'm missing something!

Ah. I thought that Apple might have added <sys/dtrace.h> and kept the output of 'dtrace -h' compatible with the macros. In fact, they've done something sort of clever. The generated header file contains a slightly different reference to the private symbol names; Apple them must have modified their compiler or linker to do the work of 'dtrace -G'.

I say sort of clever because the probes themselves contain the stability information whereas we use 'dtrace -G' to transmit the stability into the final DOF object. I've included an example here for the probe foo*:::bar. Note that is-enabled probes don't have the stability magic so I'm not sure how things would work if only is-enabled probes were used.

---8<---

/* * Generated by dtrace(1M). */

#ifndef _PROV_H #define _PROV_H

#include <unistd.h>

#ifdef __cplusplus extern "C" { #endif

#define FOO_STABILITY "___dtrace_stability$foo$v1$1_1_0_1_1_0_1_1_0_1_1_0_1_1_0"

#define FOO_TYPEDEFS "___dtrace_typedefs$foo$v1"

#define FOO_BAR() \ { \ __asm__ volatile(".reference " FOO_TYPEDEFS); \ __dtrace_probe$foo$bar$v1(); \ __asm__ volatile(".reference " FOO_STABILITY); \ } #define FOO_BAR_ENABLED() \ __dtrace_isenabled$foo$bar$v1()

extern void __dtrace_probe$foo$bar$v1(void); extern int __dtrace_isenabled$foo$bar$v1(void);

#ifdef __cplusplus } #endif

#endif /* _PROV_H */

--->8---

To all USDT developers: you should definitely start using 'dtrace -h' To Apple: you should make dtrace -G a no-op so that said developers don't have to change their Makefiles

Adam