Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Liming Gao
Fish:

From: af...@apple.com [mailto:af...@apple.com]
Sent: Thursday, June 6, 2019 11:39 AM
To: devel@edk2.groups.io; Lu, XiaoyuX 
Cc: Gao, Liming ; Bi, Dandan ; Wang, 
Jian J 
Subject: Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 
IA32 build problem




On Jun 4, 2019, at 11:33 PM, Xiaoyu Lu 
mailto:xiaoyux...@intel.com>> wrote:

Hi Liming,


-Original Message-
From: Gao, Liming
Sent: Wednesday, June 5, 2019 1:57 PM
To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Lu, XiaoyuX 
mailto:xiaoyux...@intel.com>>
Cc: Bi, Dandan mailto:dandan...@intel.com>>; Wang, Jian J 
mailto:jian.j.w...@intel.com>>
Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
CLANG38 IA32 build problem

Xiaoyu:


-Original Message-
From: devel@edk2.groups.io<mailto: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<mailto:devel@edk2.groups.io>
Cc: Lu, XiaoyuX mailto:xiaoyux...@intel.com>>; Bi, Dandan
mailto:dandan...@intel.com>>;

Wang, Jian J mailto: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 mailto:jian.j.w...@intel.com>>
Cc: Dandan Bi mailto:dandan...@intel.com>>
Signed-off-by: Xiaoyu Lu mailto: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 
#include 

+#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?

Because I want __memcpy only use in this file scope.


+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?

__memcpy isn't IA32 Intrinsic API, only memcpy is intrinsic API for both IA32 
and X64.

The reason I alias memcpy and use __attribute__((__used__)) is let compiler 
retain symbol in object file,
So it can link correct.

Is this correct?


I think this is a bug in clang that requires the __used__, we hit something 
like this with Xcode too. If the compiler emits the intrinsic it should tell 
the linker and some how that was getting missed. Thus the __used__ is a work 
around.

OK. It is for CLANG 3.8. I will check whether the latest CLANG8.0 fixes it.

Thanks,

Andrew Fish


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 (#41975): https://edk2.groups.io/g/devel/message/41975
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]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Andrew Fish via Groups.Io


> On Jun 4, 2019, at 11:33 PM, Xiaoyu Lu  wrote:
> 
> Hi Liming,
> 
>> -Original Message-
>> From: Gao, Liming
>> Sent: Wednesday, June 5, 2019 1:57 PM
>> To: devel@edk2.groups.io <mailto:devel@edk2.groups.io>; Lu, XiaoyuX 
>> mailto:xiaoyux...@intel.com>>
>> Cc: Bi, Dandan mailto:dandan...@intel.com>>; Wang, 
>> Jian J mailto:jian.j.w...@intel.com>>
>> Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
>> CLANG38 IA32 build problem
>> 
>> 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 ; Bi, Dandan
>> ;
>>> Wang, Jian J 
>>> 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 
>>> Cc: Dandan Bi 
>>> Signed-off-by: Xiaoyu Lu 
>>> ---
>>> 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 
>>> #include 
>>> 
>>> +#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?
>> 
> 
> Because I want __memcpy only use in this file scope.
> 
>>> +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?
>> 
> 
> __memcpy isn't IA32 Intrinsic API, only memcpy is intrinsic API for both IA32 
> and X64.
> 
> The reason I alias memcpy and use __attribute__((__used__)) is let compiler 
> retain symbol in object file,
> So it can link correct.
> 
> Is this correct?
> 

I think this is a bug in clang that requires the __used__, we hit something 
like this with Xcode too. If the compiler emits the intrinsic it should tell 
the linker and some how that was getting missed. Thus the __used__ is a work 
around. 

Thanks,

Andrew Fish

>> 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 (#41974): https://edk2.groups.io/g/devel/message/41974
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]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Liming Gao
Push @98d8f194e5a646b25b3390825c92949a76689d75

