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:James McIlree (jmci@apple.com)
Date:Oct 29, 2007 5:44:27 pm
List:org.opensolaris.dtrace-discuss

On Oct 29, 2007, at 4:48 PM, Adam Leventhal wrote:

On Mon, Oct 29, 2007 at 01:43:19PM -0700, James McIlree wrote:

OS X doesn't support the older DTRACE_PROBE style macros, only the newer (and much safer!) typechecked generated header files.

That makes sense to me, but some folks -- such as the Postgres folks

-- were fond of the DTRACE_PROBE syntax. It might be worth figuring out why...

We did actually look at trying to support a compatibility mode with -G being a no-op, but that turned out to be something of a slippery slope. The harder I pulled on that thread, the more corner cases I found where it fell over. As Steve mentioned, we know its an issue, and I filed:

<rdar://problem/5566030> Emulate dtrace -G for compatibility

Excellent. I wrote a wrapper script that emulates -G by just emitting an effectively empty object file. Is there some edge case in which that technique would be insufficient?

The OS X linker will helpfully report an error if you pass it an empty object file. There are various things you can add to the object file to suppress the "nothing's here" warning. Depending on what flags you pass, you should get away with "mostly empty" most of the time.

Your insight about the is-enabled probes is on target, if you attempt to only use is-enabled probes, and never reference the actual dtrace probe, you'll get link time errors.

I'm surprised the DTrace test suite didn't pick that up. Specifically, this guy should have failed:

usr/src/cmd/dtrace/test/tst/common/usdt/tst.onlyenabled.ksh

Do you have a bug filed on this or should I file one?

No radar on this yet. Do you know of any use cases for this kind of construct?

James M