1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* configure.in (load_relative): new option to enable load path

relative to libruby_so.

* ruby.c (ruby_init_loadpath_safe): added the case using dladdr().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-03-09 15:06:22 +00:00
parent 700a2b2350
commit 31d1d0a829
4 changed files with 37 additions and 3 deletions

View file

@ -1,3 +1,10 @@
Tue Mar 10 00:06:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (load_relative): new option to enable load path
relative to libruby_so.
* ruby.c (ruby_init_loadpath_safe): added the case using dladdr().
Mon Mar 9 16:49:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/rake: updated to rake code to rake-0.8.4 source code base.

View file

@ -198,6 +198,10 @@ if test $frame_address = yes; then
AC_DEFINE(USE_BUILTIN_FRAME_ADDRESS)
fi
AC_ARG_ENABLE(load-relative,
[ --enable-load-relative resolve load paths at run time. ],
[load_relative=$enableval])
AC_ARG_PROGRAM
dnl Checks for programs.
@ -1777,6 +1781,15 @@ else
DLEXT=so;;
esac
fi
if test "$rb_cv_dlopen:$load_relative" = yes:yes; then
AC_CHECK_FUNCS(dladdr)
if test "$ac_cv_func_dladdr" = yes; then
LOAD_RELATIVE=1
else
unset load_relative
fi
fi
len=2 # .rb
n=`expr "$DLEXT" : '.*'`; test "$n" -gt "$len" && len=$n
n=`expr "$DLEXT2" : '.*'`; test "$n" -gt "$len" && len=$n
@ -1941,7 +1954,12 @@ if test "$enable_shared" = 'yes'; then
when(darwin*)
RUBY_SO_NAME="$RUBY_SO_NAME"'.$(MAJOR).$(MINOR).$(TEENY)'
LIBRUBY_LDSHARED='cc -dynamiclib -undefined suppress -flat_namespace'
LIBRUBY_DLDFLAGS='-install_name $(libdir)/lib$(RUBY_SO_NAME).dylib'
if test "$load_relative" = yes; then
libprefix='@executable_path/..'
else
libprefix='$(libdir)'
fi
LIBRUBY_DLDFLAGS='-install_name '${libprefix}'/lib/lib$(RUBY_SO_NAME).dylib'
LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-current_version $(MAJOR).$(MINOR).$(TEENY)'
LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-compatibility_version $(MAJOR).$(MINOR).$(TEENY)'
LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_Init_* $(XLDFLAGS)'

9
ruby.c
View file

@ -26,6 +26,9 @@
#ifdef __hpux
#include <sys/pstat.h>
#endif
#if defined(LOAD_RELATIVE) && defined(HAVE_DLADDR)
#include <dlfcn.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@ -352,10 +355,16 @@ ruby_init_loadpath_safe(int safe_level)
char *p;
int rest;
libpath[0] = '\0';
#if defined _WIN32 || defined __CYGWIN__
GetModuleFileName(libruby, libpath, sizeof libpath);
#elif defined(__EMX__)
_execname(libpath, sizeof(libpath) - 1);
#elif defined(HAVE_DLADDR)
Dl_info dli;
if (dladdr(ruby_init_loadpath_safe, &dli)) {
strlcpy(libpath, dli.dli_fname, sizeof(libpath));
}
#endif
libpath[sizeof(libpath) - 1] = '\0';

View file

@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.2"
#define RUBY_RELEASE_DATE "2009-03-09"
#define RUBY_RELEASE_DATE "2009-03-10"
#define RUBY_PATCHLEVEL -1
#define RUBY_BRANCH_NAME "trunk"
@ -8,7 +8,7 @@
#define RUBY_VERSION_TEENY 1
#define RUBY_RELEASE_YEAR 2009
#define RUBY_RELEASE_MONTH 3
#define RUBY_RELEASE_DAY 9
#define RUBY_RELEASE_DAY 10
#ifdef RUBY_EXTERN
RUBY_EXTERN const char ruby_version[];