1) Add support for %p to print pointers
authormdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524>
Sat, 3 Jun 2006 21:51:12 +0000 (21:51 +0000)
committermdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524>
Sat, 3 Jun 2006 21:51:12 +0000 (21:51 +0000)
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

index f2c7ee5..84dceb6 100644 (file)
@@ -235,6 +235,10 @@ BasePrintLibVSPrint (
       // Handle each argument type\r
       //\r
       switch (FormatCharacter) {\r
+      case 'p':\r
+        if (sizeof (VOID *) > 4) {\r
+          Flags |= LONG_TYPE;\r
+        }\r
       case 'X':\r
         Flags |= PREFIX_ZERO;\r
         //\r
@@ -247,7 +251,7 @@ BasePrintLibVSPrint (
         //\r
       case 'd':\r
         if ((Flags & LONG_TYPE) == 0) {\r
-          Value = (VA_ARG (Marker, INTN));\r
+          Value = (VA_ARG (Marker, int));\r
         } else {\r
           Value = VA_ARG (Marker, INT64);\r
         }\r
@@ -275,7 +279,7 @@ BasePrintLibVSPrint (
           Radix = 16;\r
           Comma = FALSE;\r
           if ((Flags & LONG_TYPE) == 0 && Value < 0) {\r
-            Value = (UINTN)Value;\r
+            Value = (unsigned int)Value;\r
           }\r
         }\r
         //\r