From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fabio Fantoni Subject: Re: [BUGFIX][PATCH v2] configure: Disable libtool if -fPIE does not work with it (bug #1257099) Date: Tue, 04 Feb 2014 16:31:12 +0100 Message-ID: <52F107C0.2030509@m2r.biz> References: <1388715166-5868-1-git-send-email-dslutz@verizon.com> <52D65856.6050901@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini , Paolo Bonzini Cc: xen-devel@lists.xensource.com, Ian Campbell , 1257099@bugs.launchpad.net, Don Slutz , qemu-devel@nongnu.org, Richard Henderson List-Id: xen-devel@lists.xenproject.org Il 03/02/2014 12:59, Stefano Stabellini ha scritto: > On Wed, 15 Jan 2014, Paolo Bonzini wrote: >> Il 03/01/2014 03:12, Don Slutz ha scritto: >>> Adjust TMPO and added TMPB, TMPL, and TMPA. libtool needs the names >>> to be fixed (TMPB). >>> >>> Add new functions do_libtool and libtool_prog. >>> >>> Add check for broken gcc and libtool. >>> >>> Signed-off-by: Don Slutz >>> --- >>> Was posted as an attachment. >>> >>> https://lists.gnu.org/archive/html/qemu-devel/2013-12/msg02678.html >>> >>> configure | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- >>> 1 file changed, 62 insertions(+), 1 deletion(-) >>> >>> diff --git a/configure b/configure >>> index edfea95..852d021 100755 >>> --- a/configure >>> +++ b/configure >>> @@ -12,7 +12,10 @@ else >>> fi >>> >>> TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c" >>> -TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o" >>> +TMPB="qemu-conf-${RANDOM}-$$-${RANDOM}" >>> +TMPO="${TMPDIR1}/${TMPB}.o" >>> +TMPL="${TMPDIR1}/${TMPB}.lo" >>> +TMPA="${TMPDIR1}/lib${TMPB}.la" >>> TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe" >>> >>> # NB: do not call "exit" in the trap handler; this is buggy with some shells; >>> @@ -86,6 +89,38 @@ compile_prog() { >>> do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >>> } >>> >>> +do_libtool() { >>> + local mode=$1 >>> + shift >>> + # Run the compiler, capturing its output to the log. >>> + echo $libtool $mode --tag=CC $cc "$@" >> config.log >>> + $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $? >>> + # Test passed. If this is an --enable-werror build, rerun >>> + # the test with -Werror and bail out if it fails. This >>> + # makes warning-generating-errors in configure test code >>> + # obvious to developers. >>> + if test "$werror" != "yes"; then >>> + return 0 >>> + fi >>> + # Don't bother rerunning the compile if we were already using -Werror >>> + case "$*" in >>> + *-Werror*) >>> + return 0 >>> + ;; >>> + esac >>> + echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log >>> + $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $? >>> + error_exit "configure test passed without -Werror but failed with -Werror." \ >>> + "This is probably a bug in the configure script. The failing command" \ >>> + "will be at the bottom of config.log." \ >>> + "You can run configure with --disable-werror to bypass this check." >>> +} >>> + >>> +libtool_prog() { >>> + do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $? >>> + do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib >>> +} >>> + >>> # symbolically link $1 to $2. Portable version of "ln -sf". >>> symlink() { >>> rm -rf "$2" >>> @@ -1367,6 +1402,32 @@ EOF >>> fi >>> fi >>> >>> +# check for broken gcc and libtool in RHEL5 >>> +if test -n "$libtool" -a "$pie" != "no" ; then >>> + cat > $TMPC <>> + >>> +void *f(unsigned char *buf, int len); >>> +void *g(unsigned char *buf, int len); >>> + >>> +void * >>> +f(unsigned char *buf, int len) >>> +{ >>> + return (void*)0L; >>> +} >>> + >>> +void * >>> +g(unsigned char *buf, int len) >>> +{ >>> + return f(buf, len); >>> +} >>> + >>> +EOF >>> + if ! libtool_prog; then >>> + echo "Disabling libtool due to broken toolchain support" >>> + libtool= >>> + fi >>> +fi >>> + >>> ########################################## >>> # __sync_fetch_and_and requires at least -march=i486. Many toolchains >>> # use i686 as default anyway, but for those that don't, an explicit >>> >> I'm applying this to a "configure" branch on my github repository. Thanks! > Paolo, did this patch ever make it upstream? If so, do you have a commit > id? I searched it on upstream qemu git (master branch now with qemu 2.0 in development) and I not found it. > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel