mirror of https://github.com/acidanthera/audk.git
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.wang@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Signed-off-by: Xiaoyu Lu <xiaoyux.lu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
b8993a34ae
commit
98d8f194e5
|
@ -10,8 +10,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
|||
#include <Base.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
|
||||
#if defined(__clang__) && !defined(__APPLE__)
|
||||
|
||||
/* Copies bytes between buffers */
|
||||
static __attribute__((__used__))
|
||||
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);
|
||||
|
||||
#else
|
||||
/* Copies bytes between buffers */
|
||||
void * memcpy (void *dest, const void *src, unsigned int count)
|
||||
{
|
||||
return CopyMem (dest, src, (UINTN)count);
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue