Bug #13041
closedruby 2.4 rc1 dtrace build fixes
Added by swills (Steve Wills) almost 10 years ago. Updated almost 10 years ago.
Description
In FreeBSD before 11.0, using dtrace -G or -h will not work in a jail or without dtrace kernel modules loaded unless the -xnolibs flag is passed as well. Since we build in jails, this is needed during our build, so we have this patch:
We have used it with ruby 2.2, and 2.3 for a long time. Please consider it or a similar change for Ruby 2.4
Updated by swills (Steve Wills) almost 10 years ago
Actions
#1
[ruby-core:78677]
Sorry, forgot the configure fix as well:
(first part only, rest is other fixes)
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
Actions
#2
[ruby-core:78678]
- Status changed from Open to Feedback
Does this patch work?
diff --git c/Makefile.in i/Makefile.in
index 9c8748aa4d..52618232b0 100644
--- c/Makefile.in
+++ i/Makefile.in
@@ -174,7 +174,7 @@ OBJDUMP = @OBJDUMP@
OBJCOPY = @OBJCOPY@
VCS = @VCS@
VCSUP = @VCSUP@
-DTRACE = @DTRACE@
+DTRACE = @DTRACE@ @DTRACE_OPT@
DTRACE_EXT = @DTRACE_EXT@
DTRACE_OBJ = @DTRACE_OBJ@
DTRACE_REBUILD= @DTRACE_REBUILD@
diff --git c/configure.in i/configure.in
index 3e41be3b6d..2ab336ee23 100644
--- c/configure.in
+++ i/configure.in
@@ -640,18 +640,19 @@ AC_DEFUN([RUBY_DTRACE_AVAILABLE],
[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
[
echo "provider conftest{ probe fire(); };" > conftest_provider.d
- if $DTRACE -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null; then
- AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();], [
- # DTrace is available on the system
- rb_cv_dtrace_available=yes
- ], [rb_cv_dtrace_available=no])
- else
- # DTrace is not available while dtrace command exists
- # for example FreeBSD 8 or FreeBSD 9 without DTrace build option
- rb_cv_dtrace_available=no
- fi
+ rb_cv_dtrace_available=no
+ AS_FOR(opt, rb_dtrace_opt, ["-xnolibs" ""], [
+ AS_IF([$DTRACE -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null],
+ [AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();], [
+ # DTrace is available on the system
+ rb_cv_dtrace_available=yes${rb_dtrace_opt:+"(opt)"}
+ break
+ ])])
+ ])
rm -f conftest.[co] conftest_provider.[dho]
])
+AS_CASE(["$rb_cv_dtrace_available"], ["yes("*")"],
+ [DTRACE_OPT=`expr "$rb_cv_dtrace_available" : "yes(\(.*\))"`])
])
AC_DEFUN([RUBY_DTRACE_POSTPROCESS],
@@ -3990,48 +3991,45 @@ AC_ARG_ENABLE(dtrace,
[enable DTrace for tracing inside ruby. enabled by default on systems having dtrace]),
[enable_dtrace=$enableval], [enable_dtrace=auto])
-if test "${enable_dtrace}" = "auto"; then
- if test x"$DTRACE" != x -a x"$cross_compiling" != xyes; then
- RUBY_DTRACE_AVAILABLE()
- enable_dtrace=$rb_cv_dtrace_available
- else
- enable_dtrace=no
- fi
-fi
-
LIBRUBY_A_OBJS='$(OBJS)'
DTRACE_REBUILD=
-if test "${enable_dtrace}" = "yes"; then
- if test -z "$DTRACE"; then
+AS_CASE(["${enable_dtrace}"], [yes|auto], [
+ RUBY_DTRACE_AVAILABLE()
+], [
+ rb_cv_dtrace_available=no
+])
+AS_CASE(["${enable_dtrace}"], [yes], [
+ AS_IF([test -z "$DTRACE"], [
AC_MSG_ERROR([dtrace(1) is missing])
- elif test "$cross_compiling" = yes; then
+ ], [test "$cross_compiling" = yes], [
AC_MSG_ERROR([--enable-dtrace, however, cross compiling])
- else
- RUBY_DTRACE_AVAILABLE()
- enable_dtrace=$rb_cv_dtrace_available
- if test "${enable_dtrace}" = "no"; then
- AC_MSG_ERROR([--enable-dtrace, however, USDT is not available])
- fi
- RUBY_DTRACE_POSTPROCESS()
- if test "$rb_cv_prog_dtrace_g" != 'no'; then
- DTRACE_OBJ='probes.$(OBJEXT)'
- fi
- if test "$rb_cv_prog_dtrace_g" = 'rebuild'; then
- DTRACE_REBUILD=yes
- LIBRUBY_A_OBJS='$(DTRACE_GLOMMED_OBJ)'
- fi
- AS_CASE("${target_os}", [freebsd*], [
- # FreeBSD's dtrace requires libelf
- LIBS="-lelf $LIBS"
- ])
+ ], [test "${rb_cv_dtrace_available}" = "no"], [
+ AC_MSG_ERROR([--enable-dtrace, however, USDT is not available])
+ ])
+])
+AS_CASE([$rb_cv_dtrace_available],
+[yes*], [
+ RUBY_DTRACE_POSTPROCESS()
+ if test "$rb_cv_prog_dtrace_g" != 'no'; then
+ DTRACE_OBJ='probes.$(OBJEXT)'
fi
+ if test "$rb_cv_prog_dtrace_g" = 'rebuild'; then
+ DTRACE_REBUILD=yes
+ LIBRUBY_A_OBJS='$(DTRACE_GLOMMED_OBJ)'
+ fi
+ AS_CASE("${target_os}", [freebsd*], [
+ # FreeBSD's dtrace requires libelf
+ LIBS="-lelf $LIBS"
+ ])
DTRACE_EXT=d
-else
+], [
+ enable_dtrace=no
DTRACE_EXT=dmyh
-fi
+])
AC_SUBST(DTRACE_EXT)
AC_SUBST(DTRACE_OBJ)
AC_SUBST(DTRACE_REBUILD)
+AC_SUBST(DTRACE_OPT)
AC_SUBST(LIBRUBY_A_OBJS)
RUBY_SETJMP_TYPE
Updated by vo.x (Vit Ondruch) almost 10 years ago
Actions
#3
[ruby-core:78679]
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
Actions
#4
- Status changed from Feedback to Closed
Applied in changeset r57093.
dtrace build fixes on FreeBSD
- configure.in (RUBY_DTRACE_AVAILABLE, RUBY_DTRACE_POSTPROCESS):
incorporate dtrace build fix on FreeBSD, dtrace needs -xnolibs
in a jail. [ruby-core:78676] [Bug #13041]
Updated by swills (Steve Wills) almost 10 years ago
Actions
#5
[ruby-core:78680]
Vit Ondruch wrote:
The "-xnolibs" is not supported by SystemTap :/
SystemTap is not DTrace.
Updated by swills (Steve Wills) almost 10 years ago
Actions
#6
[ruby-core:78682]
This fails to build now:
array.o: In function `ary_new':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
array.o: In function `empty_ary_alloc':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:456: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:456: undefined reference to `__dtrace_ruby___array__create'
array.o: In function `ary_new':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtraceenabled_ruby___array__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/array.c:472: undefined reference to `__dtrace_ruby___array__create'
eval.o: In function `setup_exception':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/eval.c:578: undefined reference to `__dtraceenabled_ruby___raise'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/eval.c:578: undefined reference to `__dtrace_ruby___raise'
gc.o: In function `gc_prof_mark_timer_start':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/gc.c:8655: undefined reference to `__dtraceenabled_ruby___gc__mark__begin'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/gc.c:8655: undefined reference to `__dtrace_ruby___gc__mark__begin'
gc.o: In function `gc_prof_mark_timer_stop':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/gc.c:8666: undefined reference to `__dtraceenabled_ruby___gc__mark__end'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/gc.c:8666: undefined reference to `__dtrace_ruby___gc__mark__end'
gc.o: In function `gc_prof_sweep_timer_start':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/gc.c:8678: undefined reference to `__dtraceenabled_ruby___gc__sweep__begin'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/gc.c:8678: undefined reference to `__dtrace_ruby___gc__sweep__begin'
gc.o: In function `gc_prof_sweep_timer_stop':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/gc.c:8691: undefined reference to `__dtraceenabled_ruby___gc__sweep__end'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/gc.c:8691: undefined reference to `__dtrace_ruby___gc__sweep__end'
hash.o: In function `empty_hash_alloc':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/hash.c:435: undefined reference to `__dtraceenabled_ruby___hash__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/hash.c:435: undefined reference to `__dtrace_ruby___hash__create'
load.o: In function `rb_require_internal':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:967: undefined reference to `__dtraceenabled_ruby___require__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:980: undefined reference to `__dtraceenabled_ruby___find__require__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:967: undefined reference to `__dtrace_ruby___require__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:980: undefined reference to `__dtrace_ruby___find__require__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:985: undefined reference to `__dtraceenabled_ruby___find__require__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:985: undefined reference to `__dtrace_ruby___find__require__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:1024: undefined reference to `__dtraceenabled_ruby___require__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:1024: undefined reference to `__dtrace_ruby___require__return'
load.o: In function `rb_f_load':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:704: undefined reference to `__dtraceenabled_ruby___load__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:716: undefined reference to `__dtraceenabled_ruby___load__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:704: undefined reference to `__dtrace_ruby___load__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/load.c:716: undefined reference to `__dtrace_ruby___load__return'
object.o: In function `rb_obj_alloc':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/object.c:1860: undefined reference to `__dtraceenabled_ruby___object__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/object.c:1860: undefined reference to `__dtrace_ruby___object__create'
parse.o: In function `yycompile0':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/parse.y:5382: undefined reference to `__dtraceenabled_ruby___parse__begin'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/parse.y:5382: undefined reference to `__dtrace_ruby___parse__begin'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/parse.y:5386: undefined reference to `__dtraceenabled_ruby___parse__end'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/parse.y:5386: undefined reference to `__dtrace_ruby___parse__end'
string.o: In function `str_new0':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/string.c:702: undefined reference to `__dtraceenabled_ruby___string__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/string.c:702: undefined reference to `__dtrace_ruby___string__create'
string.o: In function `str_new_static':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/string.c:808: undefined reference to `__dtraceenabled_ruby___string__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/string.c:808: undefined reference to `__dtrace_ruby___string__create'
string.o: In function `rb_str_resurrect':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/string.c:1393: undefined reference to `__dtraceenabled_ruby___string__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/string.c:1393: undefined reference to `__dtrace_ruby___string__create'
string.o: In function `empty_str_alloc':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/string.c:689: undefined reference to `__dtraceenabled_ruby___string__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/string.c:689: undefined reference to `__dtrace_ruby___string__create'
symbol.o: In function `dsymbol_alloc':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/symbol.c:487: undefined reference to `__dtraceenabled_ruby___symbol__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/symbol.c:487: undefined reference to `__dtrace_ruby___symbol__create'
symbol.o: In function `register_static_symid_str':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/symbol.c:419: undefined reference to `__dtraceenabled_ruby___symbol__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/symbol.c:419: undefined reference to `__dtrace_ruby___symbol__create'
vm.o: In function `vm_exec_core':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:550: undefined reference to `__dtrace_ruby___hash__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:550: undefined reference to `__dtraceenabled_ruby___hash__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:823: undefined reference to `__dtrace_ruby___cmethod__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:813: undefined reference to `__dtraceenabled_ruby___method__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:814: undefined reference to `__dtraceenabled_ruby___method__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:815: undefined reference to `__dtraceenabled_ruby___cmethod__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:816: undefined reference to `__dtraceenabled_ruby___cmethod__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:826: undefined reference to `__dtraceenabled_ruby___method__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:826: undefined reference to `__dtrace_ruby___method__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:829: undefined reference to `__dtraceenabled_ruby___cmethod__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:829: undefined reference to `__dtrace_ruby___cmethod__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:820: undefined reference to `__dtraceenabled_ruby___method__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:820: undefined reference to `__dtrace_ruby___method__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/insns.def:823: undefined reference to `__dtraceenabled_ruby___cmethod__entry'
vm.o: In function `rb_clear_method_cache_by_class':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_method.c:101: undefined reference to `__dtraceenabled_ruby___method__cache__clear'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_method.c:101: undefined reference to `__dtrace_ruby___method__cache__clear'
vm.o: In function `rb_vm_pop_cfunc_frame':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:526: undefined reference to `__dtraceenabled_ruby___cmethod__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:526: undefined reference to `__dtrace_ruby___cmethod__return'
vm.o: In function `vm_exec':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:1741: undefined reference to `__dtraceenabled_ruby___cmethod__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:1741: undefined reference to `__dtrace_ruby___cmethod__return'
vm.o: In function `core_hash_from_ary':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:2624: undefined reference to `__dtraceenabled_ruby___hash__create'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:2624: undefined reference to `__dtrace_ruby___hash__create'
vm.o: In function `vm_call_cfunc_with_frame':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_insnhelper.c:1741: undefined reference to `__dtraceenabled_ruby___cmethod__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_insnhelper.c:1761: undefined reference to `__dtraceenabled_ruby___cmethod__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_insnhelper.c:1741: undefined reference to `__dtrace_ruby___cmethod__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_insnhelper.c:1761: undefined reference to `__dtrace_ruby___cmethod__return'
vm.o: In function `vm_call0_cfunc_with_frame':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_eval.c:119: undefined reference to `__dtraceenabled_ruby___cmethod__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_eval.c:140: undefined reference to `__dtraceenabled_ruby___cmethod__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_eval.c:119: undefined reference to `__dtrace_ruby___cmethod__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/./vm_eval.c:140: undefined reference to `__dtrace_ruby___cmethod__return'
vm.o: In function `invoke_bmethod':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:986: undefined reference to `__dtraceenabled_ruby___method__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:990: undefined reference to `__dtraceenabled_ruby___method__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:986: undefined reference to `__dtrace_ruby___method__entry'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:990: undefined reference to `__dtrace_ruby___method__return'
vm.o: In function `hook_before_rewind':
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:1594: undefined reference to `__dtraceenabled_ruby___method__return'
/usr/local/poudriere/ports/default/lang/ruby24/work/ruby-2.4.0-rc1/vm.c:1594: undefined reference to `__dtrace_ruby___method__return'
cc: error: linker command failed with exit code 1 (use -v to see invocation)
Updated by vo.x (Vit Ondruch) almost 10 years ago
Actions
#7
[ruby-core:78683]
Steve Wills wrote:
Vit Ondruch wrote:
The "-xnolibs" is not supported by SystemTap :/
SystemTap is not DTrace.
SystemTap is Linux equivalent of DTrace and provides the dtrace tool with the same purpose of DTrace one ...
Updated by swills (Steve Wills) almost 10 years ago
Actions
#8
[ruby-core:78684]
I suspect the build failure is due to the fact that dtrace -G modifies the .o files to remove the dtrace symbols.
Updated by swills (Steve Wills) almost 10 years ago
Actions
#9
[ruby-core:78685]
Vit Ondruch wrote:
Steve Wills wrote:
Vit Ondruch wrote:
The "-xnolibs" is not supported by SystemTap :/
SystemTap is not DTrace.
SystemTap is Linux equivalent of DTrace and provides the dtrace tool with the same purpose of DTrace one ...
It may provide a program with the same name, but it is not equivalent. If it did, this fix wouldn't break it for you.
Updated by ngoto (Naohisa Goto) almost 10 years ago
Actions
#10
[ruby-core:78687]
On Solaris 10, the origin of dtrace, it seems "-xnolibs" is not supported.
List of available options that can be specified with "-x" on Solaris: http://docs.oracle.com/cd/E19253-01/817-6223/chp-opt/index.html
Updated by vo.x (Vit Ondruch) almost 10 years ago
Actions
#11
[ruby-core:78689]
According to my testing, the patch committed r57093 works just fine even when the "-xnolibs" is not supported. So thanks to Nobu.
Updated by swills (Steve Wills) almost 10 years ago
Actions
#12
[ruby-core:78692]
Naohisa Goto wrote:
On Solaris 10, the origin of dtrace, it seems "-xnolibs" is not supported.
List of available options that can be specified with "-x" on Solaris: http://docs.oracle.com/cd/E19253-01/817-6223/chp-opt/index.html
Unfortunately, that page is a bit out of date. Here's one page which has examples with -xnolibs:
http://dtrace.org/blogs/dap/2011/12/13/usdt-providers-redux/
Updated by swills (Steve Wills) almost 10 years ago
Actions
#13
[ruby-core:78699]
Tried everything I could, but still can't get things to link, on 11.0 or 12-CURRENT. If I'm doing something wrong, please let me know.
Updated by swills (Steve Wills) almost 10 years ago
Actions
#14
[ruby-core:78706]
Looks like r57101 r57102 r57103 and r57104 fixed this. Thanks!