Message ID | 1471256891-203570-2-git-send-email-borntraeger@de.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, 15 Aug 2016 12:28:11 +0200 Christian Borntraeger <borntraeger@de.ibm.com> wrote: > 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] Can we preserve no strict aliasing somehow? I don't really want to change the bios code at that point if not needed. > return kvm_hypercall(KVM_S390_VIRTIO_CCW_NOTIFY, *(u32 *)&schid, > --- snip --- > > Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> > --- > 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 Does not look unreasonable, but as I've lost myself in the makefile dependencies before, I'd like another review.
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); }
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 <borntraeger@de.ibm.com> --- pc-bios/s390-ccw/Makefile | 6 ++++-- pc-bios/s390-ccw/virtio.c | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-)