Bug #13041
closedruby 2.4 rc1 dtrace build fixes
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 9 years ago
Sorry, forgot the configure fix as well:
(first part only, rest is other fixes)
Updated by nobu (Nobuyoshi Nakada) almost 9 years ago
- 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 9 years ago
The "-xnolibs" is not supported by SystemTap :/
$ dtrace -xnolibs /usr/bin/dtrace invalid option -xnolibs Usage /usr/bin/dtrace [--help] [-h | -G] [-C [-I<Path>]] -s File.d [-o <File>] Not sure if Nobu's patch covers this ...
Updated by nobu (Nobuyoshi Nakada) almost 9 years ago
- 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 9 years ago
Vit Ondruch wrote:
The "-xnolibs" is not supported by SystemTap :/
SystemTap is not DTrace.
Updated by swills (Steve Wills) almost 9 years ago
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 9 years ago
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 9 years ago
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 9 years ago
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 9 years ago
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 9 years ago
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 9 years ago
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 9 years ago
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 9 years ago
Looks like r57101 r57102 r57103 and r57104 fixed this. Thanks!