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

