aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Makefile.in3
-rw-r--r--configure.in19
-rw-r--r--cygwin/GNUmakefile.in2
-rwxr-xr-xwin32/mkexports.rb5
5 files changed, 23 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index b7cd78bcdf..3dedec535f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Nov 11 20:45:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (SYMBOL_PREFIX): separate from EXPORT_PREFIX.
+
+ * win32/mkexports.rb (Exports#each_export): use SYMBOL_PREFIX.
+
Wed Nov 10 07:20:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* cygwin/GNUmakefile.in (scriptbin): make executable file from
diff --git a/Makefile.in b/Makefile.in
index 6cbb983345..4b8da4bdde 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -135,6 +135,7 @@ OBJEXT = @OBJEXT@
ASMEXT = S
DLEXT = @DLEXT@
MANTYPE = @MANTYPE@
+SYMBOL_PREFIX = @SYMBOL_PREFIX@
INSTALLED_LIST= .installed.list
@@ -169,7 +170,7 @@ $(LIBRUBY_A):
$(LIBRUBY_SO):
@-$(PRE_LIBRUBY_UPDATE)
$(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(OUTFLAG)$@
- -$(OBJCOPY) -w -L '@EXPORT_PREFIX@Init_*' -L '@EXPORT_PREFIX@*_threadptr_*' $@
+ -$(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)*_threadptr_*' $@
@-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \
File.symlink "$(LIBRUBY_SO)", link}' \
$(LIBRUBY_ALIASES) || true
diff --git a/configure.in b/configure.in
index 5dede8d33e..3adba3c69e 100644
--- a/configure.in
+++ b/configure.in
@@ -2349,16 +2349,16 @@ AC_SUBST(INSTALLDOC)
if test "$rb_with_pthread" = "yes"; then
THREAD_MODEL=pthread
fi
-AC_CACHE_CHECK([for prefix of exported symbols], rb_cv_export_prefix, [
- AC_TRY_COMPILE([extern void conftest_exported(void) {}], [], [
- rb_cv_export_prefix=`$NM conftest.$ac_objext |
- sed -n ['/.*[ ]\([^ ]*\)conftest_exported.*/!d;s//\1/p;q']`
+AC_CACHE_CHECK([for prefix of external symbols], rb_cv_symbol_prefix, [
+ AC_TRY_COMPILE([extern void conftest_external(void) {}], [], [
+ rb_cv_symbol_prefix=`$NM conftest.$ac_objext |
+ sed -n ['/.*[ ]\([^ ]*\)conftest_external.*/!d;s//\1/p;q']`
],
- [rb_cv_export_prefix=''])
- test -n "$rb_cv_export_prefix" || rb_cv_export_prefix=NONE
+ [rb_cv_symbol_prefix=''])
+ test -n "$rb_cv_symbol_prefix" || rb_cv_symbol_prefix=NONE
])
-EXPORT_PREFIX="$rb_cv_export_prefix"
-test "x$EXPORT_PREFIX" = xNONE && EXPORT_PREFIX=''
+SYMBOL_PREFIX="$rb_cv_symbol_prefix"
+test "x$SYMBOL_PREFIX" = xNONE && SYMBOL_PREFIX=''
MINIDLNOBJ=dmydln.o
AS_CASE(["$target_os"],
[linux*], [
@@ -2424,7 +2424,7 @@ AS_CASE(["$target_os"],
LIBRUBY_SO='$(RUBY_SO_NAME)'.dll
LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
fi
- test -z "$EXPORT_PREFIX" && EXPORT_PREFIX=' '
+ EXPORT_PREFIX=' '
DLDFLAGS="${DLDFLAGS}"' $(DEFFILE)'
AC_LIBOBJ([win32])
COMMON_LIBS=m
@@ -2557,6 +2557,7 @@ AC_SUBST(COMMON_LIBS)
AC_SUBST(COMMON_MACROS)
AC_SUBST(COMMON_HEADERS)
AC_SUBST(EXPORT_PREFIX)
+AC_SUBST(SYMBOL_PREFIX)
AC_SUBST(MINIOBJS)
AC_SUBST(THREAD_MODEL)
diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in
index 04005466b5..208d14d545 100644
--- a/cygwin/GNUmakefile.in
+++ b/cygwin/GNUmakefile.in
@@ -57,7 +57,7 @@ $(RCFILES): $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb
$(PROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@
$(WPROGRAM): $(RUBYW_INSTALL_NAME).res.@OBJEXT@
@rm -f $@
- $(PURIFY) $(CC) -mwindows -e _mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \
+ $(PURIFY) $(CC) -mwindows -e $(SYMBOL_PREFIX)mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \
$(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
$(STUBPROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@ stub.@OBJEXT@
@rm -f $@
diff --git a/win32/mkexports.rb b/win32/mkexports.rb
index f6d40f8cfb..06f8c8ddbb 100755
--- a/win32/mkexports.rb
+++ b/win32/mkexports.rb
@@ -143,9 +143,12 @@ class Exports::Cygwin < Exports
end
def each_export(objs)
+ symprefix = RbConfig::CONFIG["SYMBOL_PREFIX"]
+ symprefix.strip! if symprefix
+ re = /\s(?:(T)|[[:upper:]])\s#{symprefix}((?!Init_|.*_threadptr_|DllMain@).*)$/
objdump(objs) do |l|
next if /@.*@/ =~ l
- yield $2, !$1 if /\s(?:(T)|[[:upper:]])\s_((?!Init_|.*_threadptr_|DllMain@).*)$/ =~ l
+ yield $2, !$1 if re =~ l
end
end
end