> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> Laszlo Ersek
> Sent: Wednesday, September 18, 2019 3:49 AM
> To: edk2-devel-groups-io
> Cc: Achin Gupta; Andrew Fish; Anthony Perard; Ard Biesheuvel; You,
> Benjamin; Zhang, Chao B; Bi, Dandan; David Woodhouse; Dong, Eric; Dong,
> Guo; Wu, Hao A; Carsey, Jaben; Wang, Jian J; Wu, Jiaxin; Yao, Jiewen; Justen,
> Jordan L; Julien Grall; Leif Lindholm; Gao, Liming; Ma, Maurice; Kinney,
> Michael D; Ni, Ray; Fu, Siyuan; Supreeth Venkatesh; Gao, Zhichao
> Subject: [edk2-devel] [PATCH 00/35] edk2: clean up the usage of
> standardized (VOID*) typedefs
> 
> Repository: https://github.com/lersek/edk2.git
> Branch:     voidptr
> 
> The UEFI / PI / Shell specifications define a number of standard types
> as pointers to VOID. This is arguably a design mistake; those types
> should have been pointers to distinct incomplete union or structure
> types. Here's why:
> 
> Roughly paraphrasing the constraints from ISO C99 "6.5.16.1 Simple
> assignment" and "6.5.4 Cast operators", any pointer-to-object type
> converts implicitly to, and from, pointer-to-void, provided const /
> volatile qualifications are not relaxed. Such implicit conversions
> prevent compilers from catching at least the following two kinds of
> coding mistakes:
> 
> - mixing up one type with another (for example, EFI_HANDLE with
>   EFI_EVENT),
> 
> - getting the depth of indirection wrong (for example, mixing up
>   (EFI_HANDLE*) with EFI_HANDLE).
> 
> This series first separates these standard types from each other, in the
> first patch, which is *not* being proposed for merging. This unmasks a
> number of warts (semantic issues, or actual bugs) in the source code, in
> the form of build breakages. The rest of the series works through those
> breakages, cleaning and fixing the code.
> 
> Every DSC file in the edk2 tree was built for at least one of the NOOPT,
> DEBUG, RELEASE targets (NOOPT being preferred), with the GCC48 toolchain
> (for IA32 / X64) and the GCC5 toolchain (for ARM / AARCH64). Of course,
> the build arches were restricted to the SUPPORTED_ARCHITECTURES stated
> in the individual DSC files.
> 
> There were two exceptions to the above rule: DynamicTablesPkg was only
> build-tested with AARCH64 (despite its SUPPORTED_ARCHITECTURES), given
> that 32-bit ARM has no ACPI bindings. StandaloneMmPkg too was only
> build-tested with AARCH64; it doesn't actually support IA32/X64 yet.
> 
> Regarding boot & runtime tests, ArmVirtQemu on AARCH64 was tested with
> booting to the OS (RHEL7). Furthermore, I exercised OVMF with my usual
> boot and S3 tests, covering IA32, IA32X64, and X64. Finally, some other
> individual tests (noted per patch) were done with OVMF.
> 
> Cc: Achin Gupta <achin.gu...@arm.com>
> Cc: Andrew Fish <af...@apple.com>
> Cc: Anthony Perard <anthony.per...@citrix.com>
> Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
> Cc: Benjamin You <benjamin....@intel.com>
> Cc: Chao Zhang <chao.b.zh...@intel.com>
> Cc: Dandan Bi <dandan...@intel.com>
> Cc: David Woodhouse <dw...@infradead.org>
> Cc: Eric Dong <eric.d...@intel.com>
> Cc: Guo Dong <guo.d...@intel.com>
> Cc: Hao A Wu <hao.a...@intel.com>
> Cc: Jaben Carsey <jaben.car...@intel.com>
> Cc: Jian J Wang <jian.j.w...@intel.com>
> Cc: Jian Wang <jian.j.w...@intel.com>
> Cc: Jiaxin Wu <jiaxin...@intel.com>
> Cc: Jiewen Yao <jiewen....@intel.com>
> Cc: Jordan Justen <jordan.l.jus...@intel.com>
> Cc: Julien Grall <julien.gr...@arm.com>
> Cc: Leif Lindholm <leif.lindh...@linaro.org>
> Cc: Liming Gao <liming....@intel.com>
> Cc: Maurice Ma <maurice...@intel.com>
> Cc: Michael D Kinney <michael.d.kin...@intel.com>
> Cc: Ray Ni <ray...@intel.com>
> Cc: Siyuan Fu <siyuan...@intel.com>
> Cc: Supreeth Venkatesh <supreeth.venkat...@arm.com>
> Cc: Zhichao Gao <zhichao....@intel.com>
> 
> Thanks
> Laszlo
> 
> Laszlo Ersek (35):
>   DO NOT APPLY: edk2: turn standard handle types into pointers to
>     non-VOID
>   EmbeddedPkg: add missing EFIAPI calling convention specifiers
>   EmbeddedPkg/AndroidFastbootTransportTcpDxe: fix DestroyChild() call
>   EmbeddedPkg/Universal/MmcDxe: "fix" CloseProtocol() call in
>     BindingStop()
>   EmulatorPkg/DxeTimerLib: drop superfluous cast
>   EmulatorPkg: stop abusing EFI_HANDLE for keystroke notify registration
>   MdeModulePkg: fix cast in GetModuleInfoFromHandle() calls
>   MdeModulePkg/UefiHiiLib: stop using EFI_HANDLE in place of
>     EFI_HII_HANDLE
>   MdeModulePkg: stop abusing EFI_EVENT for protocol notify registration
>   MdeModulePkg/PlatformVarCleanupLib: fix HiiConstructConfigHdr() call
>   MdeModulePkg: document workaround for EFI_RUNTIME_EVENT_ENTRY PI
> spec
>     bug
>   MdeModulePkg: stop abusing EFI_HANDLE for keystroke notify
>     registration
>   MdeModulePkg: PEI Core: clean up "AprioriFile" handling in
>     FindFileEx()
>   MdeModulePkg: fix UninstallMultipleProtocolInterfaces() calls
>   MdeModulePkg/PiSmmCore: make type punning consistent
>   MdeModulePkg/S3SaveState: cast Position for S3BootScriptLib explicitly


