From 1d580c14473896b5b593a7f60a21f532008265d0 Mon Sep 17 00:00:00 2001 From: mdkinney Date: Sat, 3 Jun 2006 21:51:12 +0000 Subject: [PATCH] 1) Add support for %p to print pointers 2) Fix %d,%x,%X to pull values off the vararg stack using (int) and (unsigned int) types to resolve compatibility issues with X64 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@408 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Library/BasePrintLib/PrintLib.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/MdePkg/Library/BasePrintLib/PrintLib.c b/MdePkg/Library/BasePrintLib/PrintLib.c index f2c7ee5807..84dceb6e85 100644 --- a/MdePkg/Library/BasePrintLib/PrintLib.c +++ b/MdePkg/Library/BasePrintLib/PrintLib.c @@ -235,6 +235,10 @@ BasePrintLibVSPrint ( // Handle each argument type // switch (FormatCharacter) { + case 'p': + if (sizeof (VOID *) > 4) { + Flags |= LONG_TYPE; + } case 'X': Flags |= PREFIX_ZERO; // @@ -247,7 +251,7 @@ BasePrintLibVSPrint ( // case 'd': if ((Flags & LONG_TYPE) == 0) { - Value = (VA_ARG (Marker, INTN)); + Value = (VA_ARG (Marker, int)); } else { Value = VA_ARG (Marker, INT64); } @@ -275,7 +279,7 @@ BasePrintLibVSPrint ( Radix = 16; Comma = FALSE; if ((Flags & LONG_TYPE) == 0 && Value < 0) { - Value = (UINTN)Value; + Value = (unsigned int)Value; } } // -- 2.39.2