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

Re: [PATCH v2] Xen: fix EFI stub wchar_t size warning of arm32 building


  • To: Wei Chen <Wei.Chen@xxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Tue, 5 Jul 2022 09:32:52 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OluX7aEOrjo8Q8v0QVnoNB3RdsHYRnvbmTSYSEY2ex8=; b=W8o2c0FW7UIR9yK3PB5ttqw4TlABy4GTjgrMk+i9NUnktGO7fjKYQdx9nlnYGUcGfJd4mPfZno7u3k2/2s3niG4wYgtgLW5TFQ6Nhjcqm5kTJ/oveFIPKFCcbMDWJASyaMymGnPJqjo1JamZ/mtpa3uhi18CvX+ZmXmlp7Zb/DaE4eKJoNmlzqVT3dP5PPbsR1qaWOiGiNFip4kDE2z8yiwG9N0HVHItRyBW0c2FGbgks96qwgFxQgd64ZU0kneWxm3snBfE2LVm8rSKCb3QNL/BhIt+ZyqzlAP40IPjoKCidmSOPRFEjMLmk6nJYwK8C5tyzI47am67bgmjguympw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nXfwPpP6AH9YNWmXt86IDfdaw0ykG9fJOyvaVxMIjuFRwRQq2BnCNOzsRWEEF/4sSNQC51aE7GN67iS6HnYqZkIbzH4O0gkSPL/0nIiSOHtbS5DL+WasH7DtofC5HuQzq6dgopMhdTsTOFTUsV1ciDxY6xFjJzSceKr5xl0i7AtdnLjWTbKFAgVAOZOy2bdShbD9IE8XXZn+mjmmCrBSs+xc/C03mUGQERX1Q6OLqEFa3ZZvYpKMUIZNM63/WF4vNDXCmVePPo2+RnYLcJkSHWw98w8XdPio7Toj20x/WKtC25bXPmPWUzXlJqwoUtacgLjAMEFOrEy6Qs9eUQ8EyQ==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 05 Jul 2022 07:32:58 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 05.07.2022 09:18, Wei Chen wrote:
> Hi Jan,
> 
>> -----Original Message-----
>> From: Jan Beulich <jbeulich@xxxxxxxx>
>> Sent: 2022年7月5日 14:35
>> To: Wei Chen <Wei.Chen@xxxxxxx>
>> Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>; Julien Grall
>> <julien@xxxxxxx>; Bertrand Marquis <Bertrand.Marquis@xxxxxxx>; Volodymyr
>> Babchuk <Volodymyr_Babchuk@xxxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx
>> Subject: Re: [PATCH v2] Xen: fix EFI stub wchar_t size warning of arm32
>> building
>>
>> On 05.07.2022 05:54, Wei Chen wrote:
>>> Xen uses "-fshort-wchar" in CFLAGS for EFI common code. Arm32
>>> is using stub.c of EFI common code for EFI stub functions. But
>>> "-fshort-wchar" CFLAG will cause a warning when build stub.c
>>> for Arm32:
>>> "arm-linux-gnueabihf-ld: warning: arch/arm/efi/built_in.o uses
>>> 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of
>>> wchar_t values across objects may fail"
>>>
>>> This is because the "-fshort-wchar" flag causes GCC to generate
>>> code that is not binary compatible with code generated without
>>> that flag. Why this warning hasn't been triggered in Arm64 is
>>> because Arm64 does not use wchar type directly in any code for
>>> parameters, variables and return values. And in EFI code, wchar
>>> has been replaced by CHAR16 (the UEFI "abstraction" of wchar_t).
>>> CHAR16 has been specified as unsigned short type in typedef, the
>>> "-fshort-wchar" flag will not affect CHAR16. So Arm64 object
>>> files are exactly the same with "-fshort-wchar" and without
>>> "-fshort-wchar".
>>>
>>> We are also not using wchar in Arm32 codes, but Arm32 will embed
>>> ABI information in ".ARM.attributes" section. This section stores
>>> some object file attributes, like ABI version, CPU arch and etc.
>>> And wchar size is described in this section by "Tag_ABI_PCS_wchar_t"
>>> too. Tag_ABI_PCS_wchar_t is 2 for object files with "-fshort-wchar",
>>> but for object files without "-fshort-wchar" is 4. Arm32 GCC
>>> ld will check this tag, and throw above warning when it finds
>>> the object files have different Tag_ABI_PCS_wchar_t values.
>>>
>>> As gnu-efi-3.0 use the GCC option "-fshort-wchar" to force wchar
>>> to use short integers (2 bytes) instead of integers (4 bytes).
>>> So keep "-fshort-wchar" for Xen EFI code is reasonable. In this
>>> patch, we add "-fno-short-wchar" to override "-fshort-wchar" for Arm
>>> architecutres without EFI enabled to remove above warning.
>>>
>>> Reported-and-Suggested-by: Jan Beulich <jbeulich@xxxxxxxx>
>>> Signed-off-by: Wei Chen <wei.chen@xxxxxxx>
>>
>> Tested-by: Jan Beulich <jbeulich@xxxxxxxx>
>>
> 
> Thanks for testing!
> 
>> As to the description: Why the reference to gnu-efi? I don't think
>> it matters how they build their code? All that's important is what
>> we do, I suppose.
>>
> 
> How about:
> "Xen need to keep "-fshort-wchar" in EFI code to force wchar to use
> short integers (2 bytes) instead of integers (4 bytes), but this is
> unnecessary for code out of EFI. So in this patch, we add
> "-fno-short-wchar" to override "-fshort-wchar" for Arm architectures
> without EFI enabled to remove above warning."

Reads better to me, thanks.

Jan



 


Rackspace

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