> -Original Message-
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Liming 
> Gao
> Sent: Wednesday, June 5, 2019 3:56 PM
> To: Lu, XiaoyuX ; devel@edk2.groups.io
> Cc: Bi, Dandan ; Wang, Jian J 
> Subject: Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 
> IA32 build problem
> 
> That good enough. Reviewed-by: Liming Gao 
> 
> Thanks
> Liming
> > -Original Message-
> > From: Lu, XiaoyuX
> > Sent: Wednesday, June 5, 2019 3:51 PM
> > To: Gao, Liming ; devel@edk2.groups.io
> > Cc: Bi, Dandan ; Wang, Jian J 
> > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix 
> > CLANG38 IA32 build problem
> >
> > Yes I verify them.
> >
> > build -p OvmfPkg/OvmfPkgX64.dsc -a X64 -t CLANG38
> > and
> > build -p OvmfPkg/OvmfPkgIA32.dsc -a IA32 -t CLANG38
> >
> > with qemu-system-x86_64
> >
> > > -Original Message-
> > > From: Gao, Liming
> > > Sent: Wednesday, June 5, 2019 3:37 PM
> > > To: Lu, XiaoyuX ; devel@edk2.groups.io
> > > Cc: Bi, Dandan ; Wang, Jian J 
> > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > CLANG38 IA32 build problem
> > >
> > > Do you cover IA32 & X64 arch both, and verify Ovmf boot?
> > >
> > > > -Original Message-----
> > > > From: Lu, XiaoyuX
> > > > Sent: Wednesday, June 5, 2019 3:35 PM
> > > > To: Gao, Liming ; devel@edk2.groups.io
> > > > Cc: Bi, Dandan ; Wang, Jian J
> > > 
> > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > CLANG38 IA32 build problem
> > > >
> > > > Liming,
> > > >
> > > > > -Original Message-
> > > > > From: Gao, Liming
> > > > > Sent: Wednesday, June 5, 2019 3:28 PM
> > > > > To: Lu, XiaoyuX ; devel@edk2.groups.io
> > > > > Cc: Bi, Dandan ; Wang, Jian J
> > > 
> > > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > > > CLANG38 IA32 build problem
> > > > >
> > > > > Xiaoyu:
> > > > >
> > > > > > -Original Message-
> > > > > > From: Lu, XiaoyuX
> > > > > > Sent: Wednesday, June 5, 2019 2:34 PM
> > > > > > To: Gao, Liming ; devel@edk2.groups.io
> > > > > > Cc: Bi, Dandan ; Wang, Jian J
> > > > > 
> > > > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > > > CLANG38 IA32 build problem
> > > > > >
> > > > > > Hi Liming,
> > > > > >
> > > > > > > -Original Message-
> > > > > > > From: Gao, Liming
> > > > > > > Sent: Wednesday, June 5, 2019 1:57 PM
> > > > > > > To: devel@edk2.groups.io; Lu, XiaoyuX 
> > > > > > > Cc: Bi, Dandan ; Wang, Jian J
> > > > > 
> > > > > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: 
> > > > > > > Fix
> > > > > > > CLANG38 IA32 build problem
> > > > > > >
> > > > > > > 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 ; Bi, Dandan
> > > > > > > ;
> > > > > > > >Wang, Jian J 
> > > > > > > >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'`
> > > >

Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Liming Gao
That good enough. Reviewed-by: Liming Gao 

