rb_frame_method_id_and_class not exported, breaks ruby-prof and other gems
rb_frame_method_id_and_class is currently available in the header files as deprecated, but the corresponding symbol is not exported from the library.
Witness the following compile and execution log excerpts:
../../../../ext/ruby_prof/ruby_prof.c:209:9: warning: 'rb_frame_method_id_and_class' is deprecated [-Wdeprecated-declarations] rb_frame_method_id_and_class(&mid, &klass); ^ /Users/stefan.kaes/.rvm/rubies/ruby-head/include/ruby-2.5.0/ruby/backward.h:53:1: note: 'rb_frame_method_id_and_class' has been explicitly marked deprecated here DEPRECATED(int rb_frame_method_id_and_class(ID *idp, VALUE *klassp)); ^ /Users/stefan.kaes/.rvm/rubies/ruby-head/include/ruby-2.5.0/x86_64-darwin16/ruby/config.h:126:39: note: expanded from macro 'DEPRECATED' .................... dyld: lazy symbol binding failed: Symbol not found: _rb_frame_method_id_and_class Referenced from: /Users/stefan.kaes/src/ruby-prof/lib/2.5.0/ruby_prof.bundle Expected in: flat namespace dyld: Symbol not found: _rb_frame_method_id_and_class Referenced from: /Users/stefan.kaes/src/ruby-prof/lib/2.5.0/ruby_prof.bundle Expected in: flat namespace
Updated by k0kubun (Takashi Kokubun) over 2 years ago
- Status changed from Open to Closed
Applied in changeset trunk|r61296.
vm.c: always export rb_frame_method_id_and_class
Functions declared in include/ruby/backward.h is exported only when
!defined RUBY_EXPORT && !defined RUBY_NO_OLD_COMPATIBILITY
is met (i.e. included by include/ruby/ruby.h).
So if it is not the case when ruby is built, this will not be exported.
This was not intentional at r60994.