Xiaoyu: >-----Original Message----- >From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of >Xiaoyu Lu >Sent: Wednesday, June 05, 2019 1:25 PM >To: devel@edk2.groups.io >Cc: Lu, XiaoyuX <xiaoyux...@intel.com>; Bi, Dandan <dandan...@intel.com>; >Wang, Jian J <jian.j.w...@intel.com> >Subject: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 >IA32 build problem > >When use clang-3.8 to build the NetworkPkg, compiler optimization >may use memcpy for memory copy. For example: > > CryptoPkg/Library/OpensslLib/openssl/ssl/ssl_rsa.c:918: undefined > reference to `memcpy'` > >Compiler optimization is sophisticated, but we can work around it >use __attribute__((__used__)) to informs the compiler that symbol >should be retained in the object file, even if it may be >unreferenced. > >Cc: Jian J Wang <jian.j.w...@intel.com> >Cc: Dandan Bi <dandan...@intel.com> >Signed-off-by: Xiaoyu Lu <xiaoyux...@intel.com> >--- > CryptoPkg/Library/IntrinsicLib/CopyMem.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > >diff --git a/CryptoPkg/Library/IntrinsicLib/CopyMem.c >b/CryptoPkg/Library/IntrinsicLib/CopyMem.c >index e29b4918d200..7faf5a34d8c1 100644 >--- a/CryptoPkg/Library/IntrinsicLib/CopyMem.c >+++ b/CryptoPkg/Library/IntrinsicLib/CopyMem.c >@@ -10,8 +10,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include <Base.h> > #include <Library/BaseMemoryLib.h> > >+#if defined(__clang__) && !defined(__APPLE__)
So, this change is only for CLANG tool chain. >+ >+/* Copies bytes between buffers */ >+static __attribute__((__used__)) What purpose for static? >+void * __memcpy (void *dest, const void *src, unsigned int count) >+{ >+ return CopyMem (dest, src, (UINTN)count); >+} >+__attribute__((__alias__("__memcpy"))) >+void * memcpy (void *dest, const void *src, unsigned int count); __memcpy is IA32 Intrinsic API, memcpy is X64 Intrinsic API, right? Thanks Liming >+ >+#else > /* Copies bytes between buffers */ > void * memcpy (void *dest, const void *src, unsigned int count) > { > return CopyMem (dest, src, (UINTN)count); > } >+#endif >-- >2.7.4 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#41912): https://edk2.groups.io/g/devel/message/41912 Mute This Topic: https://groups.io/mt/31934411/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-