Re: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify debug file path.

2022-05-13 Thread Guomin Jiang
Hi Liming,

It's just an example for downstream developer how to use DEBUG_FILE_PATH.
If the developer prefer the original ASSERT, nothing need to do.

Now, we have an option to avoid the random file path at least.
Another benefit is that we can save flash size when we developing new feature 
using debug mode.

You can also see we have done the similar  thing for __LINE__ from DebugLib.h 
file.
83  #ifdef DEBUG_LINE_NUMBER
84  #else
85  #define DEBUG_LINE_NUMBER  __LINE__
86  #endif

Thanks
Guomin
> -Original Message-
> From: gaoliming 
> Sent: Thursday, April 21, 2022 9:22 AM
> To: Jiang, Guomin ; devel@edk2.groups.io
> Cc: Kinney, Michael D ; Liu, Zhiguang
> 
> Subject: 回复: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> DEBUG_FILE_PATH to specify debug file path.
> 
> Guomin:
>   gEfiCallerBaseName is the module base name, not source file name. It can
> verify the build reproduce, but it can't provide the same functionality to
> _FILE_.
> 
> Thanks
> Liming
> > -邮件原件-
> > 发件人: Jiang, Guomin 
> > 发送时间: 2022年4月20日 16:58
> > 收件人: Gao, Liming ; devel@edk2.groups.io
> > 抄送: Kinney, Michael D ; Liu, Zhiguang
> > 
> > 主题: RE: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > DEBUG_FILE_PATH to specify debug file path.
> >
> > Hi Liming,
> >
> > I just add ```-D DEBUG_FILE_PATH=gEfiCallerBaseName``` to BuildOptions
> >
> > Thanks
> > Guomin
> >
> > > -Original Message-
> > > From: gaoliming 
> > > Sent: Sunday, April 17, 2022 11:21 AM
> > > To: Jiang, Guomin ; devel@edk2.groups.io
> > > Cc: Kinney, Michael D ; Liu, Zhiguang
> > > 
> > > Subject: 回复: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > > DEBUG_FILE_PATH to specify debug file path.
> > >
> > > Guomin:
> > >   I understand the purpose. But, I don't see the complete solution
> > > to configure DEBUG_FILE_PATH for every source file in order to meet
> > > with the debug image reproducible builds. Have you verified this
> > > solution with the
> > real
> > > DEBUG_FILE_PATH for every source file? Or, you just set
> > > DEBUG_FILE_PATH to the same value for the different source file?
> > >
> > > Thanks
> > > Liming
> > > > -邮件原件-
> > > > 发件人: Jiang, Guomin 
> > > > 发送时间: 2022年4月13日 13:43
> > > > 收件人: devel@edk2.groups.io; Gao, Liming
> > 
> > > > 抄送: Kinney, Michael D ; Liu, Zhiguang
> > > > 
> > > > 主题: RE: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > > > DEBUG_FILE_PATH to specify debug file path.
> > > >
> > > > Hi Liming,
> > > >
> > > > Below is the detail why need this change. If you only care usage.
> > > > Please jump to "How to use it" directly.
> > > >
> > > > Why need:
> > > > 1. Replication build is not new, you can refer
> > > > https://reproducible-builds.org for detail 2. The benefit is that
> > > > 1) make sure the same commit generate same binary so we can sure
> > > > that it is not modified by anyone 2) store the binary in the repo
> > > > without concern of different binary with same code.
> > > >
> > > > What's barrier in EDK2 implement?
> > > > 1. Very depend on Toolchain(for example VS, GCC, CLANG). Different
> > > > toolchain have different feature set and different toolchain
> > > > version have different feature set.
> > > > 2. Deploy new toolchain need big effort, include but not limit
> > > > deploy it in CI CD system, update toolchain, size concern, feature
> > > > change, etc
> > > >
> > > > What's the change:
> > > > 1. The change want to address one issue that we encounter in
> > > > replication
> > > > build: the ASSERT in EDK2 will be different in different environment.
> > > > For
> > > > example: file path, back slash or forward slash, etc
> > > >
> > > > How to use it:
> > > > 1. If you want to keep current ASSERT string format. No action is
> > > > required and the change keep back compatible 2. If you want to
> > > > customize the ASSERT string format. You can use additional tool to
> > > > generate PATH and define macro in BuildOptions or tools_def.
> > > >
> > > > Note:
> > > > 1. Replication build need many effort: 1) address the pdb path, 2)
> > > > address the timestamp, etc 2. This cha

回复: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify debug file path.

2022-04-20 Thread gaoliming
Guomin:
  gEfiCallerBaseName is the module base name, not source file name. It can 
verify the build reproduce, but it can't provide the same functionality to 
_FILE_.  

Thanks
Liming
> -邮件原件-
> 发件人: Jiang, Guomin 
> 发送时间: 2022年4月20日 16:58
> 收件人: Gao, Liming ; devel@edk2.groups.io
> 抄送: Kinney, Michael D ; Liu, Zhiguang
> 
> 主题: RE: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> DEBUG_FILE_PATH to specify debug file path.
> 
> Hi Liming,
> 
> I just add ```-D DEBUG_FILE_PATH=gEfiCallerBaseName``` to BuildOptions
> 
> Thanks
> Guomin
> 
> > -Original Message-
> > From: gaoliming 
> > Sent: Sunday, April 17, 2022 11:21 AM
> > To: Jiang, Guomin ; devel@edk2.groups.io
> > Cc: Kinney, Michael D ; Liu, Zhiguang
> > 
> > Subject: 回复: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > DEBUG_FILE_PATH to specify debug file path.
> >
> > Guomin:
> >   I understand the purpose. But, I don't see the complete solution to
> > configure DEBUG_FILE_PATH for every source file in order to meet with the
> > debug image reproducible builds. Have you verified this solution with the
> real
> > DEBUG_FILE_PATH for every source file? Or, you just set DEBUG_FILE_PATH
> > to the same value for the different source file?
> >
> > Thanks
> > Liming
> > > -邮件原件-
> > > 发件人: Jiang, Guomin 
> > > 发送时间: 2022年4月13日 13:43
> > > 收件人: devel@edk2.groups.io; Gao, Liming
> 
> > > 抄送: Kinney, Michael D ; Liu, Zhiguang
> > > 
> > > 主题: RE: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > > DEBUG_FILE_PATH to specify debug file path.
> > >
> > > Hi Liming,
> > >
> > > Below is the detail why need this change. If you only care usage.
> > > Please jump to "How to use it" directly.
> > >
> > > Why need:
> > > 1. Replication build is not new, you can refer
> > > https://reproducible-builds.org for detail 2. The benefit is that 1)
> > > make sure the same commit generate same binary so we can sure that it
> > > is not modified by anyone 2) store the binary in the repo without
> > > concern of different binary with same code.
> > >
> > > What's barrier in EDK2 implement?
> > > 1. Very depend on Toolchain(for example VS, GCC, CLANG). Different
> > > toolchain have different feature set and different toolchain version
> > > have different feature set.
> > > 2. Deploy new toolchain need big effort, include but not limit deploy
> > > it in CI CD system, update toolchain, size concern, feature change,
> > > etc
> > >
> > > What's the change:
> > > 1. The change want to address one issue that we encounter in
> > > replication
> > > build: the ASSERT in EDK2 will be different in different environment.
> > > For
> > > example: file path, back slash or forward slash, etc
> > >
> > > How to use it:
> > > 1. If you want to keep current ASSERT string format. No action is
> > > required and the change keep back compatible 2. If you want to
> > > customize the ASSERT string format. You can use additional tool to
> > > generate PATH and define macro in BuildOptions or tools_def.
> > >
> > > Note:
> > > 1. Replication build need many effort: 1) address the pdb path, 2)
> > > address the timestamp, etc 2. This change is not target for resolving
> > > all issue in replication build 3. I think it is a small step toward
> > > space even though it haven't fix every thing.
> > >
> > > Thank
> > > Guomin
> > >
> > > > -Original Message-
> > > > From: devel@edk2.groups.io  On Behalf Of
> > > > gaoliming
> > > > Sent: Wednesday, April 13, 2022 9:03 AM
> > > > To: Jiang, Guomin ; devel@edk2.groups.io
> > > > Cc: Kinney, Michael D ; Liu, Zhiguang
> > > > 
> > > > Subject: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > > > DEBUG_FILE_PATH to specify debug file path.
> > > >
> > > > Guomin:
> > > >   Can you introduce DEBUG_FILE_PATH usage? If the developer wants
> to
> > > > enable this feature, how configure DEBUG_FILE_PATH?
> > > >
> > > > Thanks
> > > > Liming
> > > > > -邮件原件-
> > > > > 发件人: Guomin Jiang 
> > > > > 发送时间: 2022年4月12日 18:25
> > > > > 收件人: devel@edk2.groups.io
> > > > > 抄送: Michael D Kinney ; Liming Gao
> >

