From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40377) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WAi09-00023t-37 for qemu-devel@nongnu.org; Tue, 04 Feb 2014 10:33:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WAhxy-0004hb-8I for qemu-devel@nongnu.org; Tue, 04 Feb 2014 10:31:19 -0500 Received: from mail-wg0-f44.google.com ([74.125.82.44]:50941) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WAhxx-0004hA-Vk for qemu-devel@nongnu.org; Tue, 04 Feb 2014 10:31:14 -0500 Received: by mail-wg0-f44.google.com with SMTP id l18so13064361wgh.35 for ; Tue, 04 Feb 2014 07:31:12 -0800 (PST) Message-ID: <52F107C0.2030509@m2r.biz> Date: Tue, 04 Feb 2014 16:31:12 +0100 From: Fabio Fantoni MIME-Version: 1.0 References: <1388715166-5868-1-git-send-email-dslutz@verizon.com> <52D65856.6050901@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [Xen-devel] [BUGFIX][PATCH v2] configure: Disable libtool if -fPIE does not work with it (bug #1257099) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 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