From 18bd7f8c845e392995d738f3bca3675b7b265e23 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 11 Nov 2010 11:45:32 +0000 Subject: * configure.in (SYMBOL_PREFIX): separate from EXPORT_PREFIX. * win32/mkexports.rb (Exports#each_export): use SYMBOL_PREFIX. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29739 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ Makefile.in | 3 ++- configure.in | 19 ++++++++++--------- cygwin/GNUmakefile.in | 2 +- win32/mkexports.rb | 5 ++++- 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 + + * 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 * 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 -- cgit v1.2.3