[#8824] [REQ] Integer#{hex,dec,oct,bin}, String#bin — gotoken@... (GOTO Kentaro)

ごとけんです

38 messages 2000/01/05
[#8839] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — matz@... (Yukihiro Matsumoto) 2000/01/06

まつもと ゆきひろです

[#8842] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — gotoken@... (GOTO Kentaro) 2000/01/06

ごとけんです

[#8843] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — matz@... (Yukihiro Matsumoto) 2000/01/06

まつもと ゆきひろです

[#8844] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — gotoken@... (GOTO Kentaro) 2000/01/06

ごとけんです

[#8846] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — matz@... (Yukihiro Matsumoto) 2000/01/06

まつもと ゆきひろです

[#8847] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — gotoken@... (GOTO Kentaro) 2000/01/06

ごとけんです

[#8893] Re: [ruby-list:20142] Re: Range expansion? — Akinori MUSHA aka knu <knu@...>

 knuです。ruby-listから舞台を移しました。

13 messages 2000/01/09

[#8980] 1.4.3 patch for near-future *BSD IPv6 support — Jun-ichiro itojun Hagino <itojun@...>

近い将来の{Net,Free,Open}BSDにはKAME IPv6 stackが統合されています。

17 messages 2000/01/20
[#8981] Re: 1.4.3 patch for near-future *BSD IPv6 support — Jun-ichiro itojun Hagino <itojun@...> 2000/01/20

> それから、

[ruby-dev:8996] Re: 1.4.3 patch for near-future *BSD IPv6 support

From: Jun-ichiro itojun Hagino <itojun@...>
Date: 2000-01-21 08:40:49 UTC
List: ruby-dev #8996
>> 	- 標準配布の状態で ./configure (ext/socketはダイナミックリンク)
>> 	だけしてコンパイルすると、こういうことを言われます。
>> 	NetBSD-current/i386 (ELF)です。
>> 	symbolはrubyの中で正しく定義されているぽいのですが。
>> 	dynamic linkまわりに詳しくないのでよくわかりません。なにかヒントを
>> 	頂けませんか?
>関係あるかないかわからないですが, NetBSD-current/i386 で 
>ruby-1.4.3/1.5.0 を make するとき, define.h に 
>> #define FUNCNAME_PATTERN "Init_%.200s"
>と書かないとまともに make できませんでした。でもまだ require とかすると 
>core 吐いてしまいますが...
>では

	結局これでした。どうもありがとうございます。

	pythonのconfigure.inを眺めました。
	- ELFのNetBSD: __ELF__が定義されている
	- 非ELFのNetBSD: __ELF__が定義されてない
	という判定になってるので真似しましたところ、まっとうに動くように
	なりました。__alpha__とかも全部除去してみました。多分これでNetBSDは
	okでしょう。
	最新のcvs repositoryとのdiffです(昨日の分も混ざってます)。

	dln.cの中のFUNCNAME_PATTERNは凄いことになっていますが、これって
	なんとかしたいですね。un*x系だけでも、configure.inの中で
	AC_DEFINE(UNDERSCORE_BEFORE_FUNCTION_NAME)とか。
	AC_DEFINE(USE_ELF)とか。

	- ELFであれば"Init_%s"
	- a.outであれば"Init_%s"
	だと思っていたんですが、この記憶は正しいでしょうか?

>#ifndef FUNCNAME_PATTERN
># if defined(__hp9000s300) ||  (defined(__NetBSD__) && (!defined(__alpha__) && !
>defined(__mips__))) || defined(__BORLANDC__) || (defined(__FreeBSD__) && __FreeB
>SD__ < 3) || defined(__OpenBSD__) || defined(NeXT) || defined(__WATCOMC__) || de
>fined(__APPLE__)
>#  define FUNCNAME_PATTERN "_Init_%.200s"
># else
>#  define FUNCNAME_PATTERN "Init_%.200s"
># endif
>#endif

itojun


---
Index: configure.in
===================================================================
RCS file: /home/cvs/ruby/configure.in,v
retrieving revision 1.11
diff -c -r1.11 configure.in
*** configure.in	2000/01/05 04:36:58	1.11
--- configure.in	2000/01/21 08:37:49
***************
*** 356,361 ****
--- 356,369 ----
    else
      LDFLAGS="-rdynamic"
    fi;;
+ netbsd*)
+     if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
+     then
+ 	netbsd_elf=yes
+     else
+ 	netbsd_elf=no
+     fi
+     ;;
  esac
  
  AC_SUBST(DLDFLAGS)dnl
***************
*** 429,439 ****
  			  test "$GCC" = yes && `$CC --print-prog-name=ld` -v 2>&1 | grep "GNU ld" > /dev/null || LDSHARED="ld -Bshareable"
  			fi
  			rb_cv_dlopen=yes ;;
! 	netbsd*)  	LDSHARED="ld -shared"
!                       	case "$target_cpu" in
!                       	alpha)
!                           LDFLAGS="-export-dynamic" ;;
!                       	esac
  			rb_cv_dlopen=yes ;;
  	openbsd*) 	LDSHARED="ld -Bforcearchive -Bshareable"
  			rb_cv_dlopen=yes ;;
--- 437,446 ----
  			  test "$GCC" = yes && `$CC --print-prog-name=ld` -v 2>&1 | grep "GNU ld" > /dev/null || LDSHARED="ld -Bshareable"
  			fi
  			rb_cv_dlopen=yes ;;
! 	netbsd*)	if test x"$netbsd_elf" = x"yes"; then
! 				LDFLAGS="-export-dynamic"
! 			fi
! 			LDSHARED="ld -shared"
  			rb_cv_dlopen=yes ;;
  	openbsd*) 	LDSHARED="ld -Bforcearchive -Bshareable"
  			rb_cv_dlopen=yes ;;
***************
*** 694,704 ****
  	;;
      netbsd*)
  	LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR)'
