SHA256
1
0
forked from pool/qemu

Accepting request 143481 from home:a_faerber:branches:Virtualization

Update build OOM workaround patch to v3.

OBS-URL: https://build.opensuse.org/request/show/143481
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=120
This commit is contained in:
Andreas Färber 2012-11-28 17:30:07 +00:00 committed by Git OBS Bridge
parent 532065e741
commit 7845aa8183
2 changed files with 53 additions and 15 deletions

View File

@ -1,37 +1,70 @@
From 877b2cbdae68c741bb63d45db17fdc243fc3450a Mon Sep 17 00:00:00 2001 From 132be91691913225f5541b66463db6e084221a1b Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com> From: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue, 27 Nov 2012 17:21:03 +0100 Date: Wed, 28 Nov 2012 09:40:23 +0100
Subject: [PATCH] build: compile translate.o with -fno-gcse option Subject: [PATCH] build: compile translate.o with -fno-gcse option on GCC
4.6.x and 4.7.[012]
MIME-Version: 1.0 MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8 Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit Content-Transfer-Encoding: 8bit
Some versions of GCC require insane (>2GB) amounts of memory to compile These versions of GCC require insane (>2GB) amounts of memory to compile
translate.o. As a countermeasure, disable the culprit optimization pass. translate.o. As a countermeasure, disable the culprit optimization pass.
This should fix the buildbot failure for default_x86_64_fedora16. This should fix the buildbot failure for default_x86_64_fedora16. Anyway
Anyway is a good thing to do because people will try to compile 1.3 with this is a good thing to do because people will try to compile 1.3 with
less than 2GB of memory and complain. less than 2GB of memory and complain.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Andreas Färber <afaerber@suse.de>
--- ---
Makefile.target | 6 ++++++ Makefile.target | 3 +++
1 Datei geändert, 6 Zeilen hinzugefügt(+) configure | 16 ++++++++++++++++
2 Dateien geändert, 19 Zeilen hinzugefügt(+)
diff --git a/Makefile.target b/Makefile.target diff --git a/Makefile.target b/Makefile.target
index 206a232..d1c519f 100644 index 206a232..dc7efe9 100644
--- a/Makefile.target --- a/Makefile.target
+++ b/Makefile.target +++ b/Makefile.target
@@ -149,6 +149,12 @@ GENERATED_HEADERS += hmp-commands.h qmp-commands-old.h @@ -149,6 +149,9 @@ GENERATED_HEADERS += hmp-commands.h qmp-commands-old.h
endif # CONFIG_SOFTMMU endif # CONFIG_SOFTMMU
+# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC +# Workaround for http://gcc.gnu.org/PR55489, see configure.
+# and large functions that use global variables. The bug is in all +%/translate.o: QEMU_CFLAGS += $(TRANSLATE_OPT_CFLAGS)
+# releases of GCC, but it became particularly acute in 4.7.x. We
+# should be able to delete this at the end of 2013.
+%/translate.o: QEMU_CFLAGS += -fno-gcse
+ +
nested-vars += obj-y nested-vars += obj-y
ifdef CONFIG_LINUX_USER ifdef CONFIG_LINUX_USER
nested-vars += obj-binfmt-y nested-vars += obj-binfmt-y
diff --git a/configure b/configure
index 92c010f..401f369 100755
--- a/configure
+++ b/configure
@@ -1185,6 +1185,21 @@ for flag in $gcc_flags; do
fi
done
+# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
+# large functions that use global variables. The bug is in all releases of
+# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
+# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
+cat > $TMPC << EOF
+#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
+int main(void) { return 0; }
+#else
+#error No bug in this compiler.
+#endif
+EOF
+if compile_prog "-Werror -fno-gcse" "" ; then
+ TRANSLATE_OPT_CFLAGS=-fno-gcse
+fi
+
if test "$static" = "yes" ; then
if test "$pie" = "yes" ; then
echo "static and pie are mutually incompatible"
@@ -3664,6 +3679,7 @@ echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
echo "EXESUF=$EXESUF" >> $config_host_mak
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
echo "POD2MAN=$POD2MAN" >> $config_host_mak
+echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
# generate list of library paths for linker script

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Wed Nov 28 12:26:39 UTC 2012 - afaerber@suse.de
- Replace -fno-gcse patch with v3
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Nov 27 16:34:29 UTC 2012 - afaerber@suse.de Tue Nov 27 16:34:29 UTC 2012 - afaerber@suse.de