Thanks
Liming
> -Original Message-
> From: Lu, XiaoyuX
> Sent: Wednesday, June 5, 2019 3:51 PM
> To: Gao, Liming ; devel@edk2.groups.io
> Cc: Bi, Dandan ; Wang, Jian J 
> Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 
> IA32 build problem
> 
> Yes I verify them.
> 
> build -p OvmfPkg/OvmfPkgX64.dsc -a X64 -t CLANG38
> and
> build -p OvmfPkg/OvmfPkgIA32.dsc -a IA32 -t CLANG38
> 
> with qemu-system-x86_64
> 
> > -Original Message-
> > From: Gao, Liming
> > Sent: Wednesday, June 5, 2019 3:37 PM
> > To: Lu, XiaoyuX ; devel@edk2.groups.io
> > Cc: Bi, Dandan ; Wang, Jian J 
> > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > CLANG38 IA32 build problem
> >
> > Do you cover IA32 & X64 arch both, and verify Ovmf boot?
> >
> > > -Original Message-
> > > From: Lu, XiaoyuX
> > > Sent: Wednesday, June 5, 2019 3:35 PM
> > > To: Gao, Liming ; devel@edk2.groups.io
> > > Cc: Bi, Dandan ; Wang, Jian J
> > 
> > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > CLANG38 IA32 build problem
> > >
> > > Liming,
> > >
> > > > -Original Message-
> > > > From: Gao, Liming
> > > > Sent: Wednesday, June 5, 2019 3:28 PM
> > > > To: Lu, XiaoyuX ; devel@edk2.groups.io
> > > > Cc: Bi, Dandan ; Wang, Jian J
> > 
> > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > > CLANG38 IA32 build problem
> > > >
> > > > Xiaoyu:
> > > >
> > > > > -Original Message-
> > > > > From: Lu, XiaoyuX
> > > > > Sent: Wednesday, June 5, 2019 2:34 PM
> > > > > To: Gao, Liming ; devel@edk2.groups.io
> > > > > Cc: Bi, Dandan ; Wang, Jian J
> > > > 
> > > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > > CLANG38 IA32 build problem
> > > > >
> > > > > Hi Liming,
> > > > >
> > > > > > -Original Message-
> > > > > > From: Gao, Liming
> > > > > > Sent: Wednesday, June 5, 2019 1:57 PM
> > > > > > To: devel@edk2.groups.io; Lu, XiaoyuX 
> > > > > > Cc: Bi, Dandan ; Wang, Jian J
> > > > 
> > > > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > > > > CLANG38 IA32 build problem
> > > > > >
> > > > > > 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 ; Bi, Dandan
> > > > > > ;
> > > > > > >Wang, Jian J 
> > > > > > >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 
> > > > > > >Cc: Dandan Bi 
> > > > > > >Signed-off-by: Xiaoyu Lu 
> > > > > > >---
> > > > > > > CryptoPkg/Library/IntrinsicLib/CopyMem.c | 13 +
> > > > > > > 1 file changed, 13 insertions(+)
> > > > > > >
> > > > > > >diff --git a/CryptoPkg/Library/IntrinsicLib/CopyMem.c
> > > > > > >b/CryptoPkg/Library/IntrinsicLib/C

Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Xiaoyu Lu
Yes I verify them.

build -p OvmfPkg/OvmfPkgX64.dsc -a X64 -t CLANG38
and
build -p OvmfPkg/OvmfPkgIA32.dsc -a IA32 -t CLANG38

with qemu-system-x86_64

> -Original Message-
> From: Gao, Liming
> Sent: Wednesday, June 5, 2019 3:37 PM
> To: Lu, XiaoyuX ; devel@edk2.groups.io
> Cc: Bi, Dandan ; Wang, Jian J 
> Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> CLANG38 IA32 build problem
> 
> Do you cover IA32 & X64 arch both, and verify Ovmf boot?
> 
> > -Original Message-
> > From: Lu, XiaoyuX
> > Sent: Wednesday, June 5, 2019 3:35 PM
> > To: Gao, Liming ; devel@edk2.groups.io
> > Cc: Bi, Dandan ; Wang, Jian J
> 
> > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> CLANG38 IA32 build problem
> >
> > Liming,
> >
> > > -Original Message-
> > > From: Gao, Liming
> > > Sent: Wednesday, June 5, 2019 3:28 PM
> > > To: Lu, XiaoyuX ; devel@edk2.groups.io
> > > Cc: Bi, Dandan ; Wang, Jian J
> 
> > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > CLANG38 IA32 build problem
> > >
> > > Xiaoyu:
> > >
> > > > -Original Message-----
> > > > From: Lu, XiaoyuX
> > > > Sent: Wednesday, June 5, 2019 2:34 PM
> > > > To: Gao, Liming ; devel@edk2.groups.io
> > > > Cc: Bi, Dandan ; Wang, Jian J
> > > 
> > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > CLANG38 IA32 build problem
> > > >
> > > > Hi Liming,
> > > >
> > > > > -Original Message-
> > > > > From: Gao, Liming
> > > > > Sent: Wednesday, June 5, 2019 1:57 PM
> > > > > To: devel@edk2.groups.io; Lu, XiaoyuX 
> > > > > Cc: Bi, Dandan ; Wang, Jian J
> > > 
> > > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > > > CLANG38 IA32 build problem
> > > > >
> > > > > 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 ; Bi, Dandan
> > > > > ;
> > > > > >Wang, Jian J 
> > > > > >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 
> > > > > >Cc: Dandan Bi 
> > > > > >Signed-off-by: Xiaoyu Lu 
> > > > > >---
> > > > > > 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 
> > > > > > #include 
> > > > > >
> > > > > >+#if defined(__clang__) && !defined(__APPLE__)
> > > > >
> > > > > So, this change is only for CLANG tool chain.
> > > > >
> > > > > >+
> > > > > >+/* Copies bytes between buffers */
> > > > > >+static __attribute__((__used__))
>

Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Liming Gao
Do you cover IA32 & X64 arch both, and verify Ovmf boot?

