Hi Marvin, Can you provide an example of which C compiler is flagging this as an error and what error message is generated.
Please enter a BZ with this background information and add link to the BZ in the commit message. This is a change to the BaseLib class, so we need to make sure there are no impacts to any existing code. I looks like a safe change because changing from a pointer to a fixed size type to VOID * should be compatible. Please add that analysis to the background in the BZ as well. Thanks, Mike > -----Original Message----- > From: Marvin Häuser <mhaeu...@posteo.de> > Sent: Monday, August 9, 2021 2:51 AM > To: devel@edk2.groups.io > Cc: Kinney, Michael D <michael.d.kin...@intel.com>; Liming Gao > <gaolim...@byosoft.com.cn>; Liu, Zhiguang > <zhiguang....@intel.com>; Vitaly Cheptsov <vit9...@protonmail.com> > Subject: [PATCH v2 1/2] MdePkg/BaseLib: Fix unaligned API prototypes > > C prohibits not only dereferencing but also casting to unaligned > pointers. Thus, the current set of unaligned APIs cannot be called > safely. Update their prototypes to take VOID * pointers, which must > be able to represent any valid pointer. > > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > Cc: Vitaly Cheptsov <vit9...@protonmail.com> > Signed-off-by: Marvin Häuser <mhaeu...@posteo.de> > --- > MdePkg/Library/BaseLib/Arm/Unaligned.c | 14 ++++----- > MdePkg/Library/BaseLib/Unaligned.c | 32 ++++++++++---------- > MdePkg/Include/Library/BaseLib.h | 16 +++++----- > 3 files changed, 31 insertions(+), 31 deletions(-) > > diff --git a/MdePkg/Library/BaseLib/Arm/Unaligned.c > b/MdePkg/Library/BaseLib/Arm/Unaligned.c > index e9934e7003cb..57f19fc44e0b 100644 > --- a/MdePkg/Library/BaseLib/Arm/Unaligned.c > +++ b/MdePkg/Library/BaseLib/Arm/Unaligned.c > @@ -59,7 +59,7 @@ ReadUnaligned16 ( > UINT16 > > EFIAPI > > WriteUnaligned16 ( > > - OUT UINT16 *Buffer, > > + OUT VOID *Buffer, > > IN UINT16 Value > > ) > > { > > @@ -87,7 +87,7 @@ WriteUnaligned16 ( > UINT32 > > EFIAPI > > ReadUnaligned24 ( > > - IN CONST UINT32 *Buffer > > + IN CONST VOID *Buffer > > ) > > { > > ASSERT (Buffer != NULL); > > @@ -116,7 +116,7 @@ ReadUnaligned24 ( > UINT32 > > EFIAPI > > WriteUnaligned24 ( > > - OUT UINT32 *Buffer, > > + OUT VOID *Buffer, > > IN UINT32 Value > > ) > > { > > @@ -143,7 +143,7 @@ WriteUnaligned24 ( > UINT32 > > EFIAPI > > ReadUnaligned32 ( > > - IN CONST UINT32 *Buffer > > + IN CONST VOID *Buffer > > ) > > { > > UINT16 LowerBytes; > > @@ -175,7 +175,7 @@ ReadUnaligned32 ( > UINT32 > > EFIAPI > > WriteUnaligned32 ( > > - OUT UINT32 *Buffer, > > + OUT VOID *Buffer, > > IN UINT32 Value > > ) > > { > > @@ -202,7 +202,7 @@ WriteUnaligned32 ( > UINT64 > > EFIAPI > > ReadUnaligned64 ( > > - IN CONST UINT64 *Buffer > > + IN CONST VOID *Buffer > > ) > > { > > UINT32 LowerBytes; > > @@ -234,7 +234,7 @@ ReadUnaligned64 ( > UINT64 > > EFIAPI > > WriteUnaligned64 ( > > - OUT UINT64 *Buffer, > > + OUT VOID *Buffer, > > IN UINT64 Value > > ) > > { > > diff --git a/MdePkg/Library/BaseLib/Unaligned.c > b/MdePkg/Library/BaseLib/Unaligned.c > index a419cb85e53c..3041adcde606 100644 > --- a/MdePkg/Library/BaseLib/Unaligned.c > +++ b/MdePkg/Library/BaseLib/Unaligned.c > @@ -26,12 +26,12 @@ > UINT16 > > EFIAPI > > ReadUnaligned16 ( > > - IN CONST UINT16 *Buffer > > + IN CONST VOID *Buffer > > ) > > { > > ASSERT (Buffer != NULL); > > > > - return *Buffer; > > + return *(CONST UINT16 *) Buffer; > > } > > > > /** > > @@ -52,13 +52,13 @@ ReadUnaligned16 ( > UINT16 > > EFIAPI > > WriteUnaligned16 ( > > - OUT UINT16 *Buffer, > > + OUT VOID *Buffer, > > IN UINT16 Value > > ) > > { > > ASSERT (Buffer != NULL); > > > > - return *Buffer = Value; > > + return *(UINT16 *) Buffer = Value; > > } > > > > /** > > @@ -77,12 +77,12 @@ WriteUnaligned16 ( > UINT32 > > EFIAPI > > ReadUnaligned24 ( > > - IN CONST UINT32 *Buffer > > + IN CONST VOID *Buffer > > ) > > { > > ASSERT (Buffer != NULL); > > > > - return *Buffer & 0xffffff; > > + return *(CONST UINT32 *) Buffer & 0xffffff; > > } > > > > /** > > @@ -103,13 +103,13 @@ ReadUnaligned24 ( > UINT32 > > EFIAPI > > WriteUnaligned24 ( > > - OUT UINT32 *Buffer, > > + OUT VOID *Buffer, > > IN UINT32 Value > > ) > > { > > ASSERT (Buffer != NULL); > > > > - *Buffer = BitFieldWrite32 (*Buffer, 0, 23, Value); > > + *(UINT32 *) Buffer = BitFieldWrite32 (*(CONST UINT32 *) Buffer, 0, 23, > Value); > > return Value; > > } > > > > @@ -129,12 +129,12 @@ WriteUnaligned24 ( > UINT32 > > EFIAPI > > ReadUnaligned32 ( > > - IN CONST UINT32 *Buffer > > + IN CONST VOID *Buffer > > ) > > { > > ASSERT (Buffer != NULL); > > > > - return *Buffer; > > + return *(CONST UINT32 *) Buffer; > > } > > > > /** > > @@ -155,13 +155,13 @@ ReadUnaligned32 ( > UINT32 > > EFIAPI > > WriteUnaligned32 ( > > - OUT UINT32 *Buffer, > > + OUT VOID *Buffer, > > IN UINT32 Value > > ) > > { > > ASSERT (Buffer != NULL); > > > > - return *Buffer = Value; > > + return *(UINT32 *) Buffer = Value; > > } > > > > /** > > @@ -180,12 +180,12 @@ WriteUnaligned32 ( > UINT64 > > EFIAPI > > ReadUnaligned64 ( > > - IN CONST UINT64 *Buffer > > + IN CONST VOID *Buffer > > ) > > { > > ASSERT (Buffer != NULL); > > > > - return *Buffer; > > + return *(CONST UINT64 *) Buffer; > > } > > > > /** > > @@ -206,11 +206,11 @@ ReadUnaligned64 ( > UINT64 > > EFIAPI > > WriteUnaligned64 ( > > - OUT UINT64 *Buffer, > > + OUT VOID *Buffer, > > IN UINT64 Value > > ) > > { > > ASSERT (Buffer != NULL); > > > > - return *Buffer = Value; > > + return *(UINT64 *) Buffer = Value; > > } > > diff --git a/MdePkg/Include/Library/BaseLib.h > b/MdePkg/Include/Library/BaseLib.h > index 2452c1d92e51..4d30f0539c6b 100644 > --- a/MdePkg/Include/Library/BaseLib.h > +++ b/MdePkg/Include/Library/BaseLib.h > @@ -3420,7 +3420,7 @@ DivS64x64Remainder ( > UINT16 > > EFIAPI > > ReadUnaligned16 ( > > - IN CONST UINT16 *Buffer > > + IN CONST VOID *Buffer > > ); > > > > > > @@ -3442,7 +3442,7 @@ ReadUnaligned16 ( > UINT16 > > EFIAPI > > WriteUnaligned16 ( > > - OUT UINT16 *Buffer, > > + OUT VOID *Buffer, > > IN UINT16 Value > > ); > > > > @@ -3463,7 +3463,7 @@ WriteUnaligned16 ( > UINT32 > > EFIAPI > > ReadUnaligned24 ( > > - IN CONST UINT32 *Buffer > > + IN CONST VOID *Buffer > > ); > > > > > > @@ -3485,7 +3485,7 @@ ReadUnaligned24 ( > UINT32 > > EFIAPI > > WriteUnaligned24 ( > > - OUT UINT32 *Buffer, > > + OUT VOID *Buffer, > > IN UINT32 Value > > ); > > > > @@ -3506,7 +3506,7 @@ WriteUnaligned24 ( > UINT32 > > EFIAPI > > ReadUnaligned32 ( > > - IN CONST UINT32 *Buffer > > + IN CONST VOID *Buffer > > ); > > > > > > @@ -3528,7 +3528,7 @@ ReadUnaligned32 ( > UINT32 > > EFIAPI > > WriteUnaligned32 ( > > - OUT UINT32 *Buffer, > > + OUT VOID *Buffer, > > IN UINT32 Value > > ); > > > > @@ -3549,7 +3549,7 @@ WriteUnaligned32 ( > UINT64 > > EFIAPI > > ReadUnaligned64 ( > > - IN CONST UINT64 *Buffer > > + IN CONST VOID *Buffer > > ); > > > > > > @@ -3571,7 +3571,7 @@ ReadUnaligned64 ( > UINT64 > > EFIAPI > > WriteUnaligned64 ( > > - OUT UINT64 *Buffer, > > + OUT VOID *Buffer, > > IN UINT64 Value > > ); > > > > -- > 2.31.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#78972): https://edk2.groups.io/g/devel/message/78972 Mute This Topic: https://groups.io/mt/84764900/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-