Help
I have been working on inserting SDT's into Erlang.
I am having several problems. I have just moved environments (see
Background) and this may be contributing to the problems.
I'm on Mac OS X 10.5.2, and I get a link time error from the Erlang
build (which has been okay for months).
When I make, the last command issues is:
gcc -o /Users/garrybulmer/Research/Erlang-DTrace/erl_dtrace/
otp_src_R12B-0/bin/i386-apple-darwin9.2.0/beam ...
error: Must have a valid dtrace stability entry
ld: error creating dtrace DOF section
...
I googled, and only found one reference in the Apples source at:
http://www.opensource.apple.com/darwinsource/Current/dtrace-48/libdtrace/dt_ld.m
in dtrace_ld_create_dof()
There is no other page found by google (a googlewhack, which isn't
encouraging!)
Here's the dtrace_probes.d file defining the probe interface:
provider erl__dtrace {
probe gc__begin();
probe gc__end();
probe gc__inp(int, char*);
probe gc__outp(int, char*);
probe dtrace(int); /* passes the Erlang Process ID */
probe dtrace__s(int, char*); /* passes Erlang PID and string */
};
#pragma D attributes Evolving/Evolving/Common provider erl__dtrace
provider
#pragma D attributes Private/Private/Unknown provider erl__dtrace module
#pragma D attributes Private/Private/Unknown provider erl__dtrace
function
#pragma D attributes Evolving/Evolving/Common provider erl__dtrace name
#pragma D attributes Evolving/Evolving/Common provider erl__dtrace args
----- end ----
I have looked through the forum, but I've failed to find the solution,
so HELP!
G Bulmer
Background:
My MacBook was running Tiger (my day job), so I was developing using
Leopard run on an external firewire hard drive. This worked okay.
Yesterday I upgraded my MacBook from Tiger to Leopard (ready for next
weeks DTrace un-conference), all of my problems have happened since
then in this new environment. I do not want to carry an external drive
with me, so I need to fix the MacBook.
The dtrace_probes.h file generated by "dtrace -h -s dtrace_probes.d"
looks okay (AFAIK):
/*
* Generated by dtrace(1M).
*/
#ifndef _DTRACE_PROBES_H
#define _DTRACE_PROBES_H
#include <unistd.h>
#ifdef __cplusplus
extern "C" {
#endif
#define ERL__DTRACE_STABILITY "___dtrace_stability$erl__dtrace
$v1$5_5_5_1_1_0_1_1_0_5_5_5_5_5_5"
#define ERL__DTRACE_TYPEDEFS "___dtrace_typedefs$erl__dtrace$v1"
#define ERL__DTRACE_DTRACE(arg0) \
{ \
__asm__ volatile(".reference " ERL__DTRACE_TYPEDEFS); \
__dtrace_probe$erl__dtrace$dtrace$v1$696e74(arg0); \
__asm__ volatile(".reference " ERL__DTRACE_STABILITY); \
}
#define ERL__DTRACE_DTRACE_ENABLED() \
__dtrace_isenabled$erl__dtrace$dtrace$v1()
#define ERL__DTRACE_DTRACE_S(arg0, arg1) \
{ \
__asm__ volatile(".reference " ERL__DTRACE_TYPEDEFS); \
__dtrace_probe$erl__dtrace$dtrace__s$v1$696e74$63686172202a(arg0,
arg1); \
__asm__ volatile(".reference " ERL__DTRACE_STABILITY); \
}
#define ERL__DTRACE_DTRACE_S_ENABLED() \
__dtrace_isenabled$erl__dtrace$dtrace__s$v1()
#define ERL__DTRACE_GC_BEGIN() \
{ \
__asm__ volatile(".reference " ERL__DTRACE_TYPEDEFS); \
__dtrace_probe$erl__dtrace$gc__begin$v1(); \
__asm__ volatile(".reference " ERL__DTRACE_STABILITY); \
}
#define ERL__DTRACE_GC_BEGIN_ENABLED() \
__dtrace_isenabled$erl__dtrace$gc__begin$v1()
#define ERL__DTRACE_GC_END() \
{ \
__asm__ volatile(".reference " ERL__DTRACE_TYPEDEFS); \
__dtrace_probe$erl__dtrace$gc__end$v1(); \
__asm__ volatile(".reference " ERL__DTRACE_STABILITY); \
}
#define ERL__DTRACE_GC_END_ENABLED() \
__dtrace_isenabled$erl__dtrace$gc__end$v1()
#define ERL__DTRACE_GC_INP(arg0, arg1) \
{ \
__asm__ volatile(".reference " ERL__DTRACE_TYPEDEFS); \
__dtrace_probe$erl__dtrace$gc__inp$v1$696e74$63686172202a(arg0,
arg1); \
__asm__ volatile(".reference " ERL__DTRACE_STABILITY); \
}
#define ERL__DTRACE_GC_INP_ENABLED() \
__dtrace_isenabled$erl__dtrace$gc__inp$v1()
#define ERL__DTRACE_GC_OUTP(arg0, arg1) \
{ \
__asm__ volatile(".reference " ERL__DTRACE_TYPEDEFS); \
__dtrace_probe$erl__dtrace$gc__outp$v1$696e74$63686172202a(arg0,
arg1); \
__asm__ volatile(".reference " ERL__DTRACE_STABILITY); \
}
#define ERL__DTRACE_GC_OUTP_ENABLED() \
__dtrace_isenabled$erl__dtrace$gc__outp$v1()
extern void __dtrace_probe$erl__dtrace$dtrace$v1$696e74(int);
extern int __dtrace_isenabled$erl__dtrace$dtrace$v1(void);
extern void __dtrace_probe$erl__dtrace$dtrace__s
$v1$696e74$63686172202a(int, char *);
extern int __dtrace_isenabled$erl__dtrace$dtrace__s$v1(void);
extern void __dtrace_probe$erl__dtrace$gc__begin$v1(void);
extern int __dtrace_isenabled$erl__dtrace$gc__begin$v1(void);
extern void __dtrace_probe$erl__dtrace$gc__end$v1(void);
extern int __dtrace_isenabled$erl__dtrace$gc__end$v1(void);
extern void __dtrace_probe$erl__dtrace$gc__inp
$v1$696e74$63686172202a(int, char *);
extern int __dtrace_isenabled$erl__dtrace$gc__inp$v1(void);
extern void __dtrace_probe$erl__dtrace$gc__outp
$v1$696e74$63686172202a(int, char *);
extern int __dtrace_isenabled$erl__dtrace$gc__outp$v1(void);
#ifdef __cplusplus
}
#endif
#endif /* _DTRACE_PROBES_H */
_______________________________________________
dtrace-discuss mailing list
[email protected]