>> DEBUG ((EFI_D_INFO, "BlockIo (MMIO) ReadBlocks: lba=0x%lx, size=0x%x\n",
Lba, BufferSize));

Shouldn't that be %llx and not %lx




On Fri, Sep 6, 2013 at 3:45 AM, Alexei Fedorov <[email protected]>wrote:

>  According to \edk2\MdePkg\Include\X64\ProcessorBind.h****
>
> ** **
>
> for X64 ‘UINTN’ type has a length of 8 bytes:****
>
> ** **
>
> typedef UINT64  UINTN;****
>
> ** **
>
> and ‘int’ is 32-bit value:****
>
> ** **
>
> typedef unsigned int        UINT32;****
>
> ** **
>
> , so debug macros like in CpuConvertPagesToUncachedVirtualAddress()
> function (\edk2\OvmfPkg\BlockMmioToBlockIoDxe\BlockIo.c):****
>
> ** **
>
> EFI_STATUS****
>
> EFIAPI****
>
> BlockIoReadBlocks (****
>
>   IN EFI_BLOCK_IO_PROTOCOL    *This,****
>
>   IN UINT32                   MediaId,****
>
>   IN EFI_LBA                  Lba,****
>
>   IN UINTN                    BufferSize,****
>
>   OUT VOID                    *Buffer****
>
>   )****
>
> {****
>
>   DEBUG ((EFI_D_INFO, "BlockIo (MMIO) ReadBlocks: lba=0x%lx, size=0x%x\n",
> Lba, BufferSize));****
>
> ...****
>
> ** **
>
> using ‘%x’ format for UINTN BufferSize will result in truncation to 32-bit
> value. ****
>
> In some cases ‘%x’ for UINTN can produce wrong output if this UINTN number
> is specified as not the last parameter.****
>
> ** **
>
> This happens because ‘int’ type is still 32-bit value & it’s used in
> BasePrintLibSPrintMarker() function
> (\edk2\MdePkg\Library\BasePrintLib\PrintLibInternal.c):****
>
> Line #543:****
>
>       case 'd':****
>
>         if ((Flags & LONG_TYPE) == 0) {****
>
>           //****
>
>           // 'd','x', and 'X' that are not preceded by 'l' or 'L' are
> assumed to be type "int".****
>
>           // This assumption is made so the format string definition is
> compatible with the ANSI C****
>
>           // Specification for formatted strings.  It is recommended that
> the Base Types be used ****
>
>           // everywhere, but in this one case, compliance with ANSI C is
> more important, and ****
>
>           // provides an implementation that is compatible with that
> largest possible set of CPU ****
>
>           // architectures.  This is why the type "int" is used in this
> one case.****
>
>           //****
>
>           if (BaseListMarker == NULL) {****
>
>             Value = VA_ARG (VaListMarker, int);****
>
>           } else {****
>
>             Value = BASE_ARG (BaseListMarker, int);****
>
>           }****
>
> ** **
>
> & line #588:****
>
>           if ((Flags & LONG_TYPE) == 0 && Value < 0) {****
>
>             //****
>
>             // 'd','x', and 'X' that are not preceded by 'l' or 'L' are
> assumed to be type "int".****
>
>             // This assumption is made so the format string definition is
> compatible with the ANSI C****
>
>             // Specification for formatted strings.  It is recommended
> that the Base Types be used ****
>
>             // everywhere, but in this one case, compliance with ANSI C is
> more important, and ****
>
>             // provides an implementation that is compatible with that
> largest possible set of CPU ****
>
>             // architectures.  This is why the type "unsigned int" is used
> in this one case.****
>
>             //****
>
>             Value = (unsigned int)Value;****
>
> ** **
>
> Any comments on that?****
>
> ** **
>
> Alexei.****
>
> ** **
>
> ** **
>
> -- IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
> ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No: 2557590
> ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No: 2548782
>
>
> ------------------------------------------------------------------------------
> Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
> Discover the easy way to master current and previous Microsoft technologies
> and advance your career. Get an incredible 1,500+ hours of step-by-step
> tutorial videos with LearnDevNow. Subscribe today and save!
> http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to