> -Original Message-
> From: Lu, XiaoyuX
> Sent: Wednesday, June 5, 2019 3:35 PM
> To: Gao, Liming ; devel@edk2.groups.io
> Cc: Bi, Dandan ; Wang, Jian J 
> Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 
> IA32 build problem
> 
> Liming,
> 
> > -Original Message-
> > From: Gao, Liming
> > Sent: Wednesday, June 5, 2019 3:28 PM
> > To: Lu, XiaoyuX ; devel@edk2.groups.io
> > Cc: Bi, Dandan ; Wang, Jian J 
> > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > CLANG38 IA32 build problem
> >
> > Xiaoyu:
> >
> > > -Original Message-
> > > From: Lu, XiaoyuX
> > > Sent: Wednesday, June 5, 2019 2:34 PM
> > > To: Gao, Liming ; devel@edk2.groups.io
> > > Cc: Bi, Dandan ; Wang, Jian J
> > 
> > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > CLANG38 IA32 build problem
> > >
> > > Hi Liming,
> > >
> > > > -Original Message-----
> > > > From: Gao, Liming
> > > > Sent: Wednesday, June 5, 2019 1:57 PM
> > > > To: devel@edk2.groups.io; Lu, XiaoyuX 
> > > > Cc: Bi, Dandan ; Wang, Jian J
> > 
> > > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > > CLANG38 IA32 build problem
> > > >
> > > > 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 ; Bi, Dandan
> > > > ;
> > > > >Wang, Jian J 
> > > > >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 
> > > > >Cc: Dandan Bi 
> > > > >Signed-off-by: Xiaoyu Lu 
> > > > >---
> > > > > 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 
> > > > > #include 
> > > > >
> > > > >+#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?
> > > >
> > >
> > > Because I want __memcpy only use in this file scope.
> > >
> > > > >+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?
> > > >
> > >
> > > __memcpy isn't IA32 Intrinsic API, only memcpy is intrinsic API for both
> > IA32 and X64.
> > >
> > > The reason I alias memcpy and use __attribute__((__used__)) is let
> > compiler retain symbol in object file,
> > > So it can link correct.
> > >
> > > Is this correct?
> > >
> >
> > Make sense. What test have been done by you? Build pass and Boot pass?
> >
> 
> Build pass and BaseCryptLib functions test pass.
> I don't test http boot.
> 
> Thanks,
> Xiaoyu
> 
> > > > 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 (#41918): https://edk2.groups.io/g/devel/message/41918
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]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Xiaoyu Lu
Liming,

