Hi,
2014/3/28 Fri 3:09:11 UTC+9 Bram Moolenaar wrote:
> Patch 7.4.225
> Problem: Dynamic Ruby doesn't work on Solaris.
> Solution: Always use the stubs. (Danek Duvall, Yukihiro Nakadaira)
> Files: src/if_ruby.c
Link error occurs after 7.4.225 on Ubuntu 12.04 x86_64 with ruby 1.8
(+ruby/dyn).
objects/if_ruby.o: In function `window_s_aref':
if_ruby.c:(.text+0x2cf): undefined reference to `rb_fix2int_stub'
if_ruby.c:(.text+0x311): undefined reference to `rb_num2int_stub'
objects/if_ruby.o: In function `buffer_s_aref':
if_ruby.c:(.text+0x37f): undefined reference to `rb_fix2int_stub'
if_ruby.c:(.text+0x3c9): undefined reference to `rb_num2int_stub'
objects/if_ruby.o: In function `window_set_width':
if_ruby.c:(.text+0x101d): undefined reference to `rb_num2int_stub'
if_ruby.c:(.text+0x1049): undefined reference to `rb_fix2int_stub'
objects/if_ruby.o: In function `window_set_height':
if_ruby.c:(.text+0x108d): undefined reference to `rb_num2int_stub'
if_ruby.c:(.text+0x10b9): undefined reference to `rb_fix2int_stub'
Attached patch seems to fix this.
Tested with:
* Ubuntu 12.04 x86_64, ruby 1.8.7 (+ruby/dyn)
* Ubuntu 12.04 x86_64, ruby 1.9.3 (+ruby/dyn)
Regards,
Ken Takata
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
# HG changeset patch
# Parent a5d3f1327978ca5503c1258e4544366b788bc5f7
diff --git a/src/if_ruby.c b/src/if_ruby.c
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -88,8 +88,9 @@
# define rb_int2big rb_int2big_stub
#endif
-#if defined(DYNAMIC_RUBY_VER) && VIM_SIZEOF_INT < VIM_SIZEOF_LONG
-/* Ruby 2.0 defines a number of static functions which use rb_fix2int and
+#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 \
+ && VIM_SIZEOF_INT < VIM_SIZEOF_LONG
+/* Ruby 1.9 defines a number of static functions which use rb_fix2int and
* rb_num2int if VIM_SIZEOF_INT < VIM_SIZEOF_LONG (64bit) */
# define rb_fix2int rb_fix2int_stub
# define rb_num2int rb_num2int_stub
@@ -202,6 +203,10 @@
# define rb_inspect dll_rb_inspect
# define rb_int2inum dll_rb_int2inum
# if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */
+# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 18
+# define rb_fix2int dll_rb_fix2int
+# define rb_num2int dll_rb_num2int
+# endif
# define rb_num2uint dll_rb_num2uint
# endif
# define rb_lastline_get dll_rb_lastline_get
@@ -389,7 +394,8 @@
{
return dll_rb_int2big(x);
}
-# if defined(DYNAMIC_RUBY_VER) && VIM_SIZEOF_INT < VIM_SIZEOF_LONG
+# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 \
+ && VIM_SIZEOF_INT < VIM_SIZEOF_LONG
long rb_fix2int_stub(VALUE x)
{
return dll_rb_fix2int(x);