> -----Original Message----- > From: Laszlo Ersek <ler...@redhat.com> > Sent: Wednesday, September 18, 2019 1:42 AM > To: Andrew Fish <af...@apple.com>; Ni, Ray > <ray...@intel.com> > Cc: devel@edk2.groups.io; Achin Gupta > <achin.gu...@arm.com>; Anthony Perard > <anthony.per...@citrix.com>; Ard Biesheuvel > <ard.biesheu...@linaro.org>; You, Benjamin > <benjamin....@intel.com>; Zhang, Chao B > <chao.b.zh...@intel.com>; Bi, Dandan > <dandan...@intel.com>; David Woodhouse > <dw...@infradead.org>; Dong, Eric > <eric.d...@intel.com>; Dong, Guo <guo.d...@intel.com>; > Wu, Hao A <hao.a...@intel.com>; Carsey, Jaben > <jaben.car...@intel.com>; Wang, Jian J > <jian.j.w...@intel.com>; Wu, Jiaxin > <jiaxin...@intel.com>; Yao, Jiewen > <jiewen....@intel.com>; Justen, Jordan L > <jordan.l.jus...@intel.com>; Julien Grall > <julien.gr...@arm.com>; Leif Lindholm > <leif.lindh...@linaro.org>; Gao, Liming > <liming....@intel.com>; Ma, Maurice > <maurice...@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com>; Fu, Siyuan > <siyuan...@intel.com>; Supreeth Venkatesh > <supreeth.venkat...@arm.com>; Gao, Zhichao > <zhichao....@intel.com> > Subject: Re: [edk2-devel] [PATCH 01/35] DO NOT APPLY: > edk2: turn standard handle types into pointers to non- > VOID > > On 09/17/19 22:22, Andrew Fish wrote: > > > > > >> On Sep 17, 2019, at 1:06 PM, Ni, Ray > <ray...@intel.com> wrote: > >> > >> Laszlo, > >> Thank you very much for this work. > >> They are quite helpful to detect potential issues. > >> > >> But without this specific patch being checked in, > future break will still happen. > >> I don't want it to be checked in ASAP because I know > that there are quite 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 changes? > >> > > > > Ray, > > > > I was thinking the same thing. Could we make this an > optional feature via a #define? We could always default > to the Spec Behavior, and new projects could opt into > the stricter version. > > > > #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 > > Technically, this would work well. > > However, if we wanted to allow new projects to #define > STRICTER_UEFI_TYPES as their normal mode of operation > (and not just for a sanity check in CI), then we'd have > to update the UEFI spec too. > > Otherwise, code that is technically spec-conformant > (albeit semantically nonsensical), like I mentioned up- > thread, would no longer compile: > > EFI_HANDLE Foobar; > UINT64 Val; > > Foobar = &Val;
Does this example build without warnings on all compilers. I thought we usually have to add some typecasts: Foobar = (EFI_HANDLE)&Val; Or Foobar = (EFI_HANDLE)(UINTN)&Val; For examples like this, adding an explicit typecast would be an improvement. So finding and reviewing and fixing these would be a good improvement. > > Thanks > Laszlo -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#47482): https://edk2.groups.io/g/devel/message/47482 Mute This Topic: https://groups.io/mt/34180199/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-