For the patches made to MdeModulePkg (patch 7~16),
Reviewed-by: Hao A Wu <hao.a...@intel.com>

Best Regards,
Hao Wu


>   MdePkg/DxeServicesLib: remove bogus cast
>   NetworkPkg/DxeNetLib: fix type typo in NetLibGetMacAddress()
>   NetworkPkg: fix CloseProtocol & UninstallMultipleProtocolInterfaces
>     calls
>   NetworkPkg/Ip4Dxe: fix NetLibDestroyServiceChild() call
>   NetworkPkg/TcpDxe: fix SockFreeFoo() parameter list
>   OvmfPkg/XenBusDxe: fix UninstallMultipleProtocolInterfaces() call
>   OvmfPkg/VirtioNetDxe: fix SignalEvent() call
>   OvmfPkg/PlatformDxe: fix EFI_HII_HANDLE parameters of internal
>     functions
>   OvmfPkg/VideoDxe: document EFI_EDID_OVERRIDE_PROTOCOL.GetEdid()
> call
>   SecurityPkg: fix UninstallMultipleProtocolInterfaces() calls
>   SecurityPkg: stop abusing EFI_EVENT for protocol notify registration
>   ShellPkg/UefiShellDriver1CommandsLib: fix parameter list typo
>   ShellPkg: stop using EFI_HANDLE in place of EFI_HII_HANDLE
>   ShellPkg: stop taking EFI_HANDLE in place of SHELL_FILE_HANDLE
>   ShellPkg/UefiShellDebug1CommandsLib: fix ShellCloseFile() call
>   ShellPkg/UefiShellLib: clarify workaround for unfixable EdkShell bug
>   StandaloneMmPkg/Core: stop abusing EFI_HANDLE for FwVolHeader
> tracking
>   UefiPayloadPkg/BlSupportPei: fix MMCONFIG assignment from XSDT
>   UefiPayloadPkg/BlSupportDxe: fix ReserveResourceInGcd() calls
> 
> 
> EmbeddedPkg/Drivers/AndroidFastbootTransportTcpDxe/FastbootTranspor
> tTcp.c      |  2 +-
>  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.c                          
>   |  1
> +
>  EmbeddedPkg/Drivers/Lan9118Dxe/Lan9118Dxe.c                                  
>   |  1 +
>  EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132.h                             
>   | 32
> ++++++--
>  EmbeddedPkg/Drivers/SataSiI3132Dxe/SiI3132AtaPassThru.c                      
>   |  8
> ++
>  EmbeddedPkg/GdbStub/GdbStubInternal.h                                        
>   |  9 +++
>  EmbeddedPkg/MetronomeDxe/Metronome.c                                         
>   |  1 +
>  EmbeddedPkg/Universal/MmcDxe/Mmc.c                                           
>   |  5 +-
>  EmulatorPkg/EmuGopDxe/GopInput.c                                             
>   |  4 +-
>  EmulatorPkg/Library/DxeTimerLib/DxeTimerLib.c                                
>   |  2 +-
>  MdeModulePkg/Bus/I2c/I2cDxe/I2cBus.c                                         
>   |  2 +-
>  MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c                              
>   |  2
> +-
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciDeviceSupport.c                            
>   |  6
> +-
>  MdeModulePkg/Bus/Pci/PciSioSerialDxe/Serial.c                                
>   |  2 +-
>  MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c                                        
>   |  2 +-
>  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c                                   
>   |  2 +-
>  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassImpl.c
> |  2 +-
>  MdeModulePkg/Core/Dxe/Event/Event.c                                          
>   |  8 ++
>  MdeModulePkg/Core/Dxe/Event/Event.h                                          
>   |  2 +-
>  MdeModulePkg/Core/Dxe/Hand/Handle.h                                          
>   |  2 +-
>  MdeModulePkg/Core/Pei/FwVol/FwVol.c                                          
>   |  2 +-
>  MdeModulePkg/Core/Pei/FwVol/FwVol.h                                          
>   |  2 +-
>  MdeModulePkg/Core/PiSmmCore/PiSmmCore.h                                      
>   |  2 +-
>  MdeModulePkg/Core/PiSmmCore/Smi.c                                            
>   |  8 +-
>  MdeModulePkg/Core/RuntimeDxe/Runtime.c                                       
>   | 10 ++-
> 
> MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
> | 12 +--
>  MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c
> |  6 +-
> 
> MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLi
> b.c             |  8 +-
>  MdeModulePkg/Library/UefiHiiLib/HiiString.c                                  
>   |  4 +-
>  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.h                           
>   |  2
> +-
>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c                     
>   |
> 4 +-
>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c
> |  4 +-
>  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c
> |  2 +-
>  MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c                        
>   |
> 4 +-
> 
> MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.c
> |  2 +-
> 
> MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.
> c           |  2 +-
>  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h                          
>   |  2
> +-
>  MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.c                         
>   |  2
> +-
>  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
> |  2 +-
>  MdePkg/Include/Pi/PiPeiCis.h                                                 
>   |  6 +-
>  MdePkg/Include/Protocol/AcpiSystemDescriptionTable.h                         
>   |  3
> +-
>  MdePkg/Include/Protocol/Bis.h                                                
>   |  3 +-
>  MdePkg/Include/Protocol/Eap.h                                                
>   |  3 +-
>  MdePkg/Include/Protocol/HiiFont.h                                            
>   |  3 +-
>  MdePkg/Include/Protocol/MmMp.h                                               
>   |  3 +-
>  MdePkg/Include/Protocol/S3SaveState.h                                        
>   |  2 +-
>  MdePkg/Include/Protocol/Shell.h                                              
>   |  3 +-
>  MdePkg/Include/Protocol/UserManager.h                                        
>   |  9 ++-
>  MdePkg/Include/Uefi/UefiBaseType.h                                           
>   |  6 +-
>  MdePkg/Include/Uefi/UefiInternalFormRepresentation.h                         
>   |  3
> +-
>  MdePkg/Library/DxeServicesLib/DxeServicesLib.c                               
>   |  2 +-
>  NetworkPkg/DnsDxe/DnsDriver.c                                                
>   |  4 +-
>  NetworkPkg/IScsiDxe/IScsiConfig.c                                            
>   |  2 +-
>  NetworkPkg/Ip4Dxe/Ip4Driver.c                                                
>   |  2 +-
>  NetworkPkg/Ip4Dxe/Ip4If.c                                                    
>   |  4 +-
>  NetworkPkg/Ip6Dxe/Ip6Driver.c                                                
>   |  2 +-
>  NetworkPkg/Library/DxeNetLib/DxeNetLib.c                                     
>   |  2 +-
>  NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c                                          
>   |  2 +-
>  NetworkPkg/TcpDxe/SockImpl.c                                                 
>   |  4 +-
>  NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c                               
>   |  2 +-
>  OvmfPkg/Csm/BiosThunk/VideoDxe/BiosVideo.c                                   
>   |  6 +-
>  OvmfPkg/PlatformDxe/Platform.c                                               
>   |  4 +-
>  OvmfPkg/VirtioNetDxe/Events.c                                                
>   |  2 +-
>  OvmfPkg/XenBusDxe/XenBus.c                                                   
>   |  2 +-
>  SecurityPkg/HddPassword/HddPasswordDxe.c                                     
>   |  2 +-
>  SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDriver.c                                
>   |  2 +-
>  SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDriver.c                               
>   |  2 +-
> 
> SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfi
> gDriver.c |  2 +-
>  ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c                                
>   |
> 6 +-
>  ShellPkg/DynamicCommand/DpDynamicCommand/Dp.h                                
>   |
> 4 +-
>  ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c                            
>   |
> 6 +-
>  ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.h                            
>   |
> 4 +-
>  ShellPkg/Include/Library/ShellCommandLib.h                                   
>   |  2 +-
>  ShellPkg/Include/Library/ShellLib.h                                          
>   |  4 +-
>  ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c                 
>   |  2
> +-
>  ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.c
> |  2 +-
>  ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> |  2 +-
>  ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.h
> |  2 +-
>  ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c                
>   |
> 2 +-
> 
> ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman
> dsLib.c       |  2 +-
> 
> ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman
> dsLib.h       |  2 +-
>  ShellPkg/Library/UefiShellDriver1CommandsLib/Connect.c                       
>   |  4
> +-
> 
> ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1Command
> sLib.c     |  2 +-
> 
> ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1Command
> sLib.h     |  2 +-
> 
> ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsL
> ib.c       |  2 +-
> 
> ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsL
> ib.h       |  2 +-
>  ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c                             
>   |  2 +-
> 
> ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsL
> ib.c       |  2 +-
> 
> ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsL
> ib.h       |  2 +-
>  ShellPkg/Library/UefiShellLevel3CommandsLib/Touch.c                          
>   |  2 +-
> 
> ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsL
> ib.c       |  2 +-
> 
> ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsL
> ib.h       |  2 +-
>  ShellPkg/Library/UefiShellLib/UefiShellLib.c                                 
>   | 26 ++++++-
> 
> ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1Com
> mandsLib.c   |  2 +-
> 
> ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1Com
> mandsLib.h   |  2 +-
> 
> ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2Com
> mandsLib.c   |  2 +-
> 
> ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2Com
> mandsLib.h   |  2 +-
>  StandaloneMmPkg/Core/Dispatcher.c                                            
>   | 80
> +++++++++++---------
>  StandaloneMmPkg/Core/FwVol.c                                                 
>   | 16 ++--
>  StandaloneMmPkg/Core/StandaloneMmCore.h                                      
>   |  4 +-
>  UefiPayloadPkg/BlSupportDxe/BlSupportDxe.c                                   
>   |  4 +-
>  UefiPayloadPkg/BlSupportPei/BlSupportPei.c                                   
>   | 19 +++--
>  102 files changed, 294 insertions(+), 194 deletions(-)
> 
> --
> 2.19.1.3.g30247aa5d201
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> 
> View/Reply Online (#47387):
> https://edk2.groups.io/g/devel/message/47387
> Mute This Topic: https://groups.io/mt/34180197/1768737
> Group Owner: devel+ow...@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub  [hao.a...@intel.com]
> -=-=-=-=-=-=


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

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

Reply via email to