Re: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify debug file path.

2022-04-20 Thread Guomin Jiang
Hi Liming,

I just add ```-D DEBUG_FILE_PATH=gEfiCallerBaseName``` to BuildOptions

Thanks
Guomin

> -Original Message-
> From: gaoliming 
> Sent: Sunday, April 17, 2022 11:21 AM
> To: Jiang, Guomin ; devel@edk2.groups.io
> Cc: Kinney, Michael D ; Liu, Zhiguang
> 
> Subject: 回复: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> DEBUG_FILE_PATH to specify debug file path.
> 
> Guomin:
>   I understand the purpose. But, I don't see the complete solution to
> configure DEBUG_FILE_PATH for every source file in order to meet with the
> debug image reproducible builds. Have you verified this solution with the real
> DEBUG_FILE_PATH for every source file? Or, you just set DEBUG_FILE_PATH
> to the same value for the different source file?
> 
> Thanks
> Liming
> > -邮件原件-
> > 发件人: Jiang, Guomin 
> > 发送时间: 2022年4月13日 13:43
> > 收件人: devel@edk2.groups.io; Gao, Liming 
> > 抄送: Kinney, Michael D ; Liu, Zhiguang
> > 
> > 主题: RE: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > DEBUG_FILE_PATH to specify debug file path.
> >
> > Hi Liming,
> >
> > Below is the detail why need this change. If you only care usage.
> > Please jump to "How to use it" directly.
> >
> > Why need:
> > 1. Replication build is not new, you can refer
> > https://reproducible-builds.org for detail 2. The benefit is that 1)
> > make sure the same commit generate same binary so we can sure that it
> > is not modified by anyone 2) store the binary in the repo without
> > concern of different binary with same code.
> >
> > What's barrier in EDK2 implement?
> > 1. Very depend on Toolchain(for example VS, GCC, CLANG). Different
> > toolchain have different feature set and different toolchain version
> > have different feature set.
> > 2. Deploy new toolchain need big effort, include but not limit deploy
> > it in CI CD system, update toolchain, size concern, feature change,
> > etc
> >
> > What's the change:
> > 1. The change want to address one issue that we encounter in
> > replication
> > build: the ASSERT in EDK2 will be different in different environment.
> > For
> > example: file path, back slash or forward slash, etc
> >
> > How to use it:
> > 1. If you want to keep current ASSERT string format. No action is
> > required and the change keep back compatible 2. If you want to
> > customize the ASSERT string format. You can use additional tool to
> > generate PATH and define macro in BuildOptions or tools_def.
> >
> > Note:
> > 1. Replication build need many effort: 1) address the pdb path, 2)
> > address the timestamp, etc 2. This change is not target for resolving
> > all issue in replication build 3. I think it is a small step toward
> > space even though it haven't fix every thing.
> >
> > Thank
> > Guomin
> >
> > > -Original Message-
> > > From: devel@edk2.groups.io  On Behalf Of
> > > gaoliming
> > > Sent: Wednesday, April 13, 2022 9:03 AM
> > > To: Jiang, Guomin ; devel@edk2.groups.io
> > > Cc: Kinney, Michael D ; Liu, Zhiguang
> > > 
> > > Subject: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > > DEBUG_FILE_PATH to specify debug file path.
> > >
> > > Guomin:
> > >   Can you introduce DEBUG_FILE_PATH usage? If the developer wants to
> > > enable this feature, how configure DEBUG_FILE_PATH?
> > >
> > > Thanks
> > > Liming
> > > > -邮件原件-
> > > > 发件人: Guomin Jiang 
> > > > 发送时间: 2022年4月12日 18:25
> > > > 收件人: devel@edk2.groups.io
> > > > 抄送: Michael D Kinney ; Liming Gao
> > > > ; Zhiguang Liu 
> > > > 主题: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to
> specify
> > > > debug file path.
> > > >
> > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3840
> > > >
> > > > Use DEBUG_FILE_PATH to control ASSERT path
> > > >
> > > > Motivation and Goal:
> > > > 1. Make replication build more easy and less toolchain dependency 2.
> > > > Consume the ASSERT string easy for downstream 3. Make code more
> > clear
> > > >
> > > > Cc: Michael D Kinney 
> > > > Cc: Liming Gao 
> > > > Cc: Zhiguang Liu 
> > > > Signed-off-by: Guomin Jiang 
> > > > ---
> > > >  MdePkg/Include/Library/DebugLib.h | 34
> > > > +--
> > > >  1 file changed, 23 insertions(+

回复: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify debug file path.

2022-04-16 Thread gaoliming
Guomin:
  I understand the purpose. But, I don't see the complete solution to configure 
DEBUG_FILE_PATH for every source file in order to meet with the debug image 
reproducible builds. Have you verified this solution with the real 
DEBUG_FILE_PATH for every source file? Or, you just set DEBUG_FILE_PATH to the 
same value for the different source file?

Thanks
Liming
> -邮件原件-
> 发件人: Jiang, Guomin 
> 发送时间: 2022年4月13日 13:43
> 收件人: devel@edk2.groups.io; Gao, Liming 
> 抄送: Kinney, Michael D ; Liu, Zhiguang
> 
> 主题: RE: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> DEBUG_FILE_PATH to specify debug file path.
> 
> Hi Liming,
> 
> Below is the detail why need this change. If you only care usage. Please jump
> to "How to use it" directly.
> 
> Why need:
> 1. Replication build is not new, you can refer https://reproducible-builds.org
> for detail
> 2. The benefit is that 1) make sure the same commit generate same binary so
> we can sure that it is not modified by anyone 2) store the binary in the repo
> without concern of different binary with same code.
> 
> What's barrier in EDK2 implement?
> 1. Very depend on Toolchain(for example VS, GCC, CLANG). Different toolchain
> have different feature set and different toolchain version have different
> feature set.
> 2. Deploy new toolchain need big effort, include but not limit deploy it in CI
> CD system, update toolchain, size concern, feature change, etc
> 
> What's the change:
> 1. The change want to address one issue that we encounter in replication
> build: the ASSERT in EDK2 will be different in different environment. For
> example: file path, back slash or forward slash, etc
> 
> How to use it:
> 1. If you want to keep current ASSERT string format. No action is required and
> the change keep back compatible
> 2. If you want to customize the ASSERT string format. You can use additional
> tool to generate PATH and define macro in BuildOptions or tools_def.
> 
> Note:
> 1. Replication build need many effort: 1) address the pdb path, 2) address the
> timestamp, etc
> 2. This change is not target for resolving all issue in replication build
> 3. I think it is a small step toward space even though it haven't fix every 
> thing.
> 
> Thank
> Guomin
> 
> > -Original Message-
> > From: devel@edk2.groups.io  On Behalf Of
> > gaoliming
> > Sent: Wednesday, April 13, 2022 9:03 AM
> > To: Jiang, Guomin ; devel@edk2.groups.io
> > Cc: Kinney, Michael D ; Liu, Zhiguang
> > 
> > Subject: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> > DEBUG_FILE_PATH to specify debug file path.
> >
> > Guomin:
> >   Can you introduce DEBUG_FILE_PATH usage? If the developer wants to
> > enable this feature, how configure DEBUG_FILE_PATH?
> >
> > Thanks
> > Liming
> > > -邮件原件-
> > > 发件人: Guomin Jiang 
> > > 发送时间: 2022年4月12日 18:25
> > > 收件人: devel@edk2.groups.io
> > > 抄送: Michael D Kinney ; Liming Gao
> > > ; Zhiguang Liu 
> > > 主题: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify
> > > debug file path.
> > >
> > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3840
> > >
> > > Use DEBUG_FILE_PATH to control ASSERT path
> > >
> > > Motivation and Goal:
> > > 1. Make replication build more easy and less toolchain dependency 2.
> > > Consume the ASSERT string easy for downstream 3. Make code more
> clear
> > >
> > > Cc: Michael D Kinney 
> > > Cc: Liming Gao 
> > > Cc: Zhiguang Liu 
> > > Signed-off-by: Guomin Jiang 
> > > ---
> > >  MdePkg/Include/Library/DebugLib.h | 34
> > > +--
> > >  1 file changed, 23 insertions(+), 11 deletions(-)
> > >
> > > diff --git a/MdePkg/Include/Library/DebugLib.h
> > > b/MdePkg/Include/Library/DebugLib.h
> > > index 8d3d08638d73..a76a268a00b6 100644
> > > --- a/MdePkg/Include/Library/DebugLib.h
> > > +++ b/MdePkg/Include/Library/DebugLib.h
> > > @@ -8,7 +8,7 @@
> > >of size reduction when compiler optimization is disabled. If
> > > MDEPKG_NDEBUG is
> > >defined, then debug and assert related macros wrapped by it are the
> > > NULL implementations.
> > >
> > > -Copyright (c) 2006 - 2020, Intel Corporation. All rights
> > > reserved.
> > > +Copyright (c) 2006 - 2022, Intel Corporation. All rights
> > > +reserved.
> > >  SPDX-License-Identifier: BSD-2-Clause-Patent
> > >
> > >  **/
> > > @@ -85,6 +85,26 @@ SPDX-License

