From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=SIdbsN8U; spf=pass (domain: apple.com, ip: 17.171.2.68, mailfrom: afish@apple.com) Received: from ma1-aaemail-dr-lapp02.apple.com (ma1-aaemail-dr-lapp02.apple.com [17.171.2.68]) by groups.io with SMTP; Tue, 17 Sep 2019 14:07:26 -0700 Received: from pps.filterd (ma1-aaemail-dr-lapp02.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp02.apple.com (8.16.0.27/8.16.0.27) with SMTP id x8HL1wmj053874; Tue, 17 Sep 2019 14:07:18 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=sender : content-type : mime-version : subject : from : in-reply-to : date : cc : content-transfer-encoding : message-id : references : to; s=20180706; bh=BuUL2CDRcEwAD9zcQV14w38L6ZTxiIAApu7lF1AXBQ8=; b=SIdbsN8UoRR3ZOi9NghbQEJ/gw1FpXSinFx6zLL29Eool0WipMSWZyerxlII3xaBG+Xv j+66HGEl81dfmpeXE42bYq4b2Edc5psmOWnmVx93EL8jfdvIqjVinOyZka8Hu5E/muDc RkZemhEafIkW/tcEowz/9ehkRD9Ves4C1fvp0E66ODvTmkybG68BUuIvpsyRuBAV1tYQ HnuhRlJm+g3BcL1W+OtsN2pc3q/z/fO2nxmgLH/ZXWT/3M4ABcOhIBPC/MjqTpZpv/Vw AYHTR/ftBohyDh6TJXBeIZNNLRFyuKDT5lJMlOa9Enywcbm/Nk5pFSnIOIV8H1Q7aQ0Q Nw== Received: from mr2-mtap-s03.rno.apple.com (mr2-mtap-s03.rno.apple.com [17.179.226.135]) by ma1-aaemail-dr-lapp02.apple.com with ESMTP id 2v0vvtgvw8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 17 Sep 2019 14:07:18 -0700 Received: from nwk-mmpp-sz10.apple.com (nwk-mmpp-sz10.apple.com [17.128.115.122]) by mr2-mtap-s03.rno.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) with ESMTPS id <0PXZ00A5DUO5FN00@mr2-mtap-s03.rno.apple.com>; Tue, 17 Sep 2019 14:07:17 -0700 (PDT) Received: from process_milters-daemon.nwk-mmpp-sz10.apple.com by nwk-mmpp-sz10.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) id <0PXZ00600UMSOL00@nwk-mmpp-sz10.apple.com>; Tue, 17 Sep 2019 14:07:17 -0700 (PDT) X-Va-A: X-Va-T-CD: ea1bec8879b9bcbea0419a42a7adbdb1 X-Va-E-CD: 13e00072960b2d695dbad921c407f688 X-Va-R-CD: f08005d6ce5b4baa6c3b27af73d4b2fc X-Va-CD: 0 X-Va-ID: 2718a847-e6ea-4b84-9980-578e7a1654f9 X-V-A: X-V-T-CD: ea1bec8879b9bcbea0419a42a7adbdb1 X-V-E-CD: 13e00072960b2d695dbad921c407f688 X-V-R-CD: f08005d6ce5b4baa6c3b27af73d4b2fc X-V-CD: 0 X-V-ID: 05940b81-2f9b-44fa-b484-8e091687e604 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-09-17_11:,, signatures=0 Received: from [17.235.14.123] (unknown [17.235.14.123]) by nwk-mmpp-sz10.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) with ESMTPSA id <0PXZ001XSUO1ZJ80@nwk-mmpp-sz10.apple.com>; Tue, 17 Sep 2019 14:07:16 -0700 (PDT) Sender: afish@apple.com MIME-version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Subject: Re: [edk2-devel] [PATCH 01/35] DO NOT APPLY: edk2: turn standard handle types into pointers to non-VOID From: "Andrew Fish" In-reply-to: <734D49CCEBEEF84792F5B80ED585239D5C2E3DBB@SHSMSX104.ccr.corp.intel.com> Date: Tue, 17 Sep 2019 14:07:07 -0700 Cc: "lersek@redhat.com" , Achin Gupta , 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" , Jordan Justen , Julien Grall , Leif Lindholm , "Gao, Liming" , "Ma, Maurice" , Mike Kinney , "Fu, Siyuan" , Supreeth Venkatesh , "Gao, Zhichao" Message-id: References: <20190917194935.24322-1-lersek@redhat.com> <20190917194935.24322-2-lersek@redhat.com> <734D49CCEBEEF84792F5B80ED585239D5C2E3BE1@SHSMSX104.ccr.corp.intel.com> <1FFFA19B-454C-4B46-9DD0-339BB8011838@apple.com> <734D49CCEBEEF84792F5B80ED585239D5C2E3DBB@SHSMSX104.ccr.corp.intel.com> To: devel@edk2.groups.io, ray.ni@intel.com X-Mailer: Apple Mail (2.3445.104.11) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-09-17_11:,, signatures=0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: quoted-printable > On Sep 17, 2019, at 1:28 PM, Ni, Ray wrote: >=20 > Andrew, > I agree. Your solution is like "use strict;" in Perl language. (https://= perldoc.perl.org/strict.html) > Maybe "STRICT_UEFI_TYPES" without "ER". I don't see any strict in today'= s code. =F0=9F=98=8A >=20 Ray, I'm flexible on the name, I was just trying to give a good example of what= I was suggesting.=20 Thanks, Andrew Fish > Thanks, > Ray >=20 >> -----Original Message----- >> From: devel@edk2.groups.io On Behalf Of Andrew F= ish via Groups.Io >> Sent: Tuesday, September 17, 2019 1:22 PM >> To: Ni, Ray >> Cc: devel@edk2.groups.io; lersek@redhat.com; Achin Gupta ; Anthony Perard >> ; Ard Biesheuvel = ; You, Benjamin ; >> Zhang, Chao B ; Bi, Dandan ; David Woodhouse >> ; Dong, Eric ; Dong, Guo ; Wu, Hao A >> ; Carsey, Jaben ; Wang, Jia= n J ; Wu, Jiaxin >> ; Yao, Jiewen ; Justen, Jord= an L ; Julien Grall >> ; Leif Lindholm ; Gao, = Liming ; Ma, Maurice >> ; Kinney, Michael D ;= Fu, Siyuan ; Supreeth >> Venkatesh ; Gao, Zhichao >> Subject: Re: [edk2-devel] [PATCH 01/35] DO NOT APPLY: edk2: turn standa= rd handle types into pointers to non-VOID >>=20 >>=20 >>=20 >>> On Sep 17, 2019, at 1:06 PM, Ni, Ray wrote: >>>=20 >>> Laszlo, >>> Thank you very much for this work. >>> They are quite helpful to detect potential issues. >>>=20 >>> But without this specific patch being checked in, future break will st= ill happen. >>> I don't want it to be checked in ASAP because I know that there are qu= ite a lot of close source code that may get build >> break due to this change. >>> Besides that, what prevent you make the decision to check in the chang= es? >>>=20 >>=20 >> Ray, >>=20 >> I was thinking the same thing. Could we make this an optional feature v= ia a #define? We could always default to the Spec >> Behavior, and new projects could opt into the stricter version. >>=20 >> #ifndef STRICTER_UEFI_TYPES >> typedef VOID *EFI_PEI_FV_HANDLE; >> #else >> struct EFI_PEI_FV_OBJECT; >> typedef struct EFI_PEI_FV_OBJECT *EFI_PEI_FV_HANDLE; >> #endif >>=20 >> Thanks, >>=20 >> Andrew Fish >>=20 >>> Thanks, >>> Ray >>>=20 >>>=20 >>>> -----Original Message----- >>>> From: devel@edk2.groups.io On Behalf Of Laszlo= Ersek >>>> Sent: Tuesday, September 17, 2019 12:49 PM >>>> To: edk2-devel-groups-io >>>> Cc: Achin Gupta ; Andrew Fish ;= Anthony Perard >> ; >>>> Ard Biesheuvel ; You, Benjamin ; Zhang, Chao B >>>> ; Bi, Dandan ; David Woo= dhouse ; Dong, >> Eric >>>> ; Dong, Guo ; Wu, Hao A ; Carsey, Jaben >>>> ; Wang, Jian J ; Wu, J= iaxin ; Yao, Jiewen >>>> ; Justen, Jordan L ;= Julien Grall ; Leif >> Lindholm >>>> ; Gao, Liming ; Ma, M= aurice ; Kinney, >> Michael >>>> D ; Ni, Ray ; Fu, Siyua= n ; Supreeth Venkatesh >>>> ; Gao, Zhichao >>>> Subject: [edk2-devel] [PATCH 01/35] DO NOT APPLY: edk2: turn standard= handle types into pointers to non-VOID >>>>=20 >>>> Unfortunately, the UEFI / PI / Shell specs define a number of handle = types >>>> as pointers to VOID. This is a design mistake; those types should hav= e >>>> been pointers to incomplete union or structure types. Any >>>> pointer-to-object type converts implicitly to, and from, pointer-to-v= oid, >>>> which prevents compilers from catching at least the following two typ= es of >>>> mistakes: >>>>=20 >>>> - mixing up one handle type with another (for example, EFI_HANDLE wit= h >>>> EFI_EVENT), >>>>=20 >>>> - getting the depth of indirection wrong (for example, mixing up >>>> (EFI_HANDLE*) with EFI_HANDLE). >>>>=20 >>>> In order to root out such mistakes in the edk2 codebase, introduce >>>> incomplete structure types with unique tags, such as: >>>>=20 >>>> struct EFI_FOOBAR_OBJECT; >>>> typedef struct EFI_FOOBAR_OBJECT *EFI_FOOBAR_HANDLE; >>>>=20 >>>> replacing the spec mandated >>>>=20 >>>> typedef VOID *EFI_FOOBAR_HANDLE; >>>>=20 >>>> (For some types, such as: >>>>=20 >>>> - EFI_ACPI_HANDLE, >>>> - EFI_EVENT, >>>> - EFI_FONT_HANDLE, >>>> - EFI_HANDLE, >>>> - EFI_HII_HANDLE, >>>> - EFI_S3_BOOT_SCRIPT_POSITION, >>>> - SHELL_FILE_HANDLE, >>>>=20 >>>> we connect the actual complete type (the internal, implementation-spe= cific >>>> type) to the typedef. Some of these also demonstrate how the code cou= ld >>>> have looked in practice if the specs had used proper opaque (=3Dincom= plete) >>>> types.) >>>>=20 >>>> Then, unleash "build" on the package DSC files. This causes the compi= ler >>>> to warn about incompatible pointer assignments, and to stop the build= . >>>>=20 >>>> The rest of the series addresses the resultant warnings. Each patch >>>> belongs in one of two categories: >>>>=20 >>>> - semantic cleanups (no functional / behavioral changes), >>>> - actual bugfixes. >>>>=20 >>>> As the subject line of this patch states, this specific patch is *not= * >>>> meant to be applied. It is just a "what if" patch that temporarily >>>> isolates the standard types from each other, the way the specs should >>>> have, so that the compiler have more information to work with. >>>>=20 >>>> Cc: Achin Gupta >>>> Cc: Andrew Fish >>>> Cc: Anthony Perard >>>> Cc: Ard Biesheuvel >>>> Cc: Benjamin You >>>> Cc: Chao Zhang >>>> Cc: Dandan Bi >>>> Cc: David Woodhouse >>>> Cc: Eric Dong >>>> Cc: Guo Dong >>>> Cc: Hao A Wu >>>> Cc: Jaben Carsey >>>> Cc: Jian J Wang >>>> Cc: Jian Wang >>>> Cc: Jiaxin Wu >>>> Cc: Jiewen Yao >>>> Cc: Jordan Justen >>>> Cc: Julien Grall >>>> Cc: Leif Lindholm >>>> Cc: Liming Gao >>>> Cc: Maurice Ma >>>> Cc: Michael D Kinney >>>> Cc: Ray Ni >>>> Cc: Siyuan Fu >>>> Cc: Supreeth Venkatesh >>>> Cc: Zhichao Gao >>>> Signed-off-by: Laszlo Ersek >>>> --- >>>> 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 ++- >>>> MdeModulePkg/Core/Dxe/Event/Event.h | 2 +- >>>> MdeModulePkg/Core/Dxe/Hand/Handle.h | 2 +- >>>> MdeModulePkg/Core/PiSmmCore/PiSmmCore.h | 2 +- >>>> MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.h | 2 +- >>>> MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h | 2 +- >>>> StandaloneMmPkg/Core/StandaloneMmCore.h | 2 +- >>>> 17 files changed, 34 insertions(+), 22 deletions(-) >>>>=20 >>>> diff --git a/MdePkg/Include/Pi/PiPeiCis.h b/MdePkg/Include/Pi/PiPeiCi= s.h >>>> index d9d4ed7d413a..3e9e82b62ae9 100644 >>>> --- a/MdePkg/Include/Pi/PiPeiCis.h >>>> +++ b/MdePkg/Include/Pi/PiPeiCis.h >>>> @@ -18,12 +18,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent >>>> /// >>>> /// The handles of EFI FV. >>>> /// >>>> -typedef VOID *EFI_PEI_FV_HANDLE; >>>> +struct EFI_PEI_FV_OBJECT; >>>> +typedef struct EFI_PEI_FV_OBJECT *EFI_PEI_FV_HANDLE; >>>>=20 >>>> /// >>>> /// The handles of EFI FFS. >>>> /// >>>> -typedef VOID *EFI_PEI_FILE_HANDLE; >>>> +struct EFI_PEI_FILE_OBJECT; >>>> +typedef struct EFI_PEI_FILE_OBJECT *EFI_PEI_FILE_HANDLE; >>>>=20 >>>> /// >>>> /// Declare the forward reference data structure for EFI_PEI_SERVICE. >>>> diff --git a/MdePkg/Include/Protocol/AcpiSystemDescriptionTable.h >>>> b/MdePkg/Include/Protocol/AcpiSystemDescriptionTable.h >>>> index a8e0b24c6c8d..8a1863f3e03d 100644 >>>> --- a/MdePkg/Include/Protocol/AcpiSystemDescriptionTable.h >>>> +++ b/MdePkg/Include/Protocol/AcpiSystemDescriptionTable.h >>>> @@ -16,7 +16,8 @@ >>>> { 0xeb97088e, 0xcfdf, 0x49c6, { 0xbe, 0x4b, 0xd9, 0x6, 0xa5, 0xb2, 0= xe, 0x86 }} >>>>=20 >>>> typedef UINT32 EFI_ACPI_TABLE_VERSION; >>>> -typedef VOID *EFI_ACPI_HANDLE; >>>> +struct EFI_ACPI_OBJECT; >>>> +typedef struct EFI_ACPI_OBJECT *EFI_ACPI_HANDLE; >>>>=20 >>>> #define EFI_ACPI_TABLE_VERSION_NONE (1 << 0) >>>> #define EFI_ACPI_TABLE_VERSION_1_0B (1 << 1) >>>> diff --git a/MdePkg/Include/Protocol/Bis.h b/MdePkg/Include/Protocol/= Bis.h >>>> index 2be6718f4bc2..8eca94512d03 100644 >>>> --- a/MdePkg/Include/Protocol/Bis.h >>>> +++ b/MdePkg/Include/Protocol/Bis.h >>>> @@ -37,7 +37,8 @@ typedef struct _EFI_BIS_PROTOCOL EFI_BIS_PROTOCOL; >>>> // >>>> // Basic types >>>> // >>>> -typedef VOID *BIS_APPLICATION_HANDLE; >>>> +struct BIS_APPLICATION_OBJECT; >>>> +typedef struct BIS_APPLICATION_OBJECT *BIS_APPLICATION_HANDLE; >>>> typedef UINT16 BIS_ALG_ID; >>>> typedef UINT32 BIS_CERT_ID; >>>>=20 >>>> diff --git a/MdePkg/Include/Protocol/Eap.h b/MdePkg/Include/Protocol/= Eap.h >>>> index 203d0f40b0dd..06584ef409d0 100644 >>>> --- a/MdePkg/Include/Protocol/Eap.h >>>> +++ b/MdePkg/Include/Protocol/Eap.h >>>> @@ -28,7 +28,8 @@ typedef struct _EFI_EAP_PROTOCOL EFI_EAP_PROTOCOL; >>>> /// Type for the identification number assigned to the Port by the >>>> /// System in which the Port resides. >>>> /// >>>> -typedef VOID * EFI_PORT_HANDLE; >>>> +struct EFI_PORT_OBJECT; >>>> +typedef struct EFI_PORT_OBJECT *EFI_PORT_HANDLE; >>>>=20 >>>> /// >>>> /// EAP Authentication Method Type (RFC 3748) >>>> diff --git a/MdePkg/Include/Protocol/HiiFont.h b/MdePkg/Include/Proto= col/HiiFont.h >>>> index 1f2e321ea4e2..450cad9ada70 100644 >>>> --- a/MdePkg/Include/Protocol/HiiFont.h >>>> +++ b/MdePkg/Include/Protocol/HiiFont.h >>>> @@ -19,8 +19,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent >>>> { 0xe9ca4775, 0x8657, 0x47fc, { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x= 43, 0x24 } } >>>>=20 >>>> typedef struct _EFI_HII_FONT_PROTOCOL EFI_HII_FONT_PROTOCOL; >>>> - >>>> -typedef VOID *EFI_FONT_HANDLE; >>>> +typedef LIST_ENTRY *EFI_FONT_HANDLE; >>>>=20 >>>> /// >>>> /// EFI_HII_OUT_FLAGS. >>>> diff --git a/MdePkg/Include/Protocol/MmMp.h b/MdePkg/Include/Protocol= /MmMp.h >>>> index beace1386cbe..cd4e0db47e08 100644 >>>> --- a/MdePkg/Include/Protocol/MmMp.h >>>> +++ b/MdePkg/Include/Protocol/MmMp.h >>>> @@ -36,7 +36,8 @@ >>>> // >>>> // Completion token >>>> // >>>> -typedef VOID* MM_COMPLETION; >>>> +struct MM_COMPLETION_OBJECT; >>>> +typedef struct MM_COMPLETION_OBJECT* MM_COMPLETION; >>>>=20 >>>> typedef struct { >>>> MM_COMPLETION Completion; >>>> diff --git a/MdePkg/Include/Protocol/S3SaveState.h b/MdePkg/Include/P= rotocol/S3SaveState.h >>>> index c1b8f8b9e08d..235c36be6737 100644 >>>> --- a/MdePkg/Include/Protocol/S3SaveState.h >>>> +++ b/MdePkg/Include/Protocol/S3SaveState.h >>>> @@ -21,7 +21,7 @@ >>>> { 0xe857caf6, 0xc046, 0x45dc, { 0xbe, 0x3f, 0xee, 0x7, 0x65, 0xfb,= 0xa8, 0x87 }} >>>>=20 >>>>=20 >>>> -typedef VOID *EFI_S3_BOOT_SCRIPT_POSITION; >>>> +typedef UINT8 *EFI_S3_BOOT_SCRIPT_POSITION; >>>>=20 >>>> typedef struct _EFI_S3_SAVE_STATE_PROTOCOL EFI_S3_SAVE_STATE_PROTOCO= L; >>>>=20 >>>> diff --git a/MdePkg/Include/Protocol/Shell.h b/MdePkg/Include/Protoco= l/Shell.h >>>> index cfb7878228c5..bf791792b4f2 100644 >>>> --- a/MdePkg/Include/Protocol/Shell.h >>>> +++ b/MdePkg/Include/Protocol/Shell.h >>>> @@ -11,12 +11,13 @@ >>>> #define __EFI_SHELL_PROTOCOL_H__ >>>>=20 >>>> #include >>>> +#include >>>>=20 >>>> #define EFI_SHELL_PROTOCOL_GUID \ >>>> { \ >>>> 0x6302d008, 0x7f9b, 0x4f30, { 0x87, 0xac, 0x60, 0xc9, 0xfe, 0xf5, 0x= da, 0x4e } \ >>>> } >>>> -typedef VOID *SHELL_FILE_HANDLE; >>>> +typedef EFI_FILE_PROTOCOL *SHELL_FILE_HANDLE; >>>>=20 >>>> typedef enum { >>>> /// >>>> diff --git a/MdePkg/Include/Protocol/UserManager.h b/MdePkg/Include/P= rotocol/UserManager.h >>>> index 26ac4955f1ec..9abfcffbeebf 100644 >>>> --- a/MdePkg/Include/Protocol/UserManager.h >>>> +++ b/MdePkg/Include/Protocol/UserManager.h >>>> @@ -24,8 +24,10 @@ >>>> 0xbaf1e6de, 0x209e, 0x4adb, { 0x8d, 0x96, 0xfd, 0x8b, 0x71, 0xf3, = 0xf6, 0x83 } \ >>>> } >>>>=20 >>>> -typedef VOID *EFI_USER_PROFILE_HANDLE; >>>> -typedef VOID *EFI_USER_INFO_HANDLE; >>>> +struct EFI_USER_PROFILE_OBJECT; >>>> +typedef struct EFI_USER_PROFILE_OBJECT *EFI_USER_PROFILE_HANDLE; >>>> +struct EFI_USER_INFO_OBJECT; >>>> +typedef struct EFI_USER_INFO_OBJECT *EFI_USER_INFO_HANDLE; >>>>=20 >>>> /// >>>> /// The attributes of the user profile information. >>>> @@ -157,7 +159,8 @@ typedef CHAR16 *EFI_USER_INFO_CREDENTIAL_PROVIDER= _NAME; >>>> /// Biometric Exchange Formats Framework) specification. >>>> /// >>>> #define EFI_USER_INFO_CBEFF_RECORD 0x0B >>>> -typedef VOID *EFI_USER_INFO_CBEFF; >>>> +struct EFI_USER_INFO_CBEFF_OBJECT; >>>> +typedef struct EFI_USER_INFO_CBEFF_OBJECT *EFI_USER_INFO_CBEFF; >>>> /// >>>> /// Indicates how close of a match the fingerprint must be in order t= o be considered a match. >>>> /// >>>> diff --git a/MdePkg/Include/Uefi/UefiBaseType.h b/MdePkg/Include/Uefi= /UefiBaseType.h >>>> index a62f13dd064f..be5831991b52 100644 >>>> --- a/MdePkg/Include/Uefi/UefiBaseType.h >>>> +++ b/MdePkg/Include/Uefi/UefiBaseType.h >>>> @@ -28,11 +28,13 @@ typedef RETURN_STATUS EFI_STATUS; >>>> /// >>>> /// A collection of related interfaces. >>>> /// >>>> -typedef VOID *EFI_HANDLE; >>>> +struct EFI_OBJECT; >>>> +typedef struct EFI_OBJECT *EFI_HANDLE; >>>> /// >>>> /// Handle to an event structure. >>>> /// >>>> -typedef VOID *EFI_EVENT; >>>> +struct EFI_EVENT_OBJECT; >>>> +typedef struct EFI_EVENT_OBJECT *EFI_EVENT; >>>> /// >>>> /// Task priority level. >>>> /// >>>> diff --git a/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h >>>> b/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h >>>> index 4a1346a599d0..93bf9e9e0f13 100644 >>>> --- a/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h >>>> +++ b/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h >>>> @@ -20,7 +20,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent >>>> /// >>>> /// The following types are currently defined: >>>> /// >>>> -typedef VOID* EFI_HII_HANDLE; >>>> +struct EFI_HII_OBJECT; >>>> +typedef struct EFI_HII_OBJECT* EFI_HII_HANDLE; >>>> typedef CHAR16* EFI_STRING; >>>> typedef UINT16 EFI_IMAGE_ID; >>>> typedef UINT16 EFI_QUESTION_ID; >>>> diff --git a/MdeModulePkg/Core/Dxe/Event/Event.h b/MdeModulePkg/Core/= Dxe/Event/Event.h >>>> index 8141c5003eec..42590cb1dd09 100644 >>>> --- a/MdeModulePkg/Core/Dxe/Event/Event.h >>>> +++ b/MdeModulePkg/Core/Dxe/Event/Event.h >>>> @@ -37,7 +37,7 @@ typedef struct { >>>> } TIMER_EVENT_INFO; >>>>=20 >>>> #define EVENT_SIGNATURE SIGNATURE_32('e','v','n','t') >>>> -typedef struct { >>>> +typedef struct EFI_EVENT_OBJECT { >>>> UINTN Signature; >>>> UINT32 Type; >>>> UINT32 SignalCount; >>>> diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.h b/MdeModulePkg/Core/= Dxe/Hand/Handle.h >>>> index 83eb2b9f3afe..1f1ab3274e8a 100644 >>>> --- a/MdeModulePkg/Core/Dxe/Hand/Handle.h >>>> +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.h >>>> @@ -15,7 +15,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent >>>> /// >>>> /// IHANDLE - contains a list of protocol handles >>>> /// >>>> -typedef struct { >>>> +typedef struct EFI_OBJECT { >>>> UINTN Signature; >>>> /// All handles list of IHANDLE >>>> LIST_ENTRY AllHandles; >>>> diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h b/MdeModulePkg/C= ore/PiSmmCore/PiSmmCore.h >>>> index 0908e7f4e9e7..c55da58d465e 100644 >>>> --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h >>>> +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h >>>> @@ -145,7 +145,7 @@ typedef struct { >>>> /// >>>> /// IHANDLE - contains a list of protocol handles >>>> /// >>>> -typedef struct { >>>> +typedef struct EFI_OBJECT { >>>> UINTN Signature; >>>> /// All handles list of IHANDLE >>>> LIST_ENTRY AllHandles; >>>> diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.h >>>> b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.h >>>> index 50d4c96edb63..bfebbb1f8182 100644 >>>> --- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.h >>>> +++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.h >>>> @@ -88,7 +88,7 @@ struct _EFI_AML_NODE_LIST { >>>> // This buffer should not be freed. >>>> // Size is the total size of this ACPI node buffer. >>>> // >>>> -typedef struct { >>>> +typedef struct EFI_ACPI_OBJECT { >>>> UINT32 Signature; >>>> UINT8 *Buffer; >>>> UINTN Size; >>>> diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h >>>> b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h >>>> index 4a3feab94df5..48972d0fcad6 100644 >>>> --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h >>>> +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h >>>> @@ -274,7 +274,7 @@ typedef struct _HII_DATABASE_PACKAGE_LIST_INSTANC= E { >>>>=20 >>>> #define HII_HANDLE_SIGNATURE SIGNATURE_32 ('h','i','h','l'= ) >>>>=20 >>>> -typedef struct { >>>> +typedef struct EFI_HII_OBJECT { >>>> UINTN Signature; >>>> LIST_ENTRY Handle; >>>> UINTN Key; >>>> diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.h b/StandaloneMmPk= g/Core/StandaloneMmCore.h >>>> index 4d0eed273f50..dcf91bc5e916 100644 >>>> --- a/StandaloneMmPkg/Core/StandaloneMmCore.h >>>> +++ b/StandaloneMmPkg/Core/StandaloneMmCore.h >>>> @@ -105,7 +105,7 @@ typedef struct { >>>> /// >>>> /// IHANDLE - contains a list of protocol handles >>>> /// >>>> -typedef struct { >>>> +typedef struct EFI_OBJECT { >>>> UINTN Signature; >>>> /// All handles list of IHANDLE >>>> LIST_ENTRY AllHandles; >>>> -- >>>> 2.19.1.3.g30247aa5d201 >>>>=20 >>>>=20 >>>>=20 >>>> -=3D-=3D-=3D-=3D-=3D-=3D >>>> Groups.io Links: You receive all messages sent to this group. >>>>=20 >>>> View/Reply Online (#47388): https://edk2.groups.io/g/devel/message/47= 388 >>>> Mute This Topic: https://groups.io/mt/34180199/1712937 >>>> Group Owner: devel+owner@edk2.groups.io >>>> Unsubscribe: https://edk2.groups.io/g/devel/unsub [ray.ni@intel.com] >>>> -=3D-=3D-=3D-=3D-=3D-=3D >>>=20 >>=20 >>=20 >>=20 >=20 >=20 >=20 >=20