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

Re: [Xen-devel] ARM32 - build-issues with xen/arm: vpl011: Add a new vuart node in the xenstore



On 12/10/17 19:54, Bhupinder Thakur wrote:
> On 5 October 2017 at 15:07, Wei Liu <wei.liu2@xxxxxxxxxx> wrote:
>> On Wed, Oct 04, 2017 at 09:58:32PM -0400, Konrad Rzeszutek Wilk wrote:
>>> I get this when compiling under ARM32 (Ubuntu 15.04,
>>> gcc (Ubuntu/Linaro 4.9.2-10ubuntu13) 4.9.2):
>>>
>>> libxl_console.c: In function ‘libxl__device_vuart_add’:
>>> libxl_console.c:379:5: error: format ‘%lu’ expects argument of type ‘long 
>>> unsigned int’, but argument 3 has type ‘xen_pfn_t’ [-Werror=format=]
>>>      flexarray_append(ro_front, GCSPRINTF("%lu", state->vuart_gfn));
>>>      ^
>>> ;
>> My Wheezy 32bit chroot didn't catch this, sigh.
>>
>> Does the following patch work?
>>
>> From ae531197382bf0bc003606a9712075bdd22cfc24 Mon Sep 17 00:00:00 2001
>> From: Wei Liu <wei.liu2@xxxxxxxxxx>
>> Date: Thu, 5 Oct 2017 10:35:28 +0100
>> Subject: [PATCH] libxl: use correct type modifier for vuart_gfn
>> MIME-Version: 1.0
>> Content-Type: text/plain; charset=UTF-8
>> Content-Transfer-Encoding: 8bit
>>
>> Fixes compilation error like:
>>
>> libxl_console.c: In function ‘libxl__device_vuart_add’:
>> libxl_console.c:379:5: error: format ‘%lu’ expects argument of type ‘long 
>> unsigned int’, but argument 3 has type ‘xen_pfn_t’ [-Werror=format=]
>>       flexarray_append(ro_front, GCSPRINTF("%lu", state->vuart_gfn));
>>
>> Reported-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
>> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
>> ---
>>  tools/libxl/libxl_console.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tools/libxl/libxl_console.c b/tools/libxl/libxl_console.c
>> index 13ecf128e2..c05dc28b99 100644
>> --- a/tools/libxl/libxl_console.c
>> +++ b/tools/libxl/libxl_console.c
>> @@ -376,7 +376,7 @@ int libxl__device_vuart_add(libxl__gc *gc, uint32_t 
>> domid,
>>      flexarray_append(ro_front, "port");
>>      flexarray_append(ro_front, GCSPRINTF("%"PRIu32, state->vuart_port));
>>      flexarray_append(ro_front, "ring-ref");
>> -    flexarray_append(ro_front, GCSPRINTF("%lu", state->vuart_gfn));
>> +    flexarray_append(ro_front, GCSPRINTF("%"PRI_xen_pfn, state->vuart_gfn));
> Unfortunately, this is causing an issue as PRI_xen_pfn formats the
> value as a hexadecimal value but xenconsole later reads it as a
> decimal value and tries to map it, which fails and therefore vuart
> console initialization fails.
>
> Earlier, I verified only 32-bit compilation but did not test the
> change. It was a miss from my side. I have tested now with the format
> string changed to PRIu64 and the vuart console is working fine.

That however, would break x86.

andrewcoop@andrewcoop:/local/xen.git/xen$ git grep 'define PRI_xen_pfn' -- :/
include/public/arch-arm.h:276:#define PRI_xen_pfn PRIx64
include/public/arch-x86/xen.h:77:#define PRI_xen_pfn "lx"

The best way to fix this is to introduce a new define for both
architectures which is PRIu64 and "lu" as appropriate.

Suggestions:

PRI_xen_pfn_dec
PRIu_xen_pfn

Neither are great, but the latter does follow the PRI nomenclature.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.