Re: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify debug file path.

2022-04-12 Thread Guomin Jiang
Hi Liming,

Below is the detail why need this change. If you only care usage. Please jump 
to "How to use it" directly.

Why need:
1. Replication build is not new, you can refer https://reproducible-builds.org 
for detail
2. The benefit is that 1) make sure the same commit generate same binary so we 
can sure that it is not modified by anyone 2) store the binary in the repo 
without concern of different binary with same code.

What's barrier in EDK2 implement?
1. Very depend on Toolchain(for example VS, GCC, CLANG). Different toolchain 
have different feature set and different toolchain version have different 
feature set.
2. Deploy new toolchain need big effort, include but not limit deploy it in CI 
CD system, update toolchain, size concern, feature change, etc

What's the change:
1. The change want to address one issue that we encounter in replication build: 
the ASSERT in EDK2 will be different in different environment. For example: 
file path, back slash or forward slash, etc

How to use it:
1. If you want to keep current ASSERT string format. No action is required and 
the change keep back compatible
2. If you want to customize the ASSERT string format. You can use additional 
tool to generate PATH and define macro in BuildOptions or tools_def.

Note:
1. Replication build need many effort: 1) address the pdb path, 2) address the 
timestamp, etc
2. This change is not target for resolving all issue in replication build
3. I think it is a small step toward space even though it haven't fix every 
thing.

