I see, ok thanks for the info.*puts on pointer hat*

From: [email protected]
Date: Mon, 29 Sep 2014 07:34:00 -0700
To: [email protected]
Subject: Re: [edk2] Compiler inserting memcpy. Unresolved external symbol       
memcpy


On Sep 29, 2014, at 7:08 AM, J. E. <[email protected]> wrote:All good now, 
thanks for clarifying.I have converted the code to pointers and it is now 
compiling again.
Seems like an odd limitation though, could we actually just provide memcpy to 
the compiler?(I'm no expert, just wandering)

Compiler intrinsics are not standardized and can be different for different 
compilers. On IA32 64-bit math also causes intrinsics to be emitted. So a long 
time ago we decided to not provide the per compiler intrinsics. 
Thanks,
Andrew Fish
From: [email protected]
Date: Mon, 29 Sep 2014 06:34:47 -0700
To: [email protected]
Subject: Re: [edk2] Compiler inserting memcpy. Unresolved external      symbol  
memcpy


On Sep 29, 2014, at 5:39 AM, Scott Duplichan <[email protected]> wrote:J. E. 
[mailto:[email protected]]  wrote:
Sent: Monday, September 29, 2014 03:24 AM
To: [email protected]
Subject: [edk2] Compiler inserting memcpy. Unresolved external symbol memcpy 
I'm getting this error when compiling my project in X64. (But no error in NT32 
for some reason, probably a 32bit vs 64bit thing). error LNK2001: unresolved 
external symbol memcpy I don't use memcpy at all, I only use CopyMem. So it 
must be the compiler optimizing code and inserting memcpy here and there. I 
added compile option /FAcsI found 20+ instances of memcpy. Is there a trick 
around this so I don't have to modify lots of code? This is a real problem with 
no easy solution that I know of. My rant: Why doesn't EDK2 providejust memcpy, 
etc?For your code, passing &rcDest instead of rcDest should eliminate the 
memcpy calls you show. Thanks,Scott If there is no way around it, should I not 
be parsing STRUCTS through functions and use pointers instead?
Yes. 
UEFI 2.4 2.3.4.2 Detailed Calling ConventionsThe caller passes the first four 
integer arguments in registers. The integer values are passed from left to 
right in Rcx, Rdx, R8, and R9 registers. The caller passes arguments five and 
above onto the stack. All arguments must be right-justified in the register in 
which they are passed. This ensures the callee can process only the bits in the 
register that are required.The caller passes arrays and strings via a pointer 
to memory allocated by the caller. The caller passes structures and unions of 
size 8, 16, 32, or 64 bits as if they were integers of the same size. The 
caller is not allowed to pass structures and unions of other than these sizes 
and must pass these unions and structures via a pointer.…
Thus the memcpy is the compiler enforcing the calling conventions. 
RECT A, B;
A = B;
Will also cause memcpy to be emitted. 
Thanks,
Andrew Fish 
------------------------------------------------------------------------------ 
Slashdot TV. Videos for Nerds. Stuff that Matters. 
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________ edk2-devel mailing list 
[email protected] 
https://lists.sourceforge.net/lists/listinfo/edk2-devel------------------------------------------------------------------------------
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[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