diff options
author | Andriy Gapon <avg@FreeBSD.org> | 2013-04-25 07:04:56 +0000 |
---|---|---|
committer | Andriy Gapon <avg@FreeBSD.org> | 2013-04-25 07:04:56 +0000 |
commit | 5d33cbbf9d242446acc995ad5a005db7c05e4b5e (patch) | |
tree | 05283829e4188e0a7f6e47b512695541f034f7d3 /cddl | |
parent | 7f168e5ddb5a603d4c5f5f1d025f2d26db5f2728 (diff) | |
download | src-5d33cbbf9d242446acc995ad5a005db7c05e4b5e.tar.gz src-5d33cbbf9d242446acc995ad5a005db7c05e4b5e.zip |
revert r248644 because of the regression for usdt probes
USDT probes are advertised to kernel by initialization code with
atrribute((constructor))). It seems that on Solaris the .init-ish code
of the main object is executed before RD_PREINIT point is hit. On
FreeBSD that is not the case. And because on FreeBSD there is no other
well-defined point between RD_PREINIT and main() we have to parse a
DTrace script when main is hit, for time being.
A footnote: currently we actually post RD_POSTINIT event, but that's a
bug because the event is triggered by hitting r_debug_state which
happens before any init code is executed.
Reported by: markj
Notes
Notes:
svn path=/head/; revision=249884
Diffstat (limited to 'cddl')
-rw-r--r-- | cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c index 6c6e41b9c424..dcc4e7cfee25 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c @@ -1130,7 +1130,7 @@ alloc: #if defined(sun) dtp->dt_prcmode = DT_PROC_STOP_PREINIT; #else - dtp->dt_prcmode = DT_PROC_STOP_POSTINIT; + dtp->dt_prcmode = DT_PROC_STOP_MAIN; #endif dtp->dt_linkmode = DT_LINK_KERNEL; dtp->dt_linktype = DT_LTYP_ELF; |