Thank
Guomin

> -Original Message-
> From: devel@edk2.groups.io  On Behalf Of
> gaoliming
> Sent: Wednesday, April 13, 2022 9:03 AM
> To: Jiang, Guomin ; devel@edk2.groups.io
> Cc: Kinney, Michael D ; Liu, Zhiguang
> 
> Subject: [edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use
> DEBUG_FILE_PATH to specify debug file path.
> 
> Guomin:
>   Can you introduce DEBUG_FILE_PATH usage? If the developer wants to
> enable this feature, how configure DEBUG_FILE_PATH?
> 
> Thanks
> Liming
> > -邮件原件-
> > 发件人: Guomin Jiang 
> > 发送时间: 2022年4月12日 18:25
> > 收件人: devel@edk2.groups.io
> > 抄送: Michael D Kinney ; Liming Gao
> > ; Zhiguang Liu 
> > 主题: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify
> > debug file path.
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3840
> >
> > Use DEBUG_FILE_PATH to control ASSERT path
> >
> > Motivation and Goal:
> > 1. Make replication build more easy and less toolchain dependency 2.
> > Consume the ASSERT string easy for downstream 3. Make code more clear
> >
> > Cc: Michael D Kinney 
> > Cc: Liming Gao 
> > Cc: Zhiguang Liu 
> > Signed-off-by: Guomin Jiang 
> > ---
> >  MdePkg/Include/Library/DebugLib.h | 34
> > +--
> >  1 file changed, 23 insertions(+), 11 deletions(-)
> >
> > diff --git a/MdePkg/Include/Library/DebugLib.h
> > b/MdePkg/Include/Library/DebugLib.h
> > index 8d3d08638d73..a76a268a00b6 100644
> > --- a/MdePkg/Include/Library/DebugLib.h
> > +++ b/MdePkg/Include/Library/DebugLib.h
> > @@ -8,7 +8,7 @@
> >of size reduction when compiler optimization is disabled. If
> > MDEPKG_NDEBUG is
> >defined, then debug and assert related macros wrapped by it are the
> > NULL implementations.
> >
> > -Copyright (c) 2006 - 2020, Intel Corporation. All rights
> > reserved.
> > +Copyright (c) 2006 - 2022, Intel Corporation. All rights
> > +reserved.
> >  SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> >  **/
> > @@ -85,6 +85,26 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> > #define DEBUG_LINE_NUMBER  __LINE__  #endif
> >
> > +//
> > +// Source file path.
> > +// Default is use the __FILE__ macro value provided by compiler. The
> > __FILE__
> > +// mapping can be overriden by predefining DEBUG_FILE_PATH // //
> > +Defining DEBUG_FILE_PATH to a fixed value is useful when comparing
> > builds
> > +// across machine or configuration with different slash or path file.
> > +//
> > +#ifndef DEBUG_FILE_PATH
> > +#define DEBUG_FILE_PATH  __FILE__
> > +#endif
> > +
> > +//
> > +// Use below override to keep CLANG specific behavior // #if defined
> > +(__clang__) && defined (__FILE_NAME__)
> > +  #undef DEBUG_FILE_PATH
> > +#define DEBUG_FILE_PATH  __FILE_NAME__ #endif
> > +
> >  /**
> >Macro that converts a Boolean expression to a Null-terminated ASCII
> > string.
> >
> > @@ -337,17 +357,9 @@ UnitTestDebugAssert (
> >IN CONST CHAR8  *Description
> >);
> >
> > -  #if defined (__clang__) &

[edk2-devel] 回复: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify debug file path.

2022-04-12 Thread gaoliming
Guomin:
  Can you introduce DEBUG_FILE_PATH usage? If the developer wants to enable
this feature, how configure DEBUG_FILE_PATH?

Thanks
Liming
> -邮件原件-
> 发件人: Guomin Jiang 
> 发送时间: 2022年4月12日 18:25
> 收件人: devel@edk2.groups.io
> 抄送: Michael D Kinney ; Liming Gao
> ; Zhiguang Liu 
> 主题: [PATCH v2 1/1] MdePkg/Include: Use DEBUG_FILE_PATH to specify
> debug file path.
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3840
> 
> Use DEBUG_FILE_PATH to control ASSERT path
> 
> Motivation and Goal:
> 1. Make replication build more easy and less toolchain dependency
> 2. Consume the ASSERT string easy for downstream
> 3. Make code more clear
> 
> Cc: Michael D Kinney 
> Cc: Liming Gao 
> Cc: Zhiguang Liu 
> Signed-off-by: Guomin Jiang 
> ---
>  MdePkg/Include/Library/DebugLib.h | 34 +--
>  1 file changed, 23 insertions(+), 11 deletions(-)
> 
> diff --git a/MdePkg/Include/Library/DebugLib.h
> b/MdePkg/Include/Library/DebugLib.h
> index 8d3d08638d73..a76a268a00b6 100644
> --- a/MdePkg/Include/Library/DebugLib.h
> +++ b/MdePkg/Include/Library/DebugLib.h
> @@ -8,7 +8,7 @@
>of size reduction when compiler optimization is disabled. If
> MDEPKG_NDEBUG is
>defined, then debug and assert related macros wrapped by it are the
> NULL implementations.
> 
> -Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.
> +Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -85,6 +85,26 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>  #define DEBUG_LINE_NUMBER  __LINE__
>  #endif
> 
> +//
> +// Source file path.
> +// Default is use the __FILE__ macro value provided by compiler. The
> __FILE__
> +// mapping can be overriden by predefining DEBUG_FILE_PATH
> +//
> +// Defining DEBUG_FILE_PATH to a fixed value is useful when comparing
> builds
> +// across machine or configuration with different slash or path file.
> +//
> +#ifndef DEBUG_FILE_PATH
> +#define DEBUG_FILE_PATH  __FILE__
> +#endif
> +
> +//
> +// Use below override to keep CLANG specific behavior
> +//
> +#if defined (__clang__) && defined (__FILE_NAME__)
> +  #undef DEBUG_FILE_PATH
> +#define DEBUG_FILE_PATH  __FILE_NAME__
> +#endif
> +
>  /**
>Macro that converts a Boolean expression to a Null-terminated ASCII
> string.
> 
> @@ -337,17 +357,9 @@ UnitTestDebugAssert (
>IN CONST CHAR8  *Description
>);
> 
> -  #if defined (__clang__) && defined (__FILE_NAME__)
> -#define _ASSERT(Expression)  UnitTestDebugAssert (__FILE_NAME__,
> DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
> -  #else
> -#define _ASSERT(Expression)  UnitTestDebugAssert (__FILE__,
> DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
> -  #endif
> +#define _ASSERT(Expression)  UnitTestDebugAssert (DEBUG_FILE_PATH,
> DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
>  #else
> -  #if defined (__clang__) && defined (__FILE_NAME__)
> -#define _ASSERT(Expression)  DebugAssert (__FILE_NAME__,
> DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
> -  #else
> -#define _ASSERT(Expression)  DebugAssert (__FILE__,
> DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
> -  #endif
> +#define _ASSERT(Expression)  DebugAssert (DEBUG_FILE_PATH,
> DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
>  #endif
> 
>  /**
> --
> 2.35.1.windows.2





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#88823): https://edk2.groups.io/g/devel/message/88823
Mute This Topic: https://groups.io/mt/90431898/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-