Leif:
  I agree your understanding. To follow UEFI spec, I think we should update 
CHAR8 as the unsigned type in its definition for all ARCH ProcessorBind.h in 
MdePkg. If so, we don't need to add compiler option in tools_def.template.

Thanks
Liming
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Leif 
Lindholm
Sent: Thursday, March 17, 2016 9:36 PM
To: Laszlo Ersek
Cc: edk2-devel (edk2-devel@lists.01.org)
Subject: Re: [edk2] signedness of CHAR8

On Thu, Mar 17, 2016 at 01:41:12PM +0100, Laszlo Ersek wrote:
> 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.

I stand corrected.

/
Leif
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to