!  	case "$target_cpu" in
! 	alpha|mipsel|mipseb|powerpc|sparc64)  # ELF platforms
! 	   LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR) lib$(RUBY_INSTALL_NAME).so' ;;
!  	*) LIBRUBY_ALIASES= ;;  # a.out platforms
! 	esac
   	;;
      solaris*)
  	XLDFLAGS='-R${prefix}/lib'
--- 701,709 ----
  	;;
      netbsd*)
  	LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR)'
!  	if test x"$netbsd_elf" = "xyes"; then
! 	    LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR) lib$(RUBY_INSTALL_NAME).so'
! 	fi
   	;;
      solaris*)
  	XLDFLAGS='-R${prefix}/lib'
Index: dln.c
===================================================================
RCS file: /home/cvs/ruby/dln.c,v
retrieving revision 1.4
diff -c -r1.4 dln.c
*** dln.c	2000/01/05 04:36:58	1.4
--- dln.c	2000/01/21 08:37:53
***************
*** 80,86 ****
  #endif
  
  #ifndef FUNCNAME_PATTERN
! # if defined(__hp9000s300) ||  (defined(__NetBSD__) && (!defined(__alpha__) && !defined(__mips__))) || defined(__BORLANDC__) || (defined(__FreeBSD__) && __FreeBSD__ < 3) || defined(__OpenBSD__) || defined(NeXT) || defined(__WATCOMC__) || defined(__APPLE__)
  #  define FUNCNAME_PATTERN "_Init_%.200s"
  # else
  #  define FUNCNAME_PATTERN "Init_%.200s"
--- 80,86 ----
  #endif
  
  #ifndef FUNCNAME_PATTERN
! # if defined(__hp9000s300) ||  (defined(__NetBSD__) && !defined(__ELF__)) || defined(__BORLANDC__) || (defined(__FreeBSD__) && __FreeBSD__ < 3) || defined(__OpenBSD__) || defined(NeXT) || defined(__WATCOMC__) || defined(__APPLE__)
  #  define FUNCNAME_PATTERN "_Init_%.200s"
  # else
  #  define FUNCNAME_PATTERN "Init_%.200s"
