Leif,

FYI, the char sign issue clang hit recently was due to mixing edk2 types with 
standard C type. The edk2 type system does not assume that char is signed or 
unsigned. 

MdePkg/Include/X64/ProcessorBind.h
  ///
  /// 1-byte unsigned value
  ///
  typedef unsigned char       UINT8;
  ///
  /// 1-byte Character
  ///
  typedef char                CHAR8;
  ///
  /// 1-byte signed value
  ///
  typedef signed char         INT8;


Thanks,

Andrew Fish

> On Mar 17, 2016, at 6:22 AM, Leif Lindholm <[email protected]> wrote:
> 
> By default, the ARM architectures have unsigned chars, whereas the other
> architectures supported by EDK2 by default have signed chars.
> However, EDK2 uses -funsigned-chars on those architectures to change the
> default behaviour.
> 
> Unfortunately, the ARM architectures explicitly break their default
> behaviour by specifying -fsigned-chars (I presume in a pre-emptive
> attempt at avoiding incompatibility).
> 
> Since this situation is already confusing enough, switch the ARM
> architectures to also specify -funsigned-chars explicitly rather than
> just dropping the current parameter.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Leif Lindholm <[email protected]>
> ---
> BaseTools/Conf/tools_def.template | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/BaseTools/Conf/tools_def.template 
> b/BaseTools/Conf/tools_def.template
> index b1577af..eedf80f 100644
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -4322,8 +4322,8 @@ DEFINE GCC_ALL_CC_FLAGS            = -g -Os 
> -fshort-wchar -fno-strict-aliasing -
> DEFINE GCC_IA32_CC_FLAGS           = DEF(GCC_ALL_CC_FLAGS) -m32 
> -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 
> -mno-stack-arg-probe
> DEFINE GCC_X64_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone 
> -Wno-address -mno-stack-arg-probe
> DEFINE GCC_IPF_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) 
> -minline-int-divide-min-latency
> -DEFINE GCC_ARM_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian 
> -mabi=aapcs -fno-short-enums -save-temps -fsigned-char -ffunction-sections 
> -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft
> -DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian 
> -fno-short-enums -save-temps -fverbose-asm -fsigned-char  -ffunction-sections 
> -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address 
> -fno-asynchronous-unwind-tables
> +DEFINE GCC_ARM_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian 
> -mabi=aapcs -fno-short-enums -save-temps -funsigned-char -ffunction-sections 
> -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft
> +DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian 
> -fno-short-enums -save-temps -fverbose-asm -funsigned-char  
> -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin 
> -Wno-address -fno-asynchronous-unwind-tables
> DEFINE GCC_AARCH64_CC_XIPFLAGS     = -mstrict-align
> DEFINE GCC_DLINK_FLAGS_COMMON      = -nostdlib --pie
> DEFINE GCC_DLINK2_FLAGS_COMMON     = 
> --script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
> -- 
> 2.1.4
> 
> _______________________________________________
> 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