From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web12.4816.1589162696077935164 for ; Sun, 10 May 2020 19:04:56 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: shenglei.zhang@intel.com) IronPort-SDR: k4h/sVdadj8Sr2vul5magOD6+YEMko2F5fmRZK3YFSUjfXfmC1owDL/z3TQoZgjXKGTiI+KH3H 9IQwo4x/J+mA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 May 2020 19:04:55 -0700 IronPort-SDR: e3T6jfj/rrr0D8uEh7Poy5mNNh6pcclVQ2bGc2hGYfha8fDtfoPiGuEQ/gfTLctmts6YwcqBHO T/KJLWijBleQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,378,1583222400"; d="scan'208";a="251023560" Received: from shenglei-dev.ccr.corp.intel.com ([10.239.158.52]) by fmsmga007.fm.intel.com with ESMTP; 10 May 2020 19:04:51 -0700 From: "Zhang, Shenglei" To: devel@edk2.groups.io Cc: Jian J Wang , Hao A Wu Subject: [PATCH v2] MdeModulePkg/RegularExpressionDxe: Optimize the code infrastructure Date: Mon, 11 May 2020 10:04:48 +0800 Message-Id: <20200511020448.15952-1-shenglei.zhang@intel.com> X-Mailer: git-send-email 2.18.0.windows.1 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2712 OnigurumaIntrinsics.c is now not used improperly. So the implements of function 'memcpy' and 'memset' are not linked for all tool chains, which causes build failure with CLANG9 and XCODE. I remove OnigurumaIntrinsics.c and move the necessary function implements to OnigurumaUefiPort.c/h. Cc: Jian J Wang Cc: Hao A Wu Signed-off-by: Shenglei Zhang --- .../OnigurumaIntrinsics.c | 48 ------------------- .../RegularExpressionDxe/OnigurumaUefiPort.c | 10 ++++ .../RegularExpressionDxe/OnigurumaUefiPort.h | 2 + .../RegularExpressionDxe.inf | 1 - 4 files changed, 12 insertions(+), 49 deletions(-) delete mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaIntrinsics.c diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaIntrinsics.c b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaIntrinsics.c deleted file mode 100644 index 536c7e0f1b26..000000000000 --- a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaIntrinsics.c +++ /dev/null @@ -1,48 +0,0 @@ -/** @file - - Provide intrinsics within Oniguruma - - (C) Copyright 2015 Hewlett Packard Enterprise Development LP
- Copyright (c) 2020, Intel Corporation. All rights reserved.
- - SPDX-License-Identifier: BSD-2-Clause-Patent -**/ - -#include - -// -// From CryptoPkg/IntrinsicLib -// - -/* Copies bytes between buffers */ -#pragma function(memcpy) -void * memcpy (void *dest, const void *src, unsigned int count) -{ - return CopyMem (dest, src, (UINTN)count); -} - -/* Sets buffers to a specified character */ -#pragma function(memset) -void * memset (void *dest, char ch, unsigned int count) -{ - // - // NOTE: Here we use one base implementation for memset, instead of the direct - // optimized SetMem() wrapper. Because the IntrinsicLib has to be built - // without whole program optimization option, and there will be some - // potential register usage errors when calling other optimized codes. - // - - // - // Declare the local variables that actually move the data elements as - // volatile to prevent the optimizer from replacing this function with - // the intrinsic memset() - // - volatile UINT8 *Pointer; - - Pointer = (UINT8 *)dest; - while (count-- != 0) { - *(Pointer++) = ch; - } - - return dest; -} diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c index b1604b378af3..743f16612cc6 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c @@ -86,3 +86,13 @@ void * realloc (void *ptr, size_t size) return NULL; } +void * memcpy (void *dest, const void *src, unsigned int count) +{ + return CopyMem (dest, src, (UINTN)count); +} + +void * memset (void *dest, char ch, unsigned int count) +{ + return SetMem(dest, ch, count); +} + diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.h b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.h index 1a0b2daf473d..de98934c83dc 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.h @@ -96,6 +96,8 @@ int EFIAPI sprintf_s (char *str, size_t sizeOfBuffer, char const *fmt, ...); int strlen(const char* str); void* malloc(size_t size); void* realloc(void *ptr, size_t size); +void * memcpy (void *dest, const void *src, unsigned int count); +void * memset (void *dest, char ch, unsigned int count); #define exit(n) ASSERT(FALSE); diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf index da63aa6eb418..84489c294279 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf +++ b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf @@ -20,7 +20,6 @@ [Sources] RegularExpressionDxe.h OnigurumaUefiPort.h OnigurumaUefiPort.c - OnigurumaIntrinsics.c | MSFT # Wrapper header files start # stdio.h -- 2.18.0.windows.1