Index: ext/socket/extconf.rb
===================================================================
RCS file: /home/cvs/ruby/ext/socket/extconf.rb,v
retrieving revision 1.7
diff -c -r1.7 extconf.rb
*** ext/socket/extconf.rb	1999/10/20 07:10:23	1.7
--- ext/socket/extconf.rb	2000/01/21 08:37:54
***************
*** 41,46 ****
--- 41,47 ----
  $ipv6type = nil
  $ipv6lib = nil
  $ipv6libdir = nil
+ $ipv6trylibc = nil
  if $ipv6
    if egrep_cpp("yes", <<EOF)
  #include <netinet/in.h>
***************
*** 59,64 ****
--- 60,66 ----
      $ipv6type = "kame"
      $ipv6lib="inet6"
      $ipv6libdir="/usr/local/v6/lib"
+     $ipv6trylibc=true
      $CFLAGS="-DINET6 "+$CFLAGS
    elsif File.directory? "/usr/inet6"
      $ipv6type = "linux"
***************
*** 100,106 ****
    if $ipv6lib
      if File.directory? $ipv6libdir and File.exist? "#{$ipv6libdir}/lib#{$ipv6lib}.a"
        $LOCAL_LIBS = " -L#$ipv6libdir -l#$ipv6lib"
!     else
        print <<EOS
  
  Fatal: no #$ipv6lib library found.  cannot continue.
--- 102,108 ----
    if $ipv6lib
      if File.directory? $ipv6libdir and File.exist? "#{$ipv6libdir}/lib#{$ipv6lib}.a"
        $LOCAL_LIBS = " -L#$ipv6libdir -l#$ipv6lib"
!     elsif !$ipv6trylibc
        print <<EOS
  
  Fatal: no #$ipv6lib library found.  cannot continue.
***************
*** 128,133 ****
--- 130,152 ----
  }
  EOF
      $CFLAGS="-DHAVE_SIN_LEN "+$CFLAGS
+ end
+ 
+   if try_link(<<EOF)
+ #include <sys/types.h>
+ #include <netdb.h>
+ #include <string.h>
+ #include <sys/socket.h>
+ int
+ main()
+ {
+    struct sockaddr_storage ss;
+ 
+    ss.ss_family;
+    return 0;
+ }
+ EOF
+     $CFLAGS="-DHAVE_SOCKADDR_STORAGE "+$CFLAGS
  end
  
    if try_link(<<EOF)
Index: ext/socket/socket.c
===================================================================
RCS file: /home/cvs/ruby/ext/socket/socket.c,v
retrieving revision 1.12
diff -c -r1.12 socket.c
*** ext/socket/socket.c	2000/01/17 08:37:48	1.12
--- ext/socket/socket.c	2000/01/21 08:37:57
***************
*** 81,90 ****
  #define INET_SERVER 1
  #define INET_SOCKS  2
  
! #ifndef INET6
! # undef  ss_family
! # define sockaddr_storage	sockaddr
! # define ss_family		sa_family
  #endif
  
  #ifdef NT
--- 81,107 ----
  #define INET_SERVER 1
  #define INET_SOCKS  2
  
! #ifndef HAVE_SOCKADDR_STORAGE
! /*
!  * RFC 2553: protocol-independent placeholder for socket addresses
!  */
! #define _SS_MAXSIZE	128
! #define _SS_ALIGNSIZE	(sizeof(long long))
! #define _SS_PAD1SIZE	(_SS_ALIGNSIZE - sizeof(unsigned char) * 2)
! #define _SS_PAD2SIZE	(_SS_MAXSIZE - sizeof(unsigned char) * 2 - \
! 				_SS_PAD1SIZE - _SS_ALIGNSIZE)
! 
! struct sockaddr_storage {
! #ifdef HAVE_SA_LEN
! 	unsigned char ss_len;		/* address length */
! 	unsigned char ss_family;	/* address family */
! #else
! 	unsigned short ss_family;
! #endif
! 	char	__ss_pad1[_SS_PAD1SIZE];
! 	long long __ss_align;	/* force desired structure storage alignment */
! 	char	__ss_pad2[_SS_PAD2SIZE];
! };
  #endif
  
  #ifdef NT

In This Thread