Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:12868 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 24557 invoked by uid 1010); 16 Sep 2004 14:54:14 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 23909 invoked from network); 16 Sep 2004 14:54:05 -0000 Received: from unknown (HELO colo.lerdorf.com) (66.198.51.121) by pb1.pair.com with SMTP; 16 Sep 2004 14:54:05 -0000 Received: from [192.168.1.105] (c-24-6-200-247.client.comcast.net [24.6.200.247]) by colo.lerdorf.com (8.13.1/8.13.1/Debian-13) with ESMTP id i8GEs4To025867; Thu, 16 Sep 2004 07:54:04 -0700 Date: Thu, 16 Sep 2004 07:54:02 -0700 (PDT) X-X-Sender: rasmus@t42p.lerdorf.com To: Joe Orton cc: internals@lists.php.net In-Reply-To: <20040916141910.GA14389@redhat.com> Message-ID: References: <20040916093900.GA6842@redhat.com> <20040916101531.GA6809@redhat.com> <20040916104604.GB6809@redhat.com> <20040916141910.GA14389@redhat.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Subject: Re: [PHP-DEV] [PATCH] use -prefer-non-pic on x86-{freebsd,linux} From: rasmus@php.net (Rasmus Lerdorf) Makes sense to me. On Thu, 16 Sep 2004, Joe Orton wrote: > On Thu, Sep 16, 2004 at 06:31:56AM -0700, Rasmus Lerdorf wrote: > > On Thu, 16 Sep 2004, Joe Orton wrote: > > > > > On Thu, Sep 16, 2004 at 12:39:39PM +0200, Sascha Schumann wrote: > > > > The point is that the current behaviour needs to be retained > > > > for installations which would be negatively affected by your > > > > patch. Building non-PIC as default is ok, if a switch is > > > > provided to build PIC. > > > > > > Ah, gotcha. Any preference as to flag name? --disable-non-pic would be > > > an obvious choice, confusing double negative though. > > > > There is already a --without-pic/--with-pic flag that just doesn't work. > > I'd key it off of that. > > It doesn't work because PHP prevents AC_PROG_LIBTOOL from interpreting > it by doing "unset with_pic". > > So one solution would be to remove that hack and in the case where > --with-pic or --without-pic is passed to configure, never explicitly > specify a pic "preference" to the libtool script. And make the default > as if "--without-pic" was passed in the x86* whitelist. > > Index: configure.in > =================================================================== > RCS file: /repository/php-src/configure.in,v > retrieving revision 1.516 > diff -u -r1.516 configure.in > --- configure.in 21 Jul 2004 23:02:28 -0000 1.516 > +++ configure.in 16 Sep 2004 14:07:03 -0000 > @@ -1,4 +1,4 @@ > -dnl ## $Id: configure.in,v 1.516 2004/07/21 23:02:28 edink Exp $ -*- sh -*- > +dnl ## $Id: configure.in,v 1.516 2004/07/21 23:02:28 edink Exp $ -*- autoconf -*- > dnl ## Process this file with autoconf to produce a configure script. > > divert(1) > @@ -222,6 +222,21 @@ > CPPFLAGS="$CPPFLAGS -D_XPG_IV";; > esac > > +# Disable PIC mode by default where it is known to be safe to do so, > +# to avoid the performance hit from the lost register > +AC_MSG_CHECKING([whether to force non-PIC code in shared modules]) > +case $host_alias in > +i?86-*-linux*|i?86-*-freebsd*) > + if test "${with_pic+set}" != "set"; then > + with_pic=no > + AC_MSG_RESULT(yes) > + else > + AC_MSG_RESULT(no) > + fi > + ;; > +*) AC_MSG_RESULT(no) ;; > +esac > + > > dnl Include Zend and TSRM configurations. > dnl ------------------------------------------------------------------------- > @@ -850,7 +865,6 @@ > > enable_shared=yes > enable_static=yes > -unset with_pic > > case $php_build_target in > program|static) > @@ -861,7 +875,9 @@ > ;; > shared) > enable_static=no > - standard_libtool_flag=-prefer-pic > + if test "${with_pic+set}" != set; then > + standard_libtool_flag='-prefer-pic' > + fi > EXTRA_LDFLAGS="$EXTRA_LDFLAGS -avoid-version -module" > ;; > esac > Index: acinclude.m4 > =================================================================== > RCS file: /repository/php-src/acinclude.m4,v > retrieving revision 1.273 > diff -u -r1.273 acinclude.m4 > --- acinclude.m4 12 Sep 2004 06:35:51 -0000 1.273 > +++ acinclude.m4 16 Sep 2004 14:07:03 -0000 > @@ -772,11 +772,16 @@ > php_cxx_post=' && echo > $[@]' > php_lo=o > > + if test "${with_pic+set}" = set; then > + shared_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)' > + shared_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS)' > + else > + shared_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) -prefer-pic' > + shared_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -prefer-pic' > + fi > shared_c_pre='$(LIBTOOL) --mode=compile $(CC)' > - shared_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) -prefer-pic' > shared_c_post= > shared_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)' > - shared_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -prefer-pic' > shared_cxx_post= > shared_lo=lo > > @@ -1158,12 +1163,15 @@ > install_modules="install-modules" > PHP_MODULES="$PHP_MODULES \$(phplibdir)/$1.la" > PHP_SUBST($2) > + if test ${with_pic+set} != set; then > + php_shared_picflag="-prefer-pic" > + fi > cat >>Makefile.objects< \$(phplibdir)/$1.la: $3/$1.la > \$(LIBTOOL) --mode=install cp $3/$1.la \$(phplibdir) > > $3/$1.la: \$($2) \$(translit($1,a-z_-,A-Z__)_SHARED_DEPENDENCIES) > - \$(LIBTOOL) --mode=link ifelse($4,,[\$(CC)],[\$(CXX)]) \$(COMMON_FLAGS) \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(LDFLAGS) -o \[$]@ -export-dynamic -avoid-version -prefer-pic -module -rpath \$(phplibdir) \$(EXTRA_LDFLAGS) \$($2) \$(translit($1,a-z_-,A-Z__)_SHARED_LIBADD) > + \$(LIBTOOL) --mode=link ifelse($4,,[\$(CC)],[\$(CXX)]) \$(COMMON_FLAGS) \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(LDFLAGS) -o \[$]@ -export-dynamic -avoid-version $php_shared_picflag -module -rpath \$(phplibdir) \$(EXTRA_LDFLAGS) \$($2) \$(translit($1,a-z_-,A-Z__)_SHARED_LIBADD) > > EOF > ]) > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php >