Yes. We can modify it. But,  we had better root cause this issue first. Andrew 
has the same comment.

Thanks
Liming
From: Sergey Isakov [mailto:[email protected]]
Sent: Saturday, September 27, 2014 12:23 AM
To: [email protected]
Subject: Re: [edk2] LzmaCustomDecompressLib is not working

Anyway the code is already modified with statements like
#ifndef EFIAPI

On 12 сент. 2014 г., at 9:18, Gao, Liming 
<[email protected]<mailto:[email protected]>> wrote:


Sergey:
  LzmaDec.c is LZMA code. Have you other solution without modify LZMA code?

Thanks
Liming
From: Sergey Isakov [mailto:[email protected]]
Sent: Thursday, September 11, 2014 8:33 PM
To: [email protected]<mailto:[email protected]>
Subject: Re: [edk2] LzmaCustomDecompressLib is not working

CodeModule: IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib

I resolved the issue. The problem is in structure coping that must be replaced 
by CopyMem
---
diff -Nurpb -x .svn C/LzmaDec.c C-new/LzmaDec.c
--- C/LzmaDec.c         2014-04-04 14:19:18.000000000 +0400
+++ C-new/LzmaDec.c          2014-09-11 16:16:16.000000000 +0400

@@ -848,7 +850,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, Si
             return SZ_ERROR_DATA;
           }
         }
-        p->buf = p->tempBuf;
+        p->buf = &(p->tempBuf[0]);
         if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0)
           return SZ_ERROR_DATA;
         lookAhead -= (rem - (unsigned)(p->buf - p->tempBuf));
@@ -966,7 +968,8 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p,
   CLzmaProps propNew;
   RINOK(LzmaProps_Decode(&propNew, props, propsSize));
   RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc));
-  p->prop = propNew;
+  CopyMem(&(p->prop), &propNew, sizeof(CLzmaProps));
   return SZ_OK;
 }

@@ -988,7 +991,8 @@ SRes LzmaDec_Allocate(CLzmaDec *p, const
     }
   }
   p->dicBufSize = dicBufSize;
-  p->prop = propNew;
+  CopyMem(&(p->prop), &propNew, sizeof(CLzmaProps));
   return SZ_OK;
 }

---
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Sergey Isakov <[email protected]<mailto:[email protected]>>


On 10.09.2014, at 18:01, Sergey Isakov wrote:



Hi all,
I encounter a problem that LzmaCustomDecompressLib is not working if compiled 
by Clang into IA32. But it works fine with GCC49.
The sources are very complex and I see no significant constructions that may be 
differ from gcc to clang.
Can anybody point me what to look?
The version is 4.65 while original sources already at 9.2 version. Can we 
switch to recent version?

Symptoms:
-------
  PrintString ("BFV decompress: DestinationSize = %x, ScratchSize = %x\n", 
(UINTN) DestinationSize, (UINTN) ScratchSize);
  Status =  LzmaUefiDecompress (
    (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),
    EFILDRImage->Length,
    (VOID *)(UINTN)EFI_DECOMPRESSED_BUFFER_ADDRESS,
    (VOID *)(UINTN)((EFI_DECOMPRESSED_BUFFER_ADDRESS + DestinationSize + 
0x1000) & 0xfffff000)
    );


-------
It prints "BFV decompress: DestinationSize = 2A0000, ScratchSize = 10000" and 
then crash QEMU.
Same, compiled by gcc is working.

Sergey
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk_______________________________________________
edk2-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk_______________________________________________
edk2-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to