[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC
From: |
Paolo Bonzini |
Subject: |
Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n |
Date: |
Sat, 18 Jan 2020 21:47:52 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 |
On 13/01/20 15:01, Markus Armbruster wrote:
> Philippe Mathieu-Daudé <address@hidden> writes:
>
>> When configured with --without-default-devices and setting
>> MC146818RTC=n, the build fails:
>>
>> LINK x86_64-softmmu/qemu-system-x86_64
>> /usr/bin/ld: qapi/qapi-commands-misc-target.o: in function
>> `qmp_marshal_rtc_reset_reinjection':
>> qapi/qapi-commands-misc-target.c:46: undefined reference to
>> `qmp_rtc_reset_reinjection'
>> /usr/bin/ld: qapi/qapi-commands-misc-target.c:46: undefined reference to
>> `qmp_rtc_reset_reinjection'
>> collect2: error: ld returned 1 exit status
>> make[1]: *** [Makefile:206: qemu-system-x86_64] Error 1
>> make: *** [Makefile:483: x86_64-softmmu/all] Error 2
>>
>> This patch tries to fix this, but this is incorrect because QAPI
>> scripts only provide TARGET definitions, so with MC146818RTC=y we
>> get:
>>
>> hw/rtc/mc146818rtc.c:113:6: error: no previous prototype for
>> ‘qmp_rtc_reset_reinjection’ [-Werror=missing-prototypes]
>> 113 | void qmp_rtc_reset_reinjection(Error **errp)
>> | ^~~~~~~~~~~~~~~~~~~~~~~~~
>> cc1: all warnings being treated as errors
>> make[1]: *** [rules.mak:69: hw/rtc/mc146818rtc.o] Error 1
>>
>> Any idea? :)
>>
>> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
>> ---
>> qapi/misc-target.json | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/qapi/misc-target.json b/qapi/misc-target.json
>> index a00fd821eb..8e49c113d1 100644
>> --- a/qapi/misc-target.json
>> +++ b/qapi/misc-target.json
>> @@ -41,7 +41,7 @@
>> #
>> ##
>> { 'command': 'rtc-reset-reinjection',
>> - 'if': 'defined(TARGET_I386)' }
>> + 'if': 'defined(TARGET_I386) && defined(CONFIG_MC146818RTC)' }
>>
>>
>> ##
>
> The generated qapi-commands-misc-target.h duly has
>
> #if defined(TARGET_I386) && defined(CONFIG_MC146818RTC)
> void qmp_rtc_reset_reinjection(Error **errp);
> void qmp_marshal_rtc_reset_reinjection(QDict *args, QObject **ret, Error
> **errp);
> #endif /* defined(TARGET_I386) && defined(CONFIG_MC146818RTC) */
>
> mc146818rtc.c includes it. But since it doesn't include
> config-devices.h, CONFIG_MC146818RTC remains undefined, and the
> prototype gets suppressed.
>
> Crude fix: make mc146818rtc.c #include "config-devices.h".
Can we modify the code generator to leave out the #if from the header,
and only include it in the .c file? An extra prototype is harmless.
Paolo
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Paolo Bonzini, 2020/01/07
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Markus Armbruster, 2020/01/13
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n,
Paolo Bonzini <=
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Markus Armbruster, 2020/01/21
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Paolo Bonzini, 2020/01/21
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Markus Armbruster, 2020/01/21
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Philippe Mathieu-Daudé, 2020/01/21
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Paolo Bonzini, 2020/01/21
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Markus Armbruster, 2020/01/22
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Paolo Bonzini, 2020/01/22
- Re: [RFC PATCH] qapi: Incorrect attempt to fix building with MC146818RTC=n, Markus Armbruster, 2020/01/23