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