Message ID | 1384384147-11076-1-git-send-email-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Am 14.11.2013 00:09, schrieb Peter Maydell: > Fix build failures with clang when KVM is not enabled by > providing a stub version of kvm_arch_get_supported_cpuid(). > We retain the compile time check that this function isn't > called when CONFIG_KVM is not set by guarding the stub with > ifndef __OPTIMIZE__ (we assume that an optimizing build will > do sufficient constant folding and dead code elimination to > remove the calls before linking). > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > Changes v1->v2: > * guard stub with ifndef __OPTIMIZE__ > * make stub abort() rather than return bogus value > > target-i386/kvm-stub.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/target-i386/kvm-stub.c b/target-i386/kvm-stub.c > index 11429c4..2b9e801 100644 > --- a/target-i386/kvm-stub.c > +++ b/target-i386/kvm-stub.c > @@ -16,3 +16,15 @@ bool kvm_allows_irq0_override(void) > { > return 1; > } > + > +#ifndef __OPTIMIZE__ > +/* This function is only called inside conditionals which we > + * rely on the compiler to optimize out when CONFIG_KVM is not > + * defined. > + */ > +uint32_t q(KVMState *env, uint32_t function, > + uint32_t index, int reg) > +{ > + abort(); > +} > +#endif Reviewed-by: Stefan Weil <sw@weilnetz.de> If you happen to write a v3 patch, g_assert_not_reached would be even better than abort. It's impossible to tell why QEMU terminated after an assert without a debugger, whereas g_assert_not_reached clearly shows the location. Regards, Stefan -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Il 14/11/2013 00:09, Peter Maydell ha scritto: > +#ifndef __OPTIMIZE__ > +/* This function is only called inside conditionals which we > + * rely on the compiler to optimize out when CONFIG_KVM is not > + * defined. > + */ > +uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, > + uint32_t index, int reg) > +{ > + abort(); > +} > +#endif Thanks, I'll apply this to uq/master and send a pull request. Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 14 November 2013 05:40, Stefan Weil <sw@weilnetz.de> wrote: > If you happen to write a v3 patch, g_assert_not_reached would be even > better than abort. > > It's impossible to tell why QEMU terminated after an assert without a > debugger, > whereas g_assert_not_reached clearly shows the location. Maybe. I was mostly just following the pattern of existing stub functions. Should all instances of abort() be replaced? (g_assert_not_reached() is compile-time disablable, unlike abort()). -- PMM -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Il 14/11/2013 12:06, Peter Maydell ha scritto: > On 14 November 2013 05:40, Stefan Weil <sw@weilnetz.de> wrote: >> If you happen to write a v3 patch, g_assert_not_reached would be even >> better than abort. >> >> It's impossible to tell why QEMU terminated after an assert without a >> debugger, >> whereas g_assert_not_reached clearly shows the location. > > Maybe. I was mostly just following the pattern of existing > stub functions. Should all instances of abort() be replaced? > (g_assert_not_reached() is compile-time disablable, unlike > abort()). No, disabling asserts is almost always bad, but disabling unconditional asserts is even worse. Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/target-i386/kvm-stub.c b/target-i386/kvm-stub.c index 11429c4..2b9e801 100644 --- a/target-i386/kvm-stub.c +++ b/target-i386/kvm-stub.c @@ -16,3 +16,15 @@ bool kvm_allows_irq0_override(void) { return 1; } + +#ifndef __OPTIMIZE__ +/* This function is only called inside conditionals which we + * rely on the compiler to optimize out when CONFIG_KVM is not + * defined. + */ +uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, + uint32_t index, int reg) +{ + abort(); +} +#endif
Fix build failures with clang when KVM is not enabled by providing a stub version of kvm_arch_get_supported_cpuid(). We retain the compile time check that this function isn't called when CONFIG_KVM is not set by guarding the stub with ifndef __OPTIMIZE__ (we assume that an optimizing build will do sufficient constant folding and dead code elimination to remove the calls before linking). Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- Changes v1->v2: * guard stub with ifndef __OPTIMIZE__ * make stub abort() rather than return bogus value target-i386/kvm-stub.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)