78 lines
3.3 KiB
Diff
78 lines
3.3 KiB
Diff
From 9da71839fdc4e8b9d034998b0ed8a7ee9dfe7645 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Huth <thuth@redhat.com>
|
|
Date: Sun, 2 May 2021 13:22:21 +0200
|
|
Subject: [PATCH 34/39] pc-bios/s390-ccw: Allow building with Clang, too
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
RH-Author: Jon Maloy <jmaloy@redhat.com>
|
|
RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack
|
|
RH-Commit: [7/11] d7c510f1e5f6434f6b3e4bab5b5f75403cbc7e1b (jmaloy/qemu-kvm-centos-jon)
|
|
RH-Bugzilla: 1939509 1940132
|
|
RH-Acked-by: Danilo Cesar Lemes de Paula <ddepaula@redhat.com>
|
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
|
|
|
Clang unfortunately does not support generating code for the z900
|
|
architecture level and starts with the z10 instead. Thus to be able
|
|
to support compiling with Clang, we have to check for the supported
|
|
compiler flags. The disadvantage is of course that the bios image
|
|
will only run with z10 guest CPUs upwards (which is what most people
|
|
use anyway), so just in case let's also emit a warning in that case
|
|
(we will continue to ship firmware images that have been pre-built
|
|
with GCC in future releases, so this should not impact normal users,
|
|
too).
|
|
|
|
Message-Id: <20210502174836.838816-5-thuth@redhat.com>
|
|
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
|
|
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
|
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
|
(cherry picked from commit a5b2afd522dde375c38cf94b7c696ffa3faba2fb)
|
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
---
|
|
configure | 9 ++++++++-
|
|
pc-bios/s390-ccw/Makefile | 3 ++-
|
|
2 files changed, 10 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/configure b/configure
|
|
index 7edc08afb3..83d8af7fe4 100755
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -5424,9 +5424,16 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
|
|
fi
|
|
|
|
# Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
|
|
+# or -march=z10 (which is the lowest architecture level that Clang supports)
|
|
if test "$cpu" = "s390x" ; then
|
|
write_c_skeleton
|
|
- if compile_prog "-march=z900" ""; then
|
|
+ compile_prog "-march=z900" ""
|
|
+ has_z900=$?
|
|
+ if [ $has_z900 = 0 ] || compile_prog "-march=z10" ""; then
|
|
+ if [ $has_z900 != 0 ]; then
|
|
+ echo "WARNING: Your compiler does not support the z900!"
|
|
+ echo " The s390-ccw bios will only work with guest CPUs >= z10."
|
|
+ fi
|
|
roms="$roms s390-ccw"
|
|
# SLOF is required for building the s390-ccw firmware on s390x,
|
|
# since it is using the libnet code from SLOF for network booting.
|
|
diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile
|
|
index 83fb1afb73..cee9d2c63b 100644
|
|
--- a/pc-bios/s390-ccw/Makefile
|
|
+++ b/pc-bios/s390-ccw/Makefile
|
|
@@ -34,7 +34,8 @@ QEMU_CFLAGS += $(call cc-option,-Werror $(QEMU_CFLAGS),-Wno-stringop-overflow)
|
|
QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -fno-common -fPIE
|
|
QEMU_CFLAGS += -fwrapv -fno-strict-aliasing -fno-asynchronous-unwind-tables
|
|
QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-stack-protector)
|
|
-QEMU_CFLAGS += -msoft-float -march=z900
|
|
+QEMU_CFLAGS += -msoft-float
|
|
+QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS),-march=z900,-march=z10)
|
|
QEMU_CFLAGS += -std=gnu99
|
|
LDFLAGS += -Wl,-pie -nostdlib
|
|
|
|
--
|
|
2.27.0
|
|
|