Pete:
  I suggest to align the disabled warning list to IA32/X64 arch. I find someone 
are not listed in IA32/X64 arch. Could you give the more detail on why disable 
them by default?

Thanks
Liming
> -----Original Message-----
> From: Pete Batard [mailto:p...@akeo.ie]
> Sent: Monday, December 4, 2017 9:12 PM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming <liming....@intel.com>
> Subject: [PATCH 1/6] MdePkg: Disable some Level 4 warnings for VS2017/ARM
> 
> Warnings 4018, 4100, 4101, 4127, 4214, 4244, 4456, 4701 and 4703 are
> disabled as they were found to occur more than 5 times during QEMU
> firmware compilation.
> 
> Also create a dummy macro for PRESERVE8, as this is not supported by
> the Microsoft ARM assembler.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Pete Batard <p...@akeo.ie>
> ---
>  MdePkg/Include/Arm/ProcessorBind.h | 96 +++++++++++++++-----
>  1 file changed, 75 insertions(+), 21 deletions(-)
> 
> diff --git a/MdePkg/Include/Arm/ProcessorBind.h 
> b/MdePkg/Include/Arm/ProcessorBind.h
> index dde1fd1152ba..00de80bafe0a 100644
> --- a/MdePkg/Include/Arm/ProcessorBind.h
> +++ b/MdePkg/Include/Arm/ProcessorBind.h
> @@ -1,15 +1,15 @@
>  /** @file
>    Processor or Compiler specific defines and types for ARM.
> 
> -  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
>    Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD 
> License
> -  which accompanies this distribution.  The full text of the license may be 
> found at
> -  http://opensource.org/licenses/bsd-license.php
> +  This program and the accompanying materials
> +  are licensed and made available under the terms and conditions of the BSD 
> License
> +  which accompanies this distribution.  The full text of the license may be 
> found at
> +  http://opensource.org/licenses/bsd-license.php
> 
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
> IMPLIED.
> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> +  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
> IMPLIED.
> 
>  **/
> 
> @@ -28,14 +28,63 @@
>  #pragma pack()
>  #endif
> 
> +#if defined(_MSC_EXTENSIONS)
> +
>  //
> -// RVCT does not support the __builtin_unreachable() macro
> +// Disable 'signed/unsigned mismatch' warnings.
>  //
> -#ifdef __ARMCC_VERSION
> +#pragma warning ( disable : 4018 )
> +
> +//
> +// Disable 'unreferenced formal parameter' warnings.
> +//
> +#pragma warning ( disable : 4100 )
> +
> +//
> +// Disable 'unreferenced local variable' warnings.
> +//
> +#pragma warning ( disable : 4101 )
> +
> +//
> +// Suppress warnings for ASSERT(FALSE) or while(TRUE).
> +//
> +#pragma warning ( disable : 4127 )
> +
> +//
> +// Disable bitfield type check warnings.
> +//
> +#pragma warning ( disable : 4214 )
> +
> +//
> +// Disable 'conversion from X to Y, possible loss of data' warnings
> +//
> +#pragma warning ( disable : 4244 )
> +
> +//
> +// Disable 'declaration of X hides previous local declaration' warnings
> +//
> +#pragma warning ( disable : 4456 )
> +
> +//
> +// Disable 'potentially uninitialized local variable X used' warnings
> +//
> +#pragma warning ( disable : 4701 )
> +
> +//
> +// Disable 'potentially uninitialized local pointer variable X used' warnings
> +//
> +#pragma warning ( disable : 4703 )
> +
> +#endif
> +
> +//
> +// RVCT and MSFT don't support the __builtin_unreachable() macro
> +//
> +#if defined(__ARMCC_VERSION) || defined(_MSC_EXTENSIONS)
>  #define UNREACHABLE()
>  #endif
> 
> -#if _MSC_EXTENSIONS
> +#if defined(_MSC_EXTENSIONS)
>    //
>    // use Microsoft* C compiler dependent integer width types
>    //
> @@ -52,7 +101,7 @@
>    typedef signed char         INT8;
>  #else
>    //
> -  // Assume standard ARM alignment.
> +  // Assume standard ARM alignment.
>    // Need to check portability of long long
>    //
>    typedef unsigned long long  UINT64;
> @@ -121,7 +170,7 @@ typedef INT32   INTN;
>  // use the correct C calling convention. All protocol member functions and
>  // EFI intrinsics are required to modify their member functions with EFIAPI.
>  //
> -#define EFIAPI
> +#define EFIAPI
> 
>  // When compiling with Clang, we still use GNU as for the assembler, so we 
> still
>  // need to define the GCC_ASM* macros.
> @@ -142,34 +191,39 @@ typedef INT32   INTN;
> 
>      #define GCC_ASM_EXPORT(func__)  \
>               .global  _CONCATENATE (__USER_LABEL_PREFIX__, func__)    ;\
> -             .type ASM_PFX(func__), %function
> +             .type ASM_PFX(func__), %function
> 
>      #define GCC_ASM_IMPORT(func__)  \
>               .extern  _CONCATENATE (__USER_LABEL_PREFIX__, func__)
> -
> +
>    #else
>      //
> -    // .type not supported by Apple Xcode tools
> +    // .type not supported by Apple Xcode tools
>      //
> -    #define INTERWORK_FUNC(func__)
> +    #define INTERWORK_FUNC(func__)
> 
>      #define GCC_ASM_EXPORT(func__)  \
>               .globl  _CONCATENATE (__USER_LABEL_PREFIX__, func__)    \
> -
> -    #define GCC_ASM_IMPORT(name)
> +
> +    #define GCC_ASM_IMPORT(name)
> 
>    #endif
> +#elif defined(_MSC_EXTENSIONS)
> +  //
> +  // PRESERVE8 is not supported by the MSFT assembler.
> +  //
> +  #define PRESERVE8
>  #endif
> 
>  /**
>    Return the pointer to the first instruction of a function given a function 
> pointer.
> -  On ARM CPU architectures, these two pointer values are the same,
> +  On ARM CPU architectures, these two pointer values are the same,
>    so the implementation of this macro is very simple.
> -
> +
>    @param  FunctionPointer   A pointer to a function.
> 
>    @return The pointer to the first instruction of a function given a 
> function pointer.
> -
> +
>  **/
>  #define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID 
> *)(UINTN)(FunctionPointer)
> 
> --
> 2.9.3.windows.2

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

Reply via email to