BaseTools' BaseTypes.h defined the ENCODE_ERROR macro as
#define ENCODE_ERROR(a) ((RETURN_STATUS)(MAX_BIT | (a)))
whereas MdePkg defines it as
#define ENCODE_ERROR(StatusCode) ((RETURN_STATUS)(MAX_BIT | (StatusCode)))
When building with GCC 6.3 (at least) the former triggers
"error: overflow in implicit constant conversion [-Werror=overflow]"
Resolve this by aligning it with the latter one.
This also requires aligning the BaseTools typedef of RETURN_STATUS with
the MdePkg one: INTN -> UINTN.
While at it, update adjacent ENCODE_WARNING and RETURN_ERROR as well.
Add an explicit initialization of *Alignment to 0 in GenFfs.c
GetAlignmentFromFile to get rid of a warning occuring with GCC after
this change (-Werror=maybe-uninitialized).
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
Reviewed-by: Liming Gao <liming.gao@intel.com>
\r
InFileHandle = NULL;\r
PeFileBuffer = NULL;\r
+ *Alignment = 0;\r
\r
memset (&ImageContext, 0, sizeof (ImageContext));\r
\r
// EFI Error Codes common to all execution phases\r
//\r
\r
-typedef INTN RETURN_STATUS;\r
+typedef UINTN RETURN_STATUS;\r
\r
///\r
/// Set the upper bit to indicate EFI Error.\r
///\r
-#define ENCODE_ERROR(a) (MAX_BIT | (a))\r
+#define ENCODE_ERROR(a) ((RETURN_STATUS)(MAX_BIT | (a)))\r
\r
-#define ENCODE_WARNING(a) (a)\r
-#define RETURN_ERROR(a) ((a) < 0)\r
+#define ENCODE_WARNING(a) ((RETURN_STATUS)(a))\r
+#define RETURN_ERROR(a) (((INTN)(RETURN_STATUS)(a)) < 0)\r
\r
#define RETURN_SUCCESS 0\r
#define RETURN_LOAD_ERROR ENCODE_ERROR (1)\r