On 04/23/19 04:35, Gao, Zhichao wrote:
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1740
> 
> The DebugLib instances of DebugPortProtocol, ConOut and StdErr
> use a global variable "mExitBootServicesEvent" which is in
> conflict with the same variable in StatusCodeHandlerRuntimeDxe.inf.
> That would cause a build error through GCC5. So change the
> name to the "mDebugLibExitBootServicesEvent".
> 
> Cc: Michael D Kinney <michael.d.kin...@intel.com>
> Cc: Liming Gao <liming....@intel.com>
> Cc: Dandan Bi <dandan...@intel.com>
> 
> Zhichao Gao (3):
>   MdePkg/UefiDebugLibConOut: Change the global variable name
>   MdePkg/UefiDebugLibStdErr: Change the global variable name
>   MdePkg/UefiDebugLibDebugPortProtocol: Change the global variable name
> 
>  MdePkg/Library/UefiDebugLibConOut/DebugLibConstructor.c       | 4 ++--
>  .../UefiDebugLibDebugPortProtocol/DebugLibConstructor.c       | 4 ++--
>  MdePkg/Library/UefiDebugLibStdErr/DebugLibConstructor.c       | 4 ++--
>  3 files changed, 6 insertions(+), 6 deletions(-)
> 

The proper solution for this kind of error is to make as many as possible 
instances of "mExitBootServicesEvent" in edk2 STATIC.

See for example commit 7b13510f2a0a ("MdeModulePkg/BootMaintenanceManagerUiLib: 
hide library-internal symbol", 2016-05-17).

In particular, this patch renames three instances of mExitBootServicesEvent, 
but there are more:

- 
IntelFrameworkModulePkg/Library/SmmRuntimeDxeReportStatusCodeLibFramework/SmmRuntimeDxeSupport.c
- 
IntelFrameworkModulePkg/Universal/StatusCode/DatahubStatusCodeHandlerDxe/DatahubStatusCodeHandlerDxe.c
- IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.c
- 
MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c
- 
MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.c

Based on a brief investigation, it seems like the "STATIC" approach should work 
for all 8 (eight) files above. But, minimally, STATIC should be employed with 
library instances.

I seem to remember that there used to be debugging issues with Visual Studio if 
global variables were made STATIC -- but I think that only applied to old (no 
longer supported by edk2?) Visual Studio versions. If you can't use STATIC 
here, please at least explain why, in the commit messages.

Thanks,
Laszlo

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#39417): https://edk2.groups.io/g/devel/message/39417
Mute This Topic: https://groups.io/mt/31305234/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to