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 <Base.h>
|
||||||
#include <Library/BaseMemoryLib.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 */
|
/* Copies bytes between buffers */
|
||||||
void * memcpy (void *dest, const void *src, unsigned int count)
|
void * memcpy (void *dest, const void *src, unsigned int count)
|
||||||
{
|
{
|
||||||
return CopyMem (dest, src, (UINTN)count);
|
return CopyMem (dest, src, (UINTN)count);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue