* [PATCH v2 1/4] CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source
2017-04-01 5:38 [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues Long Qin
@ 2017-04-01 5:38 ` Long Qin
2017-04-01 5:38 ` [PATCH v2 2/4] CryptoPkg: Fix possible unresolved external symbol issue Long Qin
` (4 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Long Qin @ 2017-04-01 5:38 UTC (permalink / raw)
To: edk2-devel; +Cc: ting.ye, hao.a.wu, feng.tian, eric.dong, lersek, Qin Long
From: Qin Long <qin.long@intel.com>
(Need further follow-ups as described in
https://bugzilla.tianocore.org/show_bug.cgi?id=455)
This patch added some extra build options to suppress possible warnings
when building openssl source under GCC48 and VS2010. Including:
Adding "-Wno-error=maybe-uninitialized" to suppress the following GCC48
build warning:
OpensslLib/openssl/ssl/statem/statem_clnt.c:2543:9: error: "len" may
be used uninitialized in this function [-Werror=maybe-uninitialized]
len += pskhdrlen;
^
And adding "/wd4306" to suppress the following VS2010 build warning:
openssl\crypto\asn1\tasn_dec.c(795) : warning C4306: 'type cast' :
conversion from 'int' to 'ASN1_VALUE *' of greater size
Cc: Ting Ye <ting.ye@intel.com>
Cc: Hao Wu <hao.a.wu@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qin Long <qin.long@intel.com>
---
CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 ++++++++++-----
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 ++++++++++-----
2 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
index 42f72f4f1f..cbabb34bdd 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
@@ -535,21 +535,26 @@
# C4244: conversion from type1 to type2, possible loss of data
# C4245: conversion from type1 to type2, signed/unsigned mismatch
# C4267: conversion from size_t to type, possible loss of data
+ # C4306: 'identifier' : conversion from 'type1' to 'type2' of greater size
# C4389: 'operator' : signed/unsigned mismatch (xxxx)
# C4702: unreachable code
# C4706: assignment within conditional expression
#
MSFT:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4389 /wd4702 /wd4706
- MSFT:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4389 /wd4702 /wd4706
- MSFT:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4389 /wd4702 /wd4706
+ MSFT:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4306 /wd4389 /wd4702 /wd4706
+ MSFT:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4306 /wd4389 /wd4702 /wd4706
INTEL:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w
INTEL:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w
INTEL:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w
- GCC:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
- GCC:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -DNO_MSABI_VA_FUNCS
- GCC:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
+ #
+ # Suppress the following build warnings in openssl so we don't break the build with -Werror
+ # -Werror=maybe-uninitialized: there exist some other paths for which the variable is not initialized.
+ #
+ GCC:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
+ GCC:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -DNO_MSABI_VA_FUNCS
+ GCC:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
GCC:*_*_ARM_CC_FLAGS = $(OPENSSL_FLAGS)
GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS)
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
index cbbb456d70..026b551bca 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
@@ -496,21 +496,26 @@
# C4244: conversion from type1 to type2, possible loss of data
# C4245: conversion from type1 to type2, signed/unsigned mismatch
# C4267: conversion from size_t to type, possible loss of data
+ # C4306: 'identifier' : conversion from 'type1' to 'type2' of greater size
# C4389: 'operator' : signed/unsigned mismatch (xxxx)
# C4702: unreachable code
# C4706: assignment within conditional expression
#
MSFT:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4389 /wd4702 /wd4706
- MSFT:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4389 /wd4702 /wd4706
- MSFT:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4389 /wd4702 /wd4706
+ MSFT:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4306 /wd4389 /wd4702 /wd4706
+ MSFT:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4306 /wd4389 /wd4702 /wd4706
INTEL:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w
INTEL:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w
INTEL:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w
- GCC:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
- GCC:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -DNO_MSABI_VA_FUNCS
- GCC:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
+ #
+ # Suppress the following build warnings in openssl so we don't break the build with -Werror
+ # -Werror=maybe-uninitialized: there exist some other paths for which the variable is not initialized.
+ #
+ GCC:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
+ GCC:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -DNO_MSABI_VA_FUNCS
+ GCC:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
GCC:*_*_ARM_CC_FLAGS = $(OPENSSL_FLAGS)
GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS)
--
2.12.2.windows.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/4] CryptoPkg: Fix possible unresolved external symbol issue.
2017-04-01 5:38 [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues Long Qin
2017-04-01 5:38 ` [PATCH v2 1/4] CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source Long Qin
@ 2017-04-01 5:38 ` Long Qin
2017-04-01 5:38 ` [PATCH v2 3/4] CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper Long Qin
` (3 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Long Qin @ 2017-04-01 5:38 UTC (permalink / raw)
To: edk2-devel; +Cc: ting.ye, hao.a.wu, feng.tian, eric.dong, lersek, Qin Long
From: Qin Long <qin.long@intel.com>
The compiler (visual studio) may optimize some explicit strcmp call
in openssl source to use the intrinsic memcmp call.
In CrtLibSupport.h, we just use #define to mapping memcmp to
CompareMem API. So in Link phase, this kind of intrinsic optimization
will cause the "unresolved external symbol" error. For example:
OpensslLib.lib(v3_utl.obj) : error LNK2001:
unresolved external symbol _memcmp
This patch will keep the memcmp mapping, and provide extra Intrinsic
memcmp wrapper to satisfy the symbol link.
Cc: Ting Ye <ting.ye@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qin Long <qin.long@intel.com>
---
CryptoPkg/Include/CrtLibSupport.h | 1 +
CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +++++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/CryptoPkg/Include/CrtLibSupport.h b/CryptoPkg/Include/CrtLibSupport.h
index ddf7784a37..7f1ec12302 100644
--- a/CryptoPkg/Include/CrtLibSupport.h
+++ b/CryptoPkg/Include/CrtLibSupport.h
@@ -133,6 +133,7 @@ void *malloc (size_t);
void *realloc (void *, size_t);
void free (void *);
void *memset (void *, int, size_t);
+int memcmp (const void *, const void *, size_t);
int isdigit (int);
int isspace (int);
int isxdigit (int);
diff --git a/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c b/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c
index e8a76d07ff..bf485d680d 100644
--- a/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c
+++ b/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c
@@ -17,12 +17,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/BaseMemoryLib.h>
#include <Library/BaseLib.h>
+typedef UINTN size_t;
+
/* OpenSSL will use floating point support, and C compiler produces the _fltused
symbol by default. Simply define this symbol here to satisfy the linker. */
int _fltused = 1;
/* Sets buffers to a specified character */
-void * memset (void *dest, char ch, unsigned int count)
+void * memset (void *dest, char ch, size_t count)
{
//
// NOTE: Here we use one base implementation for memset, instead of the direct
@@ -46,6 +48,12 @@ void * memset (void *dest, char ch, unsigned int count)
return dest;
}
+/* Compare bytes in two buffers. */
+int memcmp (const void *buf1, const void *buf2, size_t count)
+{
+ return (int)CompareMem(buf1, buf2, count);
+}
+
int strcmp (const char *s1, const char *s2)
{
return (int)AsciiStrCmp(s1, s2);
--
2.12.2.windows.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/4] CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
2017-04-01 5:38 [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues Long Qin
2017-04-01 5:38 ` [PATCH v2 1/4] CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source Long Qin
2017-04-01 5:38 ` [PATCH v2 2/4] CryptoPkg: Fix possible unresolved external symbol issue Long Qin
@ 2017-04-01 5:38 ` Long Qin
2017-04-01 5:38 ` [PATCH v2 4/4] CryptoPkg: One workaround to resolve potential build issue Long Qin
` (2 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Long Qin @ 2017-04-01 5:38 UTC (permalink / raw)
To: edk2-devel; +Cc: ting.ye, hao.a.wu, feng.tian, eric.dong, lersek, Qin Long
From: Qin Long <qin.long@intel.com>
There are some explicit time(NULL) calls in openssl-1.1.0xx source,
but the dummy time() wrapper in ConstantTimeClock.c (used by PEI
and SMM module) has no any checks on NULL parameter. This is one bug
and will cause the memory access issue.
This patch adds the NULL parameter checking in time() wrapper.
Cc: Ting Ye <ting.ye@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qin Long <qin.long@intel.com>
---
CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c b/CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c
index 7f20164999..0cd90434ca 100644
--- a/CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c
+++ b/CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c
@@ -31,8 +31,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
time_t time (time_t *timer)
{
- *timer = 0;
- return *timer;
+ if (timer != NULL) {
+ *timer = 0;
+ }
+ return 0;
}
struct tm * gmtime (const time_t *timer)
--
2.12.2.windows.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/4] CryptoPkg: One workaround to resolve potential build issue.
2017-04-01 5:38 [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues Long Qin
` (2 preceding siblings ...)
2017-04-01 5:38 ` [PATCH v2 3/4] CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper Long Qin
@ 2017-04-01 5:38 ` Long Qin
2017-04-03 16:45 ` [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues Laszlo Ersek
2017-04-06 8:54 ` Laszlo Ersek
5 siblings, 0 replies; 13+ messages in thread
From: Long Qin @ 2017-04-01 5:38 UTC (permalink / raw)
To: edk2-devel; +Cc: ting.ye, hao.a.wu, feng.tian, eric.dong, lersek, Qin Long
From: Qin Long <qin.long@intel.com>
This patch duplicates one e_os2.h with minor changes into
"CryptoPkg/Include/openssl/" as one workaround to resolve some
external components/modules build issue.
(NOTE: This duplicated e_os2.h may be removed after upstreaming
the changes into openssl. Refer to
https://bugzilla.tianocore.org/show_bug.cgi?id=456
for next follow-up.)
The BaseCryptLib consumer should ONLY include "BaseCryptLib.h" to
use the exposed APIs. But some external modules call OpenSSL API
directly via include "openssl/xxx.h", which causes some macro
re-definitions errors in e_os2.h (under default _WIN32/_WIN64).
We duplicate one e_os2.h with the following changes to fix this
kind of macro re-definition error.
-# if defined(OPENSSL_SYS_UEFI) && !defined(ssize_t)
+# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t)
+# if !defined(ssize_t)
# define ossl_ssize_t int
+# else
+# define ossl_ssize_t ssize_t
+# endif
# define OSSL_SSIZE_MAX INT_MAX
# endif
This is just one workaround before other external modules were
cleaned. And this update of e_os2.h could also be upstreaming
into openssl to eliminate the potential risk.
Cc: Ting Ye <ting.ye@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Hao Wu <hao.a.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qin Long <qin.long@intel.com>
---
CryptoPkg/Include/openssl/e_os2.h | 321 ++++++++++++++++++++++++++++++++++++++
1 file changed, 321 insertions(+)
create mode 100644 CryptoPkg/Include/openssl/e_os2.h
diff --git a/CryptoPkg/Include/openssl/e_os2.h b/CryptoPkg/Include/openssl/e_os2.h
new file mode 100644
index 0000000000..4424d06ce3
--- /dev/null
+++ b/CryptoPkg/Include/openssl/e_os2.h
@@ -0,0 +1,321 @@
+/*
+ * This is one duplicated copy of "CryptoPkg/Library/OpensslLib/openssl/include/e_os2.h",
+ * with minor changes.
+ * This file may be removed after upstreaming the changes into openssl
+ * Refer to https://bugzilla.tianocore.org/show_bug.cgi?id=456 for next follow-up.
+ */
+/*
+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the OpenSSL license (the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#ifndef HEADER_E_OS2_H
+# define HEADER_E_OS2_H
+
+# include <openssl/opensslconf.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/******************************************************************************
+ * Detect operating systems. This probably needs completing.
+ * The result is that at least one OPENSSL_SYS_os macro should be defined.
+ * However, if none is defined, Unix is assumed.
+ **/
+
+# define OPENSSL_SYS_UNIX
+
+/* --------------------- Microsoft operating systems ---------------------- */
+
+/*
+ * Note that MSDOS actually denotes 32-bit environments running on top of
+ * MS-DOS, such as DJGPP one.
+ */
+# if defined(OPENSSL_SYS_MSDOS)
+# undef OPENSSL_SYS_UNIX
+# endif
+
+/*
+ * For 32 bit environment, there seems to be the CygWin environment and then
+ * all the others that try to do the same thing Microsoft does...
+ */
+/*
+ * UEFI lives here because it might be built with a Microsoft toolchain and
+ * we need to avoid the false positive match on Windows.
+ */
+# if defined(OPENSSL_SYS_UEFI)
+# undef OPENSSL_SYS_UNIX
+# elif defined(OPENSSL_SYS_UWIN)
+# undef OPENSSL_SYS_UNIX
+# define OPENSSL_SYS_WIN32_UWIN
+# else
+# if defined(__CYGWIN__) || defined(OPENSSL_SYS_CYGWIN)
+# undef OPENSSL_SYS_UNIX
+# define OPENSSL_SYS_WIN32_CYGWIN
+# else
+# if defined(_WIN32) || defined(OPENSSL_SYS_WIN32)
+# undef OPENSSL_SYS_UNIX
+# if !defined(OPENSSL_SYS_WIN32)
+# define OPENSSL_SYS_WIN32
+# endif
+# endif
+# if defined(_WIN64) || defined(OPENSSL_SYS_WIN64)
+# undef OPENSSL_SYS_UNIX
+# if !defined(OPENSSL_SYS_WIN64)
+# define OPENSSL_SYS_WIN64
+# endif
+# endif
+# if defined(OPENSSL_SYS_WINNT)
+# undef OPENSSL_SYS_UNIX
+# endif
+# if defined(OPENSSL_SYS_WINCE)
+# undef OPENSSL_SYS_UNIX
+# endif
+# endif
+# endif
+
+/* Anything that tries to look like Microsoft is "Windows" */
+# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE)
+# undef OPENSSL_SYS_UNIX
+# define OPENSSL_SYS_WINDOWS
+# ifndef OPENSSL_SYS_MSDOS
+# define OPENSSL_SYS_MSDOS
+# endif
+# endif
+
+/*
+ * DLL settings. This part is a bit tough, because it's up to the
+ * application implementor how he or she will link the application, so it
+ * requires some macro to be used.
+ */
+# ifdef OPENSSL_SYS_WINDOWS
+# ifndef OPENSSL_OPT_WINDLL
+# if defined(_WINDLL) /* This is used when building OpenSSL to
+ * indicate that DLL linkage should be used */
+# define OPENSSL_OPT_WINDLL
+# endif
+# endif
+# endif
+
+/* ------------------------------- OpenVMS -------------------------------- */
+# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYS_VMS)
+# if !defined(OPENSSL_SYS_VMS)
+# undef OPENSSL_SYS_UNIX
+# endif
+# define OPENSSL_SYS_VMS
+# if defined(__DECC)
+# define OPENSSL_SYS_VMS_DECC
+# elif defined(__DECCXX)
+# define OPENSSL_SYS_VMS_DECC
+# define OPENSSL_SYS_VMS_DECCXX
+# else
+# define OPENSSL_SYS_VMS_NODECC
+# endif
+# endif
+
+/* -------------------------------- Unix ---------------------------------- */
+# ifdef OPENSSL_SYS_UNIX
+# if defined(linux) || defined(__linux__) && !defined(OPENSSL_SYS_LINUX)
+# define OPENSSL_SYS_LINUX
+# endif
+# if defined(_AIX) && !defined(OPENSSL_SYS_AIX)
+# define OPENSSL_SYS_AIX
+# endif
+# endif
+
+/* -------------------------------- VOS ----------------------------------- */
+# if defined(__VOS__) && !defined(OPENSSL_SYS_VOS)
+# define OPENSSL_SYS_VOS
+# ifdef __HPPA__
+# define OPENSSL_SYS_VOS_HPPA
+# endif
+# ifdef __IA32__
+# define OPENSSL_SYS_VOS_IA32
+# endif
+# endif
+
+/**
+ * That's it for OS-specific stuff
+ *****************************************************************************/
+
+/* Specials for I/O an exit */
+# ifdef OPENSSL_SYS_MSDOS
+# define OPENSSL_UNISTD_IO <io.h>
+# define OPENSSL_DECLARE_EXIT extern void exit(int);
+# else
+# define OPENSSL_UNISTD_IO OPENSSL_UNISTD
+# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */
+# endif
+
+/*-
+ * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare
+ * certain global symbols that, with some compilers under VMS, have to be
+ * defined and declared explicitly with globaldef and globalref.
+ * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare
+ * DLL exports and imports for compilers under Win32. These are a little
+ * more complicated to use. Basically, for any library that exports some
+ * global variables, the following code must be present in the header file
+ * that declares them, before OPENSSL_EXTERN is used:
+ *
+ * #ifdef SOME_BUILD_FLAG_MACRO
+ * # undef OPENSSL_EXTERN
+ * # define OPENSSL_EXTERN OPENSSL_EXPORT
+ * #endif
+ *
+ * The default is to have OPENSSL_EXPORT, OPENSSL_EXTERN and OPENSSL_GLOBAL
+ * have some generally sensible values.
+ */
+
+# if defined(OPENSSL_SYS_VMS_NODECC)
+# define OPENSSL_EXPORT globalref
+# define OPENSSL_EXTERN globalref
+# define OPENSSL_GLOBAL globaldef
+# elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL)
+# define OPENSSL_EXPORT extern __declspec(dllexport)
+# define OPENSSL_EXTERN extern __declspec(dllimport)
+# define OPENSSL_GLOBAL
+# else
+# define OPENSSL_EXPORT extern
+# define OPENSSL_EXTERN extern
+# define OPENSSL_GLOBAL
+# endif
+
+/*-
+ * Macros to allow global variables to be reached through function calls when
+ * required (if a shared library version requires it, for example.
+ * The way it's done allows definitions like this:
+ *
+ * // in foobar.c
+ * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)
+ * // in foobar.h
+ * OPENSSL_DECLARE_GLOBAL(int,foobar);
+ * #define foobar OPENSSL_GLOBAL_REF(foobar)
+ */
+# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION
+# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \
+ type *_shadow_##name(void) \
+ { static type _hide_##name=value; return &_hide_##name; }
+# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void)
+# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name()))
+# else
+# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value;
+# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name
+# define OPENSSL_GLOBAL_REF(name) _shadow_##name
+# endif
+
+# ifdef _WIN32
+# ifdef _WIN64
+# define ossl_ssize_t __int64
+# define OSSL_SSIZE_MAX _I64_MAX
+# else
+# define ossl_ssize_t int
+# define OSSL_SSIZE_MAX INT_MAX
+# endif
+# endif
+
+# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t)
+# if !defined(ssize_t)
+# define ossl_ssize_t int
+# else
+# define ossl_ssize_t ssize_t
+# endif
+# define OSSL_SSIZE_MAX INT_MAX
+# endif
+
+# ifndef ossl_ssize_t
+# define ossl_ssize_t ssize_t
+# if defined(SSIZE_MAX)
+# define OSSL_SSIZE_MAX SSIZE_MAX
+# elif defined(_POSIX_SSIZE_MAX)
+# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX
+# endif
+# endif
+
+# ifdef DEBUG_UNUSED
+# define __owur __attribute__((__warn_unused_result__))
+# else
+# define __owur
+# endif
+
+/* Standard integer types */
+# if defined(OPENSSL_SYS_UEFI)
+typedef INT8 int8_t;
+typedef UINT8 uint8_t;
+typedef INT16 int16_t;
+typedef UINT16 uint16_t;
+typedef INT32 int32_t;
+typedef UINT32 uint32_t;
+typedef INT64 int64_t;
+typedef UINT64 uint64_t;
+# define PRIu64 "%Lu"
+# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
+ defined(__osf__) || defined(__sgi) || defined(__hpux) || \
+ defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__)
+# include <inttypes.h>
+# elif defined(_MSC_VER) && _MSC_VER<=1500
+/*
+ * minimally required typdefs for systems not supporting inttypes.h or
+ * stdint.h: currently just older VC++
+ */
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+typedef short int16_t;
+typedef unsigned short uint16_t;
+typedef int int32_t;
+typedef unsigned int uint32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+# else
+# include <stdint.h>
+# endif
+
+/*
+ * We need a format operator for some client tools for uint64_t. If inttypes.h
+ * isn't available or did not define it, just go with hard-coded.
+ */
+# ifndef PRIu64
+# ifdef SIXTY_FOUR_BIT_LONG
+# define PRIu64 "lu"
+# else
+# define PRIu64 "llu"
+# endif
+# endif
+
+/* ossl_inline: portable inline definition usable in public headers */
+# if !defined(inline) && !defined(__cplusplus)
+# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L
+ /* just use inline */
+# define ossl_inline inline
+# elif defined(__GNUC__) && __GNUC__>=2
+# define ossl_inline __inline__
+# elif defined(_MSC_VER)
+ /*
+ * Visual Studio: inline is available in C++ only, however
+ * __inline is available for C, see
+ * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx
+ */
+# define ossl_inline __inline
+# else
+# define ossl_inline
+# endif
+# else
+# define ossl_inline inline
+# endif
+
+# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+# define ossl_noreturn _Noreturn
+# elif defined(__GNUC__) && __GNUC__ >= 2
+# define ossl_noreturn __attribute__((noreturn))
+# else
+# define ossl_noreturn
+# endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--
2.12.2.windows.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
2017-04-01 5:38 [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues Long Qin
` (3 preceding siblings ...)
2017-04-01 5:38 ` [PATCH v2 4/4] CryptoPkg: One workaround to resolve potential build issue Long Qin
@ 2017-04-03 16:45 ` Laszlo Ersek
2017-04-06 8:54 ` Laszlo Ersek
5 siblings, 0 replies; 13+ messages in thread
From: Laszlo Ersek @ 2017-04-03 16:45 UTC (permalink / raw)
To: Long Qin, edk2-devel; +Cc: feng.tian, eric.dong, ting.ye, hao.a.wu
On 04/01/17 07:38, Long Qin wrote:
> From: Qin Long <qin.long@intel.com>
>
> V2:
> Updated the patches as the comments from Laszlo (lersek@redhat.com).
> And filed two TianoCore BZ (#455, #456) to track the further follow-ups
> on openssl and EDKII-CryptoPkg:
> https://bugzilla.tianocore.org/show_bug.cgi?id=455
> https://bugzilla.tianocore.org/show_bug.cgi?id=456
Thanks for the update.
Before we proceed with this patch set, can you please report an upstream
OpenSSL issue at
https://github.com/openssl/openssl/issues
for each one of the two problems worked around in this patch set? (*)
And, those upstream OpenSSL tickets should be referenced in the
corresponding TianoCore bug reports #455 and #456, by URL.
The goal is that, at any point in the future, we can quickly check the
status of the OpenSSL upstreaming, by looking at the upstream OpenSSL
bug reports.
(*) The OpenSSL bug tracker is on github now, according to
https://www.openssl.org/community/
and
https://www.openssl.org/blog/blog/2016/10/12/f2f-rt-github/
Thanks!
Laszlo
>
> This patch series introduced some hotfixes and workaround to resolve
> the build issues under different toolchain, and from potential external
> consumers, including:
> - build warning under GCC48 and VS2010 toolchain;
> - Potential unresolved external symbol link issue;
> - One bug fix of timer() wrapper in ConstantTimeClock.c;
> - One workaround to resolve macro re-definitions issue from some
> external BaseCryptLib consumer.
>
> (https://github.com/qloong/edk2/commits/dev-openssl-hotfix)
>
> Qin Long (4):
> CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source
> CryptoPkg: Fix possible unresolved external symbol issue.
> CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
> CryptoPkg: One workaround to resolve potential build issue.
>
> CryptoPkg/Include/CrtLibSupport.h | 1 +
> CryptoPkg/Include/openssl/e_os2.h | 321 +++++++++++++++++++++
> .../BaseCryptLib/SysCall/ConstantTimeClock.c | 6 +-
> CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +-
> CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 +-
> CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 +-
> 6 files changed, 355 insertions(+), 13 deletions(-)
> create mode 100644 CryptoPkg/Include/openssl/e_os2.h
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
2017-04-01 5:38 [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues Long Qin
` (4 preceding siblings ...)
2017-04-03 16:45 ` [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues Laszlo Ersek
@ 2017-04-06 8:54 ` Laszlo Ersek
2017-04-06 11:26 ` Long, Qin
5 siblings, 1 reply; 13+ messages in thread
From: Laszlo Ersek @ 2017-04-06 8:54 UTC (permalink / raw)
To: Long Qin, edk2-devel; +Cc: feng.tian, eric.dong, ting.ye, hao.a.wu
On 04/01/17 07:38, Long Qin wrote:
> From: Qin Long <qin.long@intel.com>
>
> V2:
> Updated the patches as the comments from Laszlo (lersek@redhat.com).
> And filed two TianoCore BZ (#455, #456) to track the further follow-ups
> on openssl and EDKII-CryptoPkg:
> https://bugzilla.tianocore.org/show_bug.cgi?id=455
> https://bugzilla.tianocore.org/show_bug.cgi?id=456
>
> This patch series introduced some hotfixes and workaround to resolve
> the build issues under different toolchain, and from potential external
> consumers, including:
> - build warning under GCC48 and VS2010 toolchain;
> - Potential unresolved external symbol link issue;
> - One bug fix of timer() wrapper in ConstantTimeClock.c;
> - One workaround to resolve macro re-definitions issue from some
> external BaseCryptLib consumer.
>
> (https://github.com/qloong/edk2/commits/dev-openssl-hotfix)
>
> Qin Long (4):
> CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source
> CryptoPkg: Fix possible unresolved external symbol issue.
> CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
> CryptoPkg: One workaround to resolve potential build issue.
>
> CryptoPkg/Include/CrtLibSupport.h | 1 +
> CryptoPkg/Include/openssl/e_os2.h | 321 +++++++++++++++++++++
> .../BaseCryptLib/SysCall/ConstantTimeClock.c | 6 +-
> CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +-
> CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 +-
> CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 +-
> 6 files changed, 355 insertions(+), 13 deletions(-)
> create mode 100644 CryptoPkg/Include/openssl/e_os2.h
>
I can see the upstream OpenSSL pull req / issue report references in
TianoCore BZs 455 and 456.
series
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Thanks!
Laszlo
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
2017-04-06 8:54 ` Laszlo Ersek
@ 2017-04-06 11:26 ` Long, Qin
2017-04-06 12:56 ` Laszlo Ersek
0 siblings, 1 reply; 13+ messages in thread
From: Long, Qin @ 2017-04-06 11:26 UTC (permalink / raw)
To: Laszlo Ersek, edk2-devel@lists.01.org
Cc: Ye, Ting, Wu, Hao A, Tian, Feng, Dong, Eric
Thanks, Laszlo.
And the last "workaround" patch can be dropped, since we introduced the new [Includes.Common.Private] setting in Package DEC file (from my last patch). This will help to eliminate the potential macro re-definition risk.
It's still valuable to refine openssl e_os2.h definition for consistence, which was submitted / approved by the PR (https://github.com/openssl/openssl/pull/3121)
Best Regards & Thanks,
LONG, Qin
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Laszlo Ersek
> Sent: Thursday, April 6, 2017 4:55 PM
> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Tian,
> Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
>
> On 04/01/17 07:38, Long Qin wrote:
> > From: Qin Long <qin.long@intel.com>
> >
> > V2:
> > Updated the patches as the comments from Laszlo (lersek@redhat.com).
> > And filed two TianoCore BZ (#455, #456) to track the further follow-ups
> > on openssl and EDKII-CryptoPkg:
> > https://bugzilla.tianocore.org/show_bug.cgi?id=455
> > https://bugzilla.tianocore.org/show_bug.cgi?id=456
> >
> > This patch series introduced some hotfixes and workaround to resolve
> > the build issues under different toolchain, and from potential
> > external consumers, including:
> > - build warning under GCC48 and VS2010 toolchain;
> > - Potential unresolved external symbol link issue;
> > - One bug fix of timer() wrapper in ConstantTimeClock.c;
> > - One workaround to resolve macro re-definitions issue from some
> > external BaseCryptLib consumer.
> >
> > (https://github.com/qloong/edk2/commits/dev-openssl-hotfix)
> >
> > Qin Long (4):
> > CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source
> > CryptoPkg: Fix possible unresolved external symbol issue.
> > CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
> > CryptoPkg: One workaround to resolve potential build issue.
> >
> > CryptoPkg/Include/CrtLibSupport.h | 1 +
> > CryptoPkg/Include/openssl/e_os2.h | 321
> +++++++++++++++++++++
> > .../BaseCryptLib/SysCall/ConstantTimeClock.c | 6 +-
> > CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +-
> > CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 +-
> > CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 +-
> > 6 files changed, 355 insertions(+), 13 deletions(-) create mode
> > 100644 CryptoPkg/Include/openssl/e_os2.h
> >
>
> I can see the upstream OpenSSL pull req / issue report references in
> TianoCore BZs 455 and 456.
>
> series
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>
> Thanks!
> Laszlo
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
2017-04-06 11:26 ` Long, Qin
@ 2017-04-06 12:56 ` Laszlo Ersek
2017-04-06 14:17 ` Long, Qin
0 siblings, 1 reply; 13+ messages in thread
From: Laszlo Ersek @ 2017-04-06 12:56 UTC (permalink / raw)
To: Long, Qin, edk2-devel@lists.01.org
Cc: Ye, Ting, Wu, Hao A, Tian, Feng, Dong, Eric
On 04/06/17 13:26, Long, Qin wrote:
> Thanks, Laszlo.
>
> And the last "workaround" patch can be dropped, since we introduced
> the new [Includes.Common.Private] setting in Package DEC file (from
> my last patch). This will help to eliminate the potential macro
> re-definition risk.
Is the [Includes.Common.Private] section documented somewhere? I checked
the DEC spec v1.25, and it's not described there. Should I file a
documentation BZ about this?
Thanks
Laszlo
> It's still valuable to refine openssl e_os2.h definition for
> consistence, which was submitted / approved by the PR
> (https://github.com/openssl/openssl/pull/3121)
>
>
> Best Regards & Thanks,
> LONG, Qin
>
>> -----Original Message-----
>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>> Laszlo Ersek
>> Sent: Thursday, April 6, 2017 4:55 PM
>> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
>> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Tian,
>> Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
>> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
>>
>> On 04/01/17 07:38, Long Qin wrote:
>>> From: Qin Long <qin.long@intel.com>
>>>
>>> V2:
>>> Updated the patches as the comments from Laszlo (lersek@redhat.com).
>>> And filed two TianoCore BZ (#455, #456) to track the further follow-ups
>>> on openssl and EDKII-CryptoPkg:
>>> https://bugzilla.tianocore.org/show_bug.cgi?id=455
>>> https://bugzilla.tianocore.org/show_bug.cgi?id=456
>>>
>>> This patch series introduced some hotfixes and workaround to resolve
>>> the build issues under different toolchain, and from potential
>>> external consumers, including:
>>> - build warning under GCC48 and VS2010 toolchain;
>>> - Potential unresolved external symbol link issue;
>>> - One bug fix of timer() wrapper in ConstantTimeClock.c;
>>> - One workaround to resolve macro re-definitions issue from some
>>> external BaseCryptLib consumer.
>>>
>>> (https://github.com/qloong/edk2/commits/dev-openssl-hotfix)
>>>
>>> Qin Long (4):
>>> CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source
>>> CryptoPkg: Fix possible unresolved external symbol issue.
>>> CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
>>> CryptoPkg: One workaround to resolve potential build issue.
>>>
>>> CryptoPkg/Include/CrtLibSupport.h | 1 +
>>> CryptoPkg/Include/openssl/e_os2.h | 321
>> +++++++++++++++++++++
>>> .../BaseCryptLib/SysCall/ConstantTimeClock.c | 6 +-
>>> CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +-
>>> CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 +-
>>> CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 +-
>>> 6 files changed, 355 insertions(+), 13 deletions(-) create mode
>>> 100644 CryptoPkg/Include/openssl/e_os2.h
>>>
>>
>> I can see the upstream OpenSSL pull req / issue report references in
>> TianoCore BZs 455 and 456.
>>
>> series
>> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>>
>> Thanks!
>> Laszlo
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
2017-04-06 12:56 ` Laszlo Ersek
@ 2017-04-06 14:17 ` Long, Qin
2017-04-06 17:17 ` Laszlo Ersek
2017-04-07 10:17 ` Laszlo Ersek
0 siblings, 2 replies; 13+ messages in thread
From: Long, Qin @ 2017-04-06 14:17 UTC (permalink / raw)
To: Laszlo Ersek, edk2-devel@lists.01.org
Cc: Ye, Ting, Wu, Hao A, Tian, Feng, Dong, Eric
> -----Original Message-----
> From: Laszlo Ersek [mailto:lersek@redhat.com]
> Sent: Thursday, April 6, 2017 8:57 PM
> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Tian,
> Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
>
> On 04/06/17 13:26, Long, Qin wrote:
> > Thanks, Laszlo.
> >
> > And the last "workaround" patch can be dropped, since we introduced
> > the new [Includes.Common.Private] setting in Package DEC file (from my
> > last patch). This will help to eliminate the potential macro
> > re-definition risk.
>
> Is the [Includes.Common.Private] section documented somewhere? I
> checked the DEC spec v1.25, and it's not described there. Should I file a
> documentation BZ about this?
The feature was introduced by the Commit ("c28d2e1047816164ffec552e4a3375122cbcc6b6").
I will check the documentation status with the owner.
>
> Thanks
> Laszlo
>
> > It's still valuable to refine openssl e_os2.h definition for
> > consistence, which was submitted / approved by the PR
> > (https://github.com/openssl/openssl/pull/3121)
> >
> >
> > Best Regards & Thanks,
> > LONG, Qin
> >
> >> -----Original Message-----
> >> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf
> >> Of Laszlo Ersek
> >> Sent: Thursday, April 6, 2017 4:55 PM
> >> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
> >> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>;
> >> Tian, Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
> >> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build
> >> Issues
> >>
> >> On 04/01/17 07:38, Long Qin wrote:
> >>> From: Qin Long <qin.long@intel.com>
> >>>
> >>> V2:
> >>> Updated the patches as the comments from Laszlo
> (lersek@redhat.com).
> >>> And filed two TianoCore BZ (#455, #456) to track the further follow-ups
> >>> on openssl and EDKII-CryptoPkg:
> >>> https://bugzilla.tianocore.org/show_bug.cgi?id=455
> >>> https://bugzilla.tianocore.org/show_bug.cgi?id=456
> >>>
> >>> This patch series introduced some hotfixes and workaround to resolve
> >>> the build issues under different toolchain, and from potential
> >>> external consumers, including:
> >>> - build warning under GCC48 and VS2010 toolchain;
> >>> - Potential unresolved external symbol link issue;
> >>> - One bug fix of timer() wrapper in ConstantTimeClock.c;
> >>> - One workaround to resolve macro re-definitions issue from some
> >>> external BaseCryptLib consumer.
> >>>
> >>> (https://github.com/qloong/edk2/commits/dev-openssl-hotfix)
> >>>
> >>> Qin Long (4):
> >>> CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source
> >>> CryptoPkg: Fix possible unresolved external symbol issue.
> >>> CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
> >>> CryptoPkg: One workaround to resolve potential build issue.
> >>>
> >>> CryptoPkg/Include/CrtLibSupport.h | 1 +
> >>> CryptoPkg/Include/openssl/e_os2.h | 321
> >> +++++++++++++++++++++
> >>> .../BaseCryptLib/SysCall/ConstantTimeClock.c | 6 +-
> >>> CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +-
> >>> CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 +-
> >>> CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 +-
> >>> 6 files changed, 355 insertions(+), 13 deletions(-) create mode
> >>> 100644 CryptoPkg/Include/openssl/e_os2.h
> >>>
> >>
> >> I can see the upstream OpenSSL pull req / issue report references in
> >> TianoCore BZs 455 and 456.
> >>
> >> series
> >> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> >>
> >> Thanks!
> >> Laszlo
> >> _______________________________________________
> >> edk2-devel mailing list
> >> edk2-devel@lists.01.org
> >> https://lists.01.org/mailman/listinfo/edk2-devel
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
> >
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
2017-04-06 14:17 ` Long, Qin
@ 2017-04-06 17:17 ` Laszlo Ersek
2017-04-07 10:17 ` Laszlo Ersek
1 sibling, 0 replies; 13+ messages in thread
From: Laszlo Ersek @ 2017-04-06 17:17 UTC (permalink / raw)
To: Long, Qin, edk2-devel@lists.01.org
Cc: Ye, Ting, Wu, Hao A, Tian, Feng, Dong, Eric
On 04/06/17 16:17, Long, Qin wrote:
>> -----Original Message-----
>> From: Laszlo Ersek [mailto:lersek@redhat.com]
>> Sent: Thursday, April 6, 2017 8:57 PM
>> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
>> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Tian,
>> Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
>> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
>>
>> On 04/06/17 13:26, Long, Qin wrote:
>>> Thanks, Laszlo.
>>>
>>> And the last "workaround" patch can be dropped, since we introduced
>>> the new [Includes.Common.Private] setting in Package DEC file (from my
>>> last patch). This will help to eliminate the potential macro
>>> re-definition risk.
>>
>> Is the [Includes.Common.Private] section documented somewhere? I
>> checked the DEC spec v1.25, and it's not described there. Should I file a
>> documentation BZ about this?
>
> The feature was introduced by the Commit ("c28d2e1047816164ffec552e4a3375122cbcc6b6").
Oh, this looks very useful. Thanks!
Laszlo
> I will check the documentation status with the owner.
>
>>
>> Thanks
>> Laszlo
>>
>>> It's still valuable to refine openssl e_os2.h definition for
>>> consistence, which was submitted / approved by the PR
>>> (https://github.com/openssl/openssl/pull/3121)
>>>
>>>
>>> Best Regards & Thanks,
>>> LONG, Qin
>>>
>>>> -----Original Message-----
>>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf
>>>> Of Laszlo Ersek
>>>> Sent: Thursday, April 6, 2017 4:55 PM
>>>> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
>>>> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>;
>>>> Tian, Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
>>>> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build
>>>> Issues
>>>>
>>>> On 04/01/17 07:38, Long Qin wrote:
>>>>> From: Qin Long <qin.long@intel.com>
>>>>>
>>>>> V2:
>>>>> Updated the patches as the comments from Laszlo
>> (lersek@redhat.com).
>>>>> And filed two TianoCore BZ (#455, #456) to track the further follow-ups
>>>>> on openssl and EDKII-CryptoPkg:
>>>>> https://bugzilla.tianocore.org/show_bug.cgi?id=455
>>>>> https://bugzilla.tianocore.org/show_bug.cgi?id=456
>>>>>
>>>>> This patch series introduced some hotfixes and workaround to resolve
>>>>> the build issues under different toolchain, and from potential
>>>>> external consumers, including:
>>>>> - build warning under GCC48 and VS2010 toolchain;
>>>>> - Potential unresolved external symbol link issue;
>>>>> - One bug fix of timer() wrapper in ConstantTimeClock.c;
>>>>> - One workaround to resolve macro re-definitions issue from some
>>>>> external BaseCryptLib consumer.
>>>>>
>>>>> (https://github.com/qloong/edk2/commits/dev-openssl-hotfix)
>>>>>
>>>>> Qin Long (4):
>>>>> CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source
>>>>> CryptoPkg: Fix possible unresolved external symbol issue.
>>>>> CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
>>>>> CryptoPkg: One workaround to resolve potential build issue.
>>>>>
>>>>> CryptoPkg/Include/CrtLibSupport.h | 1 +
>>>>> CryptoPkg/Include/openssl/e_os2.h | 321
>>>> +++++++++++++++++++++
>>>>> .../BaseCryptLib/SysCall/ConstantTimeClock.c | 6 +-
>>>>> CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +-
>>>>> CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 +-
>>>>> CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 +-
>>>>> 6 files changed, 355 insertions(+), 13 deletions(-) create mode
>>>>> 100644 CryptoPkg/Include/openssl/e_os2.h
>>>>>
>>>>
>>>> I can see the upstream OpenSSL pull req / issue report references in
>>>> TianoCore BZs 455 and 456.
>>>>
>>>> series
>>>> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>>>>
>>>> Thanks!
>>>> Laszlo
>>>> _______________________________________________
>>>> edk2-devel mailing list
>>>> edk2-devel@lists.01.org
>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>> _______________________________________________
>>> edk2-devel mailing list
>>> edk2-devel@lists.01.org
>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
2017-04-06 14:17 ` Long, Qin
2017-04-06 17:17 ` Laszlo Ersek
@ 2017-04-07 10:17 ` Laszlo Ersek
2017-04-07 13:22 ` Long, Qin
1 sibling, 1 reply; 13+ messages in thread
From: Laszlo Ersek @ 2017-04-07 10:17 UTC (permalink / raw)
To: Long, Qin, edk2-devel@lists.01.org
Cc: Ye, Ting, Wu, Hao A, Tian, Feng, Dong, Eric
On 04/06/17 16:17, Long, Qin wrote:
>> -----Original Message-----
>> From: Laszlo Ersek [mailto:lersek@redhat.com]
>> Sent: Thursday, April 6, 2017 8:57 PM
>> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
>> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Tian,
>> Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
>> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
>>
>> On 04/06/17 13:26, Long, Qin wrote:
>>> Thanks, Laszlo.
>>>
>>> And the last "workaround" patch can be dropped, since we introduced
>>> the new [Includes.Common.Private] setting in Package DEC file (from my
>>> last patch). This will help to eliminate the potential macro
>>> re-definition risk.
>>
>> Is the [Includes.Common.Private] section documented somewhere? I
>> checked the DEC spec v1.25, and it's not described there. Should I file a
>> documentation BZ about this?
>
> The feature was introduced by the Commit ("c28d2e1047816164ffec552e4a3375122cbcc6b6").
> I will check the documentation status with the owner.
I wanted to drop this reminder from my personal TODO list, but I also
didn't want the question to go forgotten.
So, ultimately, I filed
https://bugzilla.tianocore.org/show_bug.cgi?id=465
Thanks,
Laszlo
>>
>>> It's still valuable to refine openssl e_os2.h definition for
>>> consistence, which was submitted / approved by the PR
>>> (https://github.com/openssl/openssl/pull/3121)
>>>
>>>
>>> Best Regards & Thanks,
>>> LONG, Qin
>>>
>>>> -----Original Message-----
>>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf
>>>> Of Laszlo Ersek
>>>> Sent: Thursday, April 6, 2017 4:55 PM
>>>> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
>>>> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>;
>>>> Tian, Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
>>>> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build
>>>> Issues
>>>>
>>>> On 04/01/17 07:38, Long Qin wrote:
>>>>> From: Qin Long <qin.long@intel.com>
>>>>>
>>>>> V2:
>>>>> Updated the patches as the comments from Laszlo
>> (lersek@redhat.com).
>>>>> And filed two TianoCore BZ (#455, #456) to track the further follow-ups
>>>>> on openssl and EDKII-CryptoPkg:
>>>>> https://bugzilla.tianocore.org/show_bug.cgi?id=455
>>>>> https://bugzilla.tianocore.org/show_bug.cgi?id=456
>>>>>
>>>>> This patch series introduced some hotfixes and workaround to resolve
>>>>> the build issues under different toolchain, and from potential
>>>>> external consumers, including:
>>>>> - build warning under GCC48 and VS2010 toolchain;
>>>>> - Potential unresolved external symbol link issue;
>>>>> - One bug fix of timer() wrapper in ConstantTimeClock.c;
>>>>> - One workaround to resolve macro re-definitions issue from some
>>>>> external BaseCryptLib consumer.
>>>>>
>>>>> (https://github.com/qloong/edk2/commits/dev-openssl-hotfix)
>>>>>
>>>>> Qin Long (4):
>>>>> CryptoPkg/OpensslLib: Suppress extra build warnings in openssl source
>>>>> CryptoPkg: Fix possible unresolved external symbol issue.
>>>>> CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
>>>>> CryptoPkg: One workaround to resolve potential build issue.
>>>>>
>>>>> CryptoPkg/Include/CrtLibSupport.h | 1 +
>>>>> CryptoPkg/Include/openssl/e_os2.h | 321
>>>> +++++++++++++++++++++
>>>>> .../BaseCryptLib/SysCall/ConstantTimeClock.c | 6 +-
>>>>> CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +-
>>>>> CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 +-
>>>>> CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 +-
>>>>> 6 files changed, 355 insertions(+), 13 deletions(-) create mode
>>>>> 100644 CryptoPkg/Include/openssl/e_os2.h
>>>>>
>>>>
>>>> I can see the upstream OpenSSL pull req / issue report references in
>>>> TianoCore BZs 455 and 456.
>>>>
>>>> series
>>>> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>>>>
>>>> Thanks!
>>>> Laszlo
>>>> _______________________________________________
>>>> edk2-devel mailing list
>>>> edk2-devel@lists.01.org
>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>> _______________________________________________
>>> edk2-devel mailing list
>>> edk2-devel@lists.01.org
>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>>
>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
2017-04-07 10:17 ` Laszlo Ersek
@ 2017-04-07 13:22 ` Long, Qin
0 siblings, 0 replies; 13+ messages in thread
From: Long, Qin @ 2017-04-07 13:22 UTC (permalink / raw)
To: Laszlo Ersek, edk2-devel@lists.01.org
Cc: Ye, Ting, Wu, Hao A, Tian, Feng, Dong, Eric
Thanks for doing this.
Looks we just filed internal tracker for this spec update. This BZ is helpful for community tracking.
Best Regards & Thanks,
LONG, Qin
> -----Original Message-----
> From: Laszlo Ersek [mailto:lersek@redhat.com]
> Sent: Friday, April 7, 2017 6:18 PM
> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Tian,
> Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build Issues
>
> On 04/06/17 16:17, Long, Qin wrote:
> >> -----Original Message-----
> >> From: Laszlo Ersek [mailto:lersek@redhat.com]
> >> Sent: Thursday, April 6, 2017 8:57 PM
> >> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
> >> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>;
> >> Tian, Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
> >> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build
> >> Issues
> >>
> >> On 04/06/17 13:26, Long, Qin wrote:
> >>> Thanks, Laszlo.
> >>>
> >>> And the last "workaround" patch can be dropped, since we introduced
> >>> the new [Includes.Common.Private] setting in Package DEC file (from
> >>> my last patch). This will help to eliminate the potential macro
> >>> re-definition risk.
> >>
> >> Is the [Includes.Common.Private] section documented somewhere? I
> >> checked the DEC spec v1.25, and it's not described there. Should I
> >> file a documentation BZ about this?
> >
> > The feature was introduced by the Commit
> ("c28d2e1047816164ffec552e4a3375122cbcc6b6").
> > I will check the documentation status with the owner.
>
> I wanted to drop this reminder from my personal TODO list, but I also didn't
> want the question to go forgotten.
>
> So, ultimately, I filed
>
> https://bugzilla.tianocore.org/show_bug.cgi?id=465
>
> Thanks,
> Laszlo
>
> >>
> >>> It's still valuable to refine openssl e_os2.h definition for
> >>> consistence, which was submitted / approved by the PR
> >>> (https://github.com/openssl/openssl/pull/3121)
> >>>
> >>>
> >>> Best Regards & Thanks,
> >>> LONG, Qin
> >>>
> >>>> -----Original Message-----
> >>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf
> >>>> Of Laszlo Ersek
> >>>> Sent: Thursday, April 6, 2017 4:55 PM
> >>>> To: Long, Qin <qin.long@intel.com>; edk2-devel@lists.01.org
> >>>> Cc: Ye, Ting <ting.ye@intel.com>; Wu, Hao A <hao.a.wu@intel.com>;
> >>>> Tian, Feng <feng.tian@intel.com>; Dong, Eric <eric.dong@intel.com>
> >>>> Subject: Re: [edk2] [PATCH v2 0/4] Resolving Some CryptoPkg Build
> >>>> Issues
> >>>>
> >>>> On 04/01/17 07:38, Long Qin wrote:
> >>>>> From: Qin Long <qin.long@intel.com>
> >>>>>
> >>>>> V2:
> >>>>> Updated the patches as the comments from Laszlo
> >> (lersek@redhat.com).
> >>>>> And filed two TianoCore BZ (#455, #456) to track the further follow-
> ups
> >>>>> on openssl and EDKII-CryptoPkg:
> >>>>> https://bugzilla.tianocore.org/show_bug.cgi?id=455
> >>>>> https://bugzilla.tianocore.org/show_bug.cgi?id=456
> >>>>>
> >>>>> This patch series introduced some hotfixes and workaround to
> >>>>> resolve the build issues under different toolchain, and from
> >>>>> potential external consumers, including:
> >>>>> - build warning under GCC48 and VS2010 toolchain;
> >>>>> - Potential unresolved external symbol link issue;
> >>>>> - One bug fix of timer() wrapper in ConstantTimeClock.c;
> >>>>> - One workaround to resolve macro re-definitions issue from some
> >>>>> external BaseCryptLib consumer.
> >>>>>
> >>>>> (https://github.com/qloong/edk2/commits/dev-openssl-hotfix)
> >>>>>
> >>>>> Qin Long (4):
> >>>>> CryptoPkg/OpensslLib: Suppress extra build warnings in openssl
> source
> >>>>> CryptoPkg: Fix possible unresolved external symbol issue.
> >>>>> CryptoPkg/BaseCryptLib: Adding NULL checking in time() wrapper.
> >>>>> CryptoPkg: One workaround to resolve potential build issue.
> >>>>>
> >>>>> CryptoPkg/Include/CrtLibSupport.h | 1 +
> >>>>> CryptoPkg/Include/openssl/e_os2.h | 321
> >>>> +++++++++++++++++++++
> >>>>> .../BaseCryptLib/SysCall/ConstantTimeClock.c | 6 +-
> >>>>> CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c | 10 +-
> >>>>> CryptoPkg/Library/OpensslLib/OpensslLib.inf | 15 +-
> >>>>> CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 15 +-
> >>>>> 6 files changed, 355 insertions(+), 13 deletions(-) create mode
> >>>>> 100644 CryptoPkg/Include/openssl/e_os2.h
> >>>>>
> >>>>
> >>>> I can see the upstream OpenSSL pull req / issue report references
> >>>> in TianoCore BZs 455 and 456.
> >>>>
> >>>> series
> >>>> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> >>>>
> >>>> Thanks!
> >>>> Laszlo
> >>>> _______________________________________________
> >>>> edk2-devel mailing list
> >>>> edk2-devel@lists.01.org
> >>>> https://lists.01.org/mailman/listinfo/edk2-devel
> >>> _______________________________________________
> >>> edk2-devel mailing list
> >>> edk2-devel@lists.01.org
> >>> https://lists.01.org/mailman/listinfo/edk2-devel
> >>>
> >
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
> >
^ permalink raw reply [flat|nested] 13+ messages in thread