cldwalker/debugger

debugger fails to compile on fresh rbenv ruby 2.0.0-p0

jgeiger opened this issue · 1 comments

I've got a fresh copy of ruby 2.0.0-p0 installed using rbenv. rbenv was installed using the basic github checkout method and the ruby-build was installed as a plugin to rbenv.

$ gem list
*** LOCAL GEMS ***
bigdecimal (1.2.0)
bundler (1.3.0.pre.8)
columnize (0.3.6)
debugger-linecache (1.1.2)
debugger-ruby_core_source (1.2.0)
io-console (0.4.2)
json (1.7.7)
minitest (4.6.1, 4.3.2)
pg (0.14.1)
psych (2.0.0)
rake (10.0.3, 0.9.6)
rdoc (4.0.0)
test-unit (2.5.4, 2.0.0.0)

When I attempt to install debugger I get the failure log below.

$ gem install debugger
Building native extensions. This could take a while...
ERROR: Error installing debugger:
ERROR: Failed to build gem native extension.

/Users/mac_user/.rbenv/versions/2.0.0-p0/bin/ruby extconf.rb
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
checking for rb_method_entry_t.called_id in method.h... yes
checking for vm_core.h... yes
checking for iseq.h... yes
checking for insns.inc... yes
checking for insns_info.inc... yes
checking for eval_intern.h... yes
checking for struct iseq_line_info_entry in vm_core.h,iseq.h... yes
checking for if rb_iseq_compile_with_option was added an argument filepath... yes
creating Makefile

