qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PULL 8/9] pc-bios/s390-ccw: Allow building with Clang, too


From: Thomas Huth
Subject: Re: [PULL 8/9] pc-bios/s390-ccw: Allow building with Clang, too
Date: Wed, 12 May 2021 16:51:53 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0

On 12/05/2021 16.00, Thomas Huth wrote:
On 12/05/2021 15.40, Thomas Huth wrote:
On 12/05/2021 13.53, Philippe Mathieu-Daudé wrote:
On 5/10/21 9:35 AM, Thomas Huth wrote:
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>
---
  configure                 | 9 ++++++++-
  pc-bios/s390-ccw/Makefile | 3 ++-
  2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 4f374b4889..5ebc937746 100755
--- a/configure
+++ b/configure
@@ -5417,9 +5417,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

This broke the travis-ci  "[s390x] Clang (disable-tcg)" job:
https://travis-ci.org/github/qemu/qemu/jobs/770794417#L1776

Description:    Ubuntu 18.04.4 LTS
Release:    18.04
Codename:    bionic

$ clang --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: s390x-ibm-linux-gnu

Darn! ... I guess we should switch to the clang-10 package which should be available there, since Daniel also plans to raise the minimum Clang version to 7.0 now ... I'll try to come up with a patch...

Never mind to update travis.yml ... I just read:

https://blog.travis-ci.com/2021-05-07-orgshutdown

i.e. travis-ci.org will be finally really be shut down at the end of the month. We should remove our travis-ci.yml file now.

Never mind the never mind ... as I just learnt, Travis now offers free CI again for s390x and aarch64, so we certainly should not remove the travis-ci.yml file yet.

 Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]