> -Original Message-
> From: Gao, Liming
> Sent: Wednesday, June 5, 2019 3:28 PM
> To: Lu, XiaoyuX ; devel@edk2.groups.io
> Cc: Bi, Dandan ; Wang, Jian J 
> Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> CLANG38 IA32 build problem
> 
> Xiaoyu:
> 
> > -Original Message-
> > From: Lu, XiaoyuX
> > Sent: Wednesday, June 5, 2019 2:34 PM
> > To: Gao, Liming ; devel@edk2.groups.io
> > Cc: Bi, Dandan ; Wang, Jian J
> 
> > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> CLANG38 IA32 build problem
> >
> > Hi Liming,
> >
> > > -Original Message-
> > > From: Gao, Liming
> > > Sent: Wednesday, June 5, 2019 1:57 PM
> > > To: devel@edk2.groups.io; Lu, XiaoyuX 
> > > Cc: Bi, Dandan ; Wang, Jian J
> 
> > > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > > CLANG38 IA32 build problem
> > >
> > > 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 ; Bi, Dandan
> > > ;
> > > >Wang, Jian J 
> > > >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 
> > > >Cc: Dandan Bi 
> > > >Signed-off-by: Xiaoyu Lu 
> > > >---
> > > > 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 
> > > > #include 
> > > >
> > > >+#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?
> > >
> >
> > Because I want __memcpy only use in this file scope.
> >
> > > >+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?
> > >
> >
> > __memcpy isn't IA32 Intrinsic API, only memcpy is intrinsic API for both
> IA32 and X64.
> >
> > The reason I alias memcpy and use __attribute__((__used__)) is let
> compiler retain symbol in object file,
> > So it can link correct.
> >
> > Is this correct?
> >
> 
> Make sense. What test have been done by you? Build pass and Boot pass?
> 

Build pass and BaseCryptLib functions test pass.
I don't test http boot.

Thanks,
Xiaoyu

> > > 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 (#41916): https://edk2.groups.io/g/devel/message/41916
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]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Liming Gao
Xiaoyu:

> -Original Message-
> From: Lu, XiaoyuX
> Sent: Wednesday, June 5, 2019 2:34 PM
> To: Gao, Liming ; devel@edk2.groups.io
> Cc: Bi, Dandan ; Wang, Jian J 
> Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 
> IA32 build problem
> 
> Hi Liming,
> 
> > -Original Message-
> > From: Gao, Liming
> > Sent: Wednesday, June 5, 2019 1:57 PM
> > To: devel@edk2.groups.io; Lu, XiaoyuX 
> > Cc: Bi, Dandan ; Wang, Jian J 
> > Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> > CLANG38 IA32 build problem
> >
> > 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 ; Bi, Dandan
> > ;
> > >Wang, Jian J 
> > >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 
> > >Cc: Dandan Bi 
> > >Signed-off-by: Xiaoyu Lu 
> > >---
> > > 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 
> > > #include 
> > >
> > >+#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?
> >
> 
> Because I want __memcpy only use in this file scope.
> 
> > >+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?
> >
> 
> __memcpy isn't IA32 Intrinsic API, only memcpy is intrinsic API for both IA32 
> and X64.
> 
> The reason I alias memcpy and use __attribute__((__used__)) is let compiler 
> retain symbol in object file,
> So it can link correct.
> 
> Is this correct?
> 

Make sense. What test have been done by you? Build pass and Boot pass?

> > 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 (#41915): https://edk2.groups.io/g/devel/message/41915
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]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix CLANG38 IA32 build problem

2019-06-05 Thread Xiaoyu Lu
Hi Liming,

> -Original Message-
> From: Gao, Liming
> Sent: Wednesday, June 5, 2019 1:57 PM
> To: devel@edk2.groups.io; Lu, XiaoyuX 
> Cc: Bi, Dandan ; Wang, Jian J 
> Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg/IntrinsicLib: Fix
> CLANG38 IA32 build problem
> 
> 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 ; Bi, Dandan
> ;
> >Wang, Jian J 
> >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 
> >Cc: Dandan Bi 
> >Signed-off-by: Xiaoyu Lu 
> >---
> > 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 
> > #include 
> >
> >+#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?
> 

Because I want __memcpy only use in this file scope.

> >+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?
> 

__memcpy isn't IA32 Intrinsic API, only memcpy is intrinsic API for both IA32 
and X64.

The reason I alias memcpy and use __attribute__((__used__)) is let compiler 
retain symbol in object file,
So it can link correct.

Is this correct?

> 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 (#41914): https://edk2.groups.io/g/devel/message/41914
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]
-=-=-=-=-=-=-=-=-=-=-=-