make
compiling breakpoint.c
compiling ruby_debug.c
ruby_debug.c:27:19: error: conflicting types for 'rb_iseq_compile_with_option'
RUBY_EXTERN VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt);
^
/Users/mac_user/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/debugger-ruby_core_source-1.2.0/lib/debugger/ruby_core_source/ruby-2.0.0-p0/vm_core.h:646:7: note: previous declaration is here
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE absolute_path, VALUE line, rb_block_t *base_block, VALUE opt);
^
ruby_debug.c:465:60: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
return rb_funcall2(context, idAtLine, RARRAY_LEN(args) - 1, RARRAY_PTR(args) + 1);
~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~^~~
ruby_debug.c:506:55: error: no member named 'bp' in 'struct rb_control_frame_struct'
debug_frame->info.runtime.bp = GET_THREAD()->cfp->bp;
~~~~~~~~~~~~~~~~~ ^
ruby_debug.c:529:13: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
s_len = RSTRING_LEN(source);
~ ^~~~~~~~~~~~~~~~~~~
/Users/mac_user/.rbenv/versions/2.0.0-p0/include/ruby-2.0.0/ruby/ruby.h:864:6: note: expanded from macro 'RSTRING_LEN'
RSTRING_EMBED_LEN(str) :
^~~~~~~~~~~~~~~~~~~~~~
/Users/mac_user/.rbenv/versions/2.0.0-p0/include/ruby-2.0.0/ruby/ruby.h:860:6: note: expanded from macro 'RSTRING_EMBED_LEN'
(long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) &
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ruby_debug.c:529:13: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
s_len = RSTRING_LEN(source);
~ ^~~~~~~~~~~~~~~~~~~
/Users/mac_user/.rbenv/versions/2.0.0-p0/include/ruby-2.0.0/ruby/ruby.h:865:28: note: expanded from macro 'RSTRING_LEN'
RSTRING(str)->as.heap.len)
~~~~~~~~~~~~~~~~~~~~~~^~~
ruby_debug.c:530:13: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
f_len = strlen(file);
~ ^~~~~~~~~~~~
ruby_debug.c:675:94: error: too few arguments to function call, expected 6, have 5
rb_str_new_cstr(""), rb_str_new_cstr("(exception catcher)"), Qnil, INT2FIX(1), Qfalse);
^
/Users/mac_user/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/debugger-ruby_core_source-1.2.0/lib/debugger/ruby_core_source/ruby-2.0.0-p0/vm_core.h:646:1: note: 'rb_iseq_compile_with_option' declared here
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE absolute_path, VALUE line, rb_block_t *base_block, VALUE opt);
^
ruby_debug.c:698:9: error: no member named 'event_flags' in 'struct rb_thread_struct'
th->event_flags |= RUBY_EVENT_VM;
~~ ^
ruby_debug.c:698:24: error: use of undeclared identifier 'RUBY_EVENT_VM'
th->event_flags |= RUBY_EVENT_VM;
^
ruby_debug.c:727:16: error: use of undeclared identifier 'ID_ALLOCATOR'
if (mid == ID_ALLOCATOR) return;
^
ruby_debug.c:780:98: error: no member named 'bp' in 'struct rb_control_frame_struct'
if (debug_context->frames[debug_context->stack_size - 1].info.runtime.bp <= thread->cfp->bp)
~~~~~~~~~~~ ^
ruby_debug.c:952:104: error: no member named 'bp' in 'struct rb_control_frame_struct'
if (debug_context->frames[debug_context->stack_size].info.runtime.bp <= GET_THREAD()->cfp->bp)
~~~~~~~~~~~~~~~~~ ^
ruby_debug.c:846:29: warning: implicit conversion loses integer precision: 'VALUE' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
hit_count = INT2FIX(FIX2INT(rb_hash_aref(rdebug_catchpoints,
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/mac_user/.rbenv/versions/2.0.0-p0/include/ruby-2.0.0/ruby/ruby.h:241:21: note: expanded from macro 'INT2FIX'

define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG))

                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ruby_debug.c:1706:10: warning: implicit conversion loses integer precision: 'VALUE' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
return level;

ruby_debug.c:1756:8: warning: unused variable 'id' [-Wunused-variable]
ID id;
^
ruby_debug.c:1823:47: error: no member named 'filename' in 'struct rb_iseq_struct'
return(GET_FRAME->info.runtime.cfp->iseq->filename);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
ruby_debug.c:1861:26: error: no member named 'dfp' in 'struct rb_control_frame_struct'
val = (cfp->dfp - iseq->local_size + i);
~~~ ^
ruby_debug.c:1922:48: error: no member named 'dfp' in 'struct rb_control_frame_struct'
rb_hash_aset(hash, str, *(cfp->dfp - iseq->local_size + i));
~~~ ^
ruby_debug.c:1940:64: error: no member named 'dfp' in 'struct rb_control_frame_struct'
rb_hash_aset(hash, str, *(block_frame->dfp - iseq->local_table_size + i - 1));
~~~~~~~~~~~ ^
ruby_debug.c:2327:37: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
int frames = jump_cfp - cfp + 2;
~~~~~~ ~~~~~~~~~~~~~~~^~~
ruby_debug.c:2407:65: error: no member named 'filename' in 'struct rb_iseq_struct'
if ((cfp->iseq != NULL) && (rb_str_cmp(file, cfp->iseq->filename) == 0))
~~~~~~~~~ ^
ruby_debug.c:2409:40: error: no member named 'insn_info_size' in 'struct rb_iseq_struct'; did you mean 'line_info_size'?
for (i = 0; i < cfp->iseq->insn_info_size; i++)
^~~~~~~~~~~~~~
line_info_size
/Users/mac_user/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/debugger-ruby_core_source-1.2.0/lib/debugger/ruby_core_source/ruby-2.0.0-p0/vm_core.h:223:12: note: 'line_info_size' declared here
size_t line_info_size;
^
ruby_debug.c:2411:32: error: no member named 'insn_info_table' in 'struct rb_iseq_struct'; did you mean 'line_info_table'?
if (cfp->iseq->insn_info_table[i].line_no != line)
^~~~~~~~~~~~~~~
line_info_table
/Users/mac_user/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/debugger-ruby_core_source-1.2.0/lib/debugger/ruby_core_source/ruby-2.0.0-p0/vm_core.h:222:34: note: 'line_info_table' declared here
struct iseq_line_info_entry *line_info_table;
^
ruby_debug.c:2422:58: error: no member named 'insn_info_table' in 'struct rb_iseq_struct'; did you mean 'line_info_table'?
cfp->iseq->iseq_encoded + cfp->iseq->insn_info_table[i].position;
^~~~~~~~~~~~~~~
line_info_table
/Users/mac_user/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/debugger-ruby_core_source-1.2.0/lib/debugger/ruby_core_source/ruby-2.0.0-p0/vm_core.h:222:34: note: 'line_info_table' declared here
struct iseq_line_info_entry *line_info_table;
^
ruby_debug.c:2395:53: warning: comparison of integers of different signs: 'long' and 'unsigned long' [-Wsign-compare]
if ((cfp->pc - cfp->iseq->iseq_encoded) >= (cfp->iseq->iseq_size - 1))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~
ruby_debug.c:2409:27: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (i = 0; i < cfp->iseq->insn_info_size; i++)
~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~
10 warnings and 16 errors generated.
make: *
* [ruby_debug.o] Error 1

Gem files will remain installed in /Users/mac_user/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/debugger-1.3.3 for inspection.
Results logged to /Users/mac_user/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/debugger-1.3.3/ext/ruby_debug/gem_make.out

Thanks for the report. This issue is already covered by #47. I want to encourage one central issue on 2.0 failures since currently 2.0 does not work