|
View:
New views
2 Messages
—
Rating Filter:
Alert me
|
|
|
[PATCH] R13(B02) 64-bit opensolaris supportI have finally had a chance to test 64-bit R13 in our environment and on
opensolaris. The --enable-m64-build option added in R13 has helped the size of the changes, but unfortunately I still need the patch at the end of this mail to build a fully working 64-bit environment. When configuring/build like so: $ CC=gcc LD=gcc CFLAGS=-O2 LIBS=-lmtmalloc \ ./configure --enable-threads --enable-smp-support \ --enable-kernel-poll --enable-hipe \ --disable-megaco-flex-scanner-drvlineno --without-unixodbc \ --enable-m64-build The following issues exist: 1) --enable-m64-build disables hipe unconditionally To my knowledge HiPE works on amd64 solaris 5.11, so disabling this no matter what seems wrong. 2) DED_LDFLAGS is set for old solaris ld and not gnu ld or gcc The erts/configure(.in) should detect if gcc is being specified as the linker and set the DED_LDFLAGS appropriately, even though DED_LD gets set to $(CC) unconditionally. Things need to be sensitive to the options differences. 3) erl_interface configure.in does not understand --enable-m64-build The option needs to be added and the CFLAGS twiddled in the same way as erts/configure.in. Here is the patch against R13B02 Aug 12 snapshot that I ended up with (I included the changes to the generated files too, just for convenience): --- otp_src_R13B02/erts/configure 2009-08-11 13:01:22.000000000 -0500 +++ otp_src_R13B02/erts/configure.new 2009-08-13 15:54:04.243098019 -0500 @@ -2807,8 +2807,10 @@ { (exit 1); exit 1; }; } fi fi -if test X${enable_darwin_64bit} = Xyes -o X${enable_m64_build} = Xyes; then +if test X${enable_darwin_64bit} = Xyes; then enable_hipe=no +fi +if test X${enable_darwin_64bit} = Xyes -o X${enable_m64_build} = Xyes; then case $CFLAGS in *-m64*) ;; @@ -20897,9 +20899,16 @@ DED_LD_FLAG_RUNTIME_LIBRARY_PATH= ;; solaris2*|sysv4*) - DED_LDFLAGS="-G" - if test X${enable_m64_build} = Xyes; then - DED_LDFLAGS="-64 $DED_LDFLAGS" + if test "x$GCC" = "xyes"; then + DED_LD=gcc + DED_LDFLAGS="-shared" + DED_LDFLAGS_64="-m64" + else + DED_LDFLAGS="-G" + DED_LDFLAGS_64="-64" + fi + if test "X${enable_m64_build}" = "Xyes"; then + DED_LDFLAGS="$DED_LDFLAGS_64 $DED_LDFLAGS" fi ;; aix4*) --- otp_src_R13B02/erts/configure.in 2009-06-05 07:53:07.000000000 -0500 +++ otp_src_R13B02/erts/configure.in.new 2009-08-13 15:54:04.242383252 -0500 @@ -291,8 +291,10 @@ AC_MSG_ERROR([--enable-darwin-64bit only supported on x86 host]) fi fi -if test X${enable_darwin_64bit} = Xyes -o X${enable_m64_build} = Xyes; then +if test X${enable_darwin_64bit} = Xyes; then enable_hipe=no +fi +if test X${enable_darwin_64bit} = Xyes -o X${enable_m64_build} = Xyes; then case $CFLAGS in *-m64*) ;; @@ -2924,9 +2926,17 @@ DED_LD_FLAG_RUNTIME_LIBRARY_PATH= ;; solaris2*|sysv4*) - DED_LDFLAGS="-G" - if test X${enable_m64_build} = Xyes; then - DED_LDFLAGS="-64 $DED_LDFLAGS" + if test "x$GCC" = "xyes"; then + DED_LD=gcc + DED_LDFLAGS="-shared" + DED_LDFLAGS_64="-m64" + + elif + DED_LDFLAGS="-G" + DED_LDFLAGS_64="-m64" + fi + if test "X${enable_m64_build}" = "Xyes"; then + DED_LDFLAGS="$DED_LDFLAGS_64 $DED_LDFLAGS" fi ;; aix4*) --- otp_src_R13B02/lib/erl_interface/configure 2009-08-11 13:01:14.000000000 -0500 +++ otp_src_R13B02/lib/erl_interface/configure.new 2009-08-14 08:20:24.804342800 -0500 @@ -1440,6 +1440,27 @@ threads_disabled=no fi; +# Check whether --enable-m64-build or --disable-m64-build was given. +if test "${enable_m64_build+set}" = set; then + enableval="$enable_m64_build" + case "$enableval" in + no) enable_m64_build=no ;; + *) enable_m64_build=yes ;; + esac +else + enable_m64_build=no +fi; + +if test X${enable_m64_build} = Xyes; then + case $CFLAGS in + *-m64*) + ;; + *) + CFLAGS="-m64 $CFLAGS" + ;; + esac +fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' --- otp_src_R13B02/lib/erl_interface/configure.in 2009-08-14 08:24:02.056578225 -0500 +++ otp_src_R13B02/lib/erl_interface/configure.in.new 2009-08-14 08:25:16.412178147 -0500 @@ -87,6 +87,24 @@ esac ], [ threads_disabled=no ]) +AC_ARG_ENABLE(m64-build, +[ --enable-m64-build build 64bit binaries using the -m64 flag to (g)cc], +[ case "$enableval" in + no) enable_m64_build=no ;; + *) enable_m64_build=yes ;; + esac +],enable_m64_build=no) + +if test X${enable_m64_build} = Xyes; then + case $CFLAGS in + *-m64*) + ;; + *) + CFLAGS="-m64 $CFLAGS" + ;; + esac +fi + dnl ---------------------------------------------------------------------- dnl Checks for programs dnl ---------------------------------------------------------------------- ________________________________________________________________ erlang-patches mailing list. See http://www.erlang.org/faq.html erlang-patches (at) erlang.org |
|
|
Re: [PATCH] R13(B02) 64-bit opensolaris supportHi Paul,
Thank you for reporting this issue, I will have a look at it. Regards, Björn-Egil Erlang/OTP Paul Fisher wrote: > I have finally had a chance to test 64-bit R13 in our environment and on > opensolaris. The --enable-m64-build option added in R13 has helped the > size of the changes, but unfortunately I still need the patch at the end > of this mail to build a fully working 64-bit environment. > > When configuring/build like so: > > $ CC=gcc LD=gcc CFLAGS=-O2 LIBS=-lmtmalloc \ > ./configure --enable-threads --enable-smp-support \ > --enable-kernel-poll --enable-hipe \ > --disable-megaco-flex-scanner-drvlineno --without-unixodbc \ > --enable-m64-build > > The following issues exist: > > 1) --enable-m64-build disables hipe unconditionally > To my knowledge HiPE works on amd64 solaris 5.11, so disabling this no > matter what seems wrong. > > 2) DED_LDFLAGS is set for old solaris ld and not gnu ld or gcc > The erts/configure(.in) should detect if gcc is being specified as the > linker and set the DED_LDFLAGS appropriately, even though DED_LD gets > set to $(CC) unconditionally. Things need to be sensitive to the > options differences. > > 3) erl_interface configure.in does not understand --enable-m64-build > The option needs to be added and the CFLAGS twiddled in the same way as > erts/configure.in. > > Here is the patch against R13B02 Aug 12 snapshot that I ended up with (I > included the changes to the generated files too, just for convenience): > > --- otp_src_R13B02/erts/configure 2009-08-11 13:01:22.000000000 -0500 > +++ otp_src_R13B02/erts/configure.new 2009-08-13 15:54:04.243098019 > -0500 > @@ -2807,8 +2807,10 @@ > { (exit 1); exit 1; }; } > fi > fi > -if test X${enable_darwin_64bit} = Xyes -o X${enable_m64_build} = Xyes; > then > +if test X${enable_darwin_64bit} = Xyes; then > enable_hipe=no > +fi > +if test X${enable_darwin_64bit} = Xyes -o X${enable_m64_build} = Xyes; > then > case $CFLAGS in > *-m64*) > ;; > @@ -20897,9 +20899,16 @@ > DED_LD_FLAG_RUNTIME_LIBRARY_PATH= > ;; > solaris2*|sysv4*) > - DED_LDFLAGS="-G" > - if test X${enable_m64_build} = Xyes; then > - DED_LDFLAGS="-64 $DED_LDFLAGS" > + if test "x$GCC" = "xyes"; then > + DED_LD=gcc > + DED_LDFLAGS="-shared" > + DED_LDFLAGS_64="-m64" > + else > + DED_LDFLAGS="-G" > + DED_LDFLAGS_64="-64" > + fi > + if test "X${enable_m64_build}" = "Xyes"; then > + DED_LDFLAGS="$DED_LDFLAGS_64 $DED_LDFLAGS" > fi > ;; > aix4*) > --- otp_src_R13B02/erts/configure.in 2009-06-05 07:53:07.000000000 -0500 > +++ otp_src_R13B02/erts/configure.in.new 2009-08-13 > 15:54:04.242383252 -0500 > @@ -291,8 +291,10 @@ > AC_MSG_ERROR([--enable-darwin-64bit only supported on x86 host]) > fi > fi > -if test X${enable_darwin_64bit} = Xyes -o X${enable_m64_build} = Xyes; > then > +if test X${enable_darwin_64bit} = Xyes; then > enable_hipe=no > +fi > +if test X${enable_darwin_64bit} = Xyes -o X${enable_m64_build} = Xyes; > then > case $CFLAGS in > *-m64*) > ;; > @@ -2924,9 +2926,17 @@ > DED_LD_FLAG_RUNTIME_LIBRARY_PATH= > ;; > solaris2*|sysv4*) > - DED_LDFLAGS="-G" > - if test X${enable_m64_build} = Xyes; then > - DED_LDFLAGS="-64 $DED_LDFLAGS" > + if test "x$GCC" = "xyes"; then > + DED_LD=gcc > + DED_LDFLAGS="-shared" > + DED_LDFLAGS_64="-m64" > + > + elif > + DED_LDFLAGS="-G" > + DED_LDFLAGS_64="-m64" > + fi > + if test "X${enable_m64_build}" = "Xyes"; then > + DED_LDFLAGS="$DED_LDFLAGS_64 $DED_LDFLAGS" > fi > ;; > aix4*) > --- otp_src_R13B02/lib/erl_interface/configure 2009-08-11 > 13:01:14.000000000 -0500 > +++ otp_src_R13B02/lib/erl_interface/configure.new 2009-08-14 > 08:20:24.804342800 -0500 > @@ -1440,6 +1440,27 @@ > threads_disabled=no > fi; > > +# Check whether --enable-m64-build or --disable-m64-build was given. > +if test "${enable_m64_build+set}" = set; then > + enableval="$enable_m64_build" > + case "$enableval" in > + no) enable_m64_build=no ;; > + *) enable_m64_build=yes ;; > + esac > +else > + enable_m64_build=no > +fi; > + > +if test X${enable_m64_build} = Xyes; then > + case $CFLAGS in > + *-m64*) > + ;; > + *) > + CFLAGS="-m64 $CFLAGS" > + ;; > + esac > +fi > + > > ac_ext=c > ac_cpp='$CPP $CPPFLAGS' > --- otp_src_R13B02/lib/erl_interface/configure.in 2009-08-14 > 08:24:02.056578225 -0500 > +++ otp_src_R13B02/lib/erl_interface/configure.in.new 2009-08-14 > 08:25:16.412178147 -0500 > @@ -87,6 +87,24 @@ > esac ], > [ threads_disabled=no ]) > > +AC_ARG_ENABLE(m64-build, > +[ --enable-m64-build build 64bit binaries using the -m64 flag to > (g)cc], > +[ case "$enableval" in > + no) enable_m64_build=no ;; > + *) enable_m64_build=yes ;; > + esac > +],enable_m64_build=no) > + > +if test X${enable_m64_build} = Xyes; then > + case $CFLAGS in > + *-m64*) > + ;; > + *) > + CFLAGS="-m64 $CFLAGS" > + ;; > + esac > +fi > + > dnl ---------------------------------------------------------------------- > dnl Checks for programs > dnl ---------------------------------------------------------------------- > > > ________________________________________________________________ > erlang-patches mailing list. See http://www.erlang.org/faq.html > erlang-patches (at) erlang.org ________________________________________________________________ erlang-patches mailing list. See http://www.erlang.org/faq.html erlang-patches (at) erlang.org |
| Free embeddable forum powered by Nabble | Forum Help |