qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 1/1] pc-bios/s390-ccw.img: Fix build


From: Christian Borntraeger
Subject: [Qemu-devel] [PATCH 1/1] pc-bios/s390-ccw.img: Fix build
Date: Mon, 15 Aug 2016 12:28:11 +0200

Since
commit a9c87304b76d ("build-sys: fix building with make CFLAGS=.. argument")

pc-bios/s390-ccw.img build might fail with

--- snip ---
main.o: In function `virtio_setup':
qemu/pc-bios/s390-ccw/main.c:117: undefined reference to `__stack_chk_fail'
--- snip ---

Changing the CFLAGS to QEMU_CFLAGS does the trick.

We also need to fix a potential aliasing bug as we now compile with
-O2 instead of -O0. This was the warning message:

--- snip ---
/home/cborntra/REPOS/qemu/pc-bios/s390-ccw/virtio.c:64:5: error:
dereferencing type-punned pointer will break strict-aliasing rules
[-Werror=strict-aliasing]
     return kvm_hypercall(KVM_S390_VIRTIO_CCW_NOTIFY, *(u32 *)&schid,
--- snip ---

Signed-off-by: Christian Borntraeger <address@hidden>
---
 pc-bios/s390-ccw/Makefile | 6 ++++--
 pc-bios/s390-ccw/virtio.c | 7 ++++++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile
index 4208cb4..a9dcca4 100644
--- a/pc-bios/s390-ccw/Makefile
+++ b/pc-bios/s390-ccw/Makefile
@@ -10,8 +10,10 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/s390-ccw)
 .PHONY : all clean build-all
 
 OBJECTS = start.o main.o bootmap.o sclp-ascii.o virtio.o virtio-scsi.o
-CFLAGS += -fPIE -fno-stack-protector -ffreestanding -march=z900
-CFLAGS += -fno-delete-null-pointer-checks -msoft-float
+QEMU_CFLAGS := $(filter -W%, $(QEMU_CFLAGS))
+QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -msoft-float
+QEMU_CFLAGS += -march=z900 -fPIE
+QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-stack-protector)
 LDFLAGS += -Wl,-pie -nostdlib
 
 build-all: s390-ccw.img
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index 1d34e8c..9a7681d 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -61,7 +61,12 @@ static long kvm_hypercall(unsigned long nr, unsigned long 
param1,
 
 static long virtio_notify(SubChannelId schid, int vq_idx, long cookie)
 {
-    return kvm_hypercall(KVM_S390_VIRTIO_CCW_NOTIFY, *(u32 *)&schid,
+    union {
+        SubChannelId schid;
+        u32 value;
+    } sch;
+    sch.schid = schid;
+    return kvm_hypercall(KVM_S390_VIRTIO_CCW_NOTIFY, sch.value,
                          vq_idx, cookie);
 }
 
-- 
2.5.5




reply via email to

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