On 03/17/16 13:34, Leif Lindholm wrote:
> On Thu, Mar 17, 2016 at 12:16:31PM +0000, Leif Lindholm wrote:
>> So, as further fallout from my -Weverything experiments, I've come
>> across this...
>>
>> Ia32 and X64 ProcessorBind.h (BaseTools and MdePkg) both define CHAR8 as 
>> 'char'.
>> ARM and AArch64 both do the same.
>>
>> However, default 'char' signedness is unsigned in the ARM
>> architectures, and signed in the others.
>>
>> Meanwhile, the UEFI specification describes CHAR8 as
>> ---
>> 1-byte character. Unless otherwise specified, all 1-byte or ASCII characters 
>> and
>> strings are stored in 8-bit ASCII encoding format, using the
>> ISO-Latin-1 character
>> set.
>> ---
>>
>> Now, ISO-Latin-1 holds values all the way up to 255, which clearly
>> does not fit into a signed 8-bit char.
>>
>> Would I be correct in my interpretation that Ia32/X64 should be
>> defining CHAR8 as 'unsigned char', or am I losing my mind?
> 
> I'll reply to myself.
> 
> BaseTools/Conf/tools_def.template sets -funsigned-chars for X64/Ia32 -

Where? I can only see that for XCODE5.

Thanks
Laszlo

> so it is already correct for these.
> 
> Hilariously (?) ARM/AArch64 sets -fsigned-chars, making what would
> otherwise be correct default behaviour broken.
> 
> Patch for the ARM architectures coming up.
> 
> /
>     Leif
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
> 

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to