Hi
This fix breaks the compatibility.

Have you tested all features that depends on this data structure?

Thank you
Yao, Jiewen

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Elyes Haouas
> Sent: Sunday, August 20, 2023 8:07 PM
> To: devel@edk2.groups.io
> Cc: Elyes Haouas <ehao...@noos.fr>
> Subject: [edk2-devel] [PATCH] Use C99 flexible arrays
> 
> Use C99 flexible arrays instead of older style of one-element or
> zero-length arrays.
> It allows the compiler to generate errors when the flexible array does
> not occur at the end in the structure.
> 
> Signed-off-by: Elyes Haouas <ehao...@noos.fr>
> ---
>  EmbeddedPkg/Include/fdt.h                              |  4 ++--
>  .../Library/FrameBufferBltLib/FrameBufferBltLib.c      |  2 +-
>  MdePkg/Include/IndustryStandard/IpmiNetFnApp.h         |  8 ++++----
>  MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h     |  4 ++--
>  MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h     |  6 +++---
>  MdePkg/Include/IndustryStandard/IpmiNetFnTransport.h   |  8 ++++----
>  MdePkg/Include/IndustryStandard/PldmSmbiosTransfer.h   |  8 ++++----
>  MdePkg/Include/IndustryStandard/TcgStorageCore.h       |  6 +++---
>  MdePkg/Include/Protocol/NetworkInterfaceIdentifier.h   |  2 +-
>  MdePkg/Include/Protocol/NvdimmLabel.h                  |  2 +-
>  UefiPayloadPkg/Include/Coreboot.h                      | 10 +++++-----
>  11 files changed, 30 insertions(+), 30 deletions(-)
> 
> diff --git a/EmbeddedPkg/Include/fdt.h b/EmbeddedPkg/Include/fdt.h
> index 120dbc8bc6..f64695da5c 100644
> --- a/EmbeddedPkg/Include/fdt.h
> +++ b/EmbeddedPkg/Include/fdt.h
> @@ -81,14 +81,14 @@ struct fdt_reserve_entry {
> 
> 
>  struct fdt_node_header {
> 
>    fdt32_t    tag;
> 
> -  char       name[0];
> 
> +  char       name[];
> 
>  };
> 
> 
> 
>  struct fdt_property {
> 
>    fdt32_t    tag;
> 
>    fdt32_t    len;
> 
>    fdt32_t    nameoff;
> 
> -  char       data[0];
> 
> +  char       data[];
> 
>  };
> 
> 
> 
>  #endif /* !__ASSEMBLY */
> 
> diff --git a/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c
> b/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c
> index 432577bcfd..5fc5779e16 100644
> --- a/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c
> +++ b/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c
> @@ -24,7 +24,7 @@ struct FRAME_BUFFER_CONFIGURE {
>    EFI_PIXEL_BITMASK            PixelMasks;
> 
>    INT8                         PixelShl[4];    // R-G-B-Rsvd
> 
>    INT8                         PixelShr[4];    // R-G-B-Rsvd
> 
> -  UINT8                        LineBuffer[0];
> 
> +  UINT8                        LineBuffer[];
> 
>  };
> 
> 
> 
>  CONST EFI_PIXEL_BITMASK  mRgbPixelMasks = {
> 
> diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnApp.h
> b/MdePkg/Include/IndustryStandard/IpmiNetFnApp.h
> index b6bc91f46c..b5174a5042 100644
> --- a/MdePkg/Include/IndustryStandard/IpmiNetFnApp.h
> +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnApp.h
> @@ -433,7 +433,7 @@ typedef union {
>  typedef struct {
> 
>    UINT8                              CompletionCode;
> 
>    IPMI_GET_MESSAGE_CHANNEL_NUMBER    ChannelNumber;
> 
> -  UINT8                              MessageData[0];
> 
> +  UINT8                              MessageData[];
> 
>  } IPMI_GET_MESSAGE_RESPONSE;
> 
> 
> 
>  //
> 
> @@ -457,12 +457,12 @@ typedef union {
>  typedef struct {
> 
>    UINT8                               CompletionCode;
> 
>    IPMI_SEND_MESSAGE_CHANNEL_NUMBER    ChannelNumber;
> 
> -  UINT8                               MessageData[0];
> 
> +  UINT8                               MessageData[];
> 
>  } IPMI_SEND_MESSAGE_REQUEST;
> 
> 
> 
>  typedef struct {
> 
>    UINT8    CompletionCode;
> 
> -  UINT8    ResponseData[0];
> 
> +  UINT8    ResponseData[];
> 
>  } IPMI_SEND_MESSAGE_RESPONSE;
> 
> 
> 
>  //
> 
> @@ -906,7 +906,7 @@ typedef union {
>  typedef struct {
> 
>    IPMI_SET_USER_PASSWORD_USER_ID      UserId;
> 
>    IPMI_SET_USER_PASSWORD_OPERATION    Operation;
> 
> -  UINT8                               PasswordData[0]; // 16 or 20 bytes, 
> depending on the
> 'PasswordSize' field
> 
> +  UINT8                               PasswordData[]; // 16 or 20 bytes, 
> depending on the
> 'PasswordSize' field
> 
>  } IPMI_SET_USER_PASSWORD_REQUEST;
> 
> 
> 
>  //
> 
> diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h
> b/MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h
> index e3b8a62105..44024da69c 100644
> --- a/MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h
> +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h
> @@ -183,7 +183,7 @@ typedef union {
> 
> 
>  typedef struct {
> 
>    IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID    ParameterValid;
> 
> -  UINT8                                    ParameterData[0];
> 
> +  UINT8                                    ParameterData[];
> 
>  } IPMI_SET_BOOT_OPTIONS_REQUEST;
> 
> 
> 
>  typedef struct {
> 
> @@ -415,7 +415,7 @@ typedef struct {
>    UINT8                                      CompletionCode;
> 
>    IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION    ParameterVersion;
> 
>    IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID      ParameterValid;
> 
> -  UINT8                                      ParameterData[0];
> 
> +  UINT8                                      ParameterData[];
> 
>  } IPMI_GET_BOOT_OPTIONS_RESPONSE;
> 
> 
> 
>  //
> 
> diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h
> b/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h
> index 553a69a472..755bcb67e5 100644
> --- a/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h
> +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnStorage.h
> @@ -76,7 +76,7 @@ typedef struct {
>  typedef struct {
> 
>    UINT8    CompletionCode;
> 
>    UINT8    CountReturned;
> 
> -  UINT8    Data[0];
> 
> +  UINT8    Data[];
> 
>  } IPMI_READ_FRU_DATA_RESPONSE;
> 
> 
> 
>  //
> 
> @@ -95,7 +95,7 @@ typedef struct {
>  typedef struct {
> 
>    UINT8     DeviceId;
> 
>    UINT16    InventoryOffset;
> 
> -  UINT8     Data[0];
> 
> +  UINT8     Data[];
> 
>  } IPMI_WRITE_FRU_DATA_REQUEST;
> 
> 
> 
>  typedef struct {
> 
> @@ -594,7 +594,7 @@ typedef struct {
>    UINT16    RecordId;
> 
>    UINT8     OffsetIntoRecord;
> 
>    UINT8     InProgress;
> 
> -  UINT8     RecordData[0];
> 
> +  UINT8     RecordData[];
> 
>  } IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST;
> 
> 
> 
>  typedef struct {
> 
> diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnTransport.h
> b/MdePkg/Include/IndustryStandard/IpmiNetFnTransport.h
> index 2024c35f7f..273a162552 100644
> --- a/MdePkg/Include/IndustryStandard/IpmiNetFnTransport.h
> +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnTransport.h
> @@ -313,7 +313,7 @@ typedef union {
>  typedef struct {
> 
>    IPMI_SET_LAN_CONFIG_CHANNEL_NUM    ChannelNumber;
> 
>    UINT8                              ParameterSelector;
> 
> -  UINT8                              ParameterData[0];
> 
> +  UINT8                              ParameterData[];
> 
>  } IPMI_SET_LAN_CONFIGURATION_PARAMETERS_COMMAND_REQUEST;
> 
> 
> 
>  //
> 
> @@ -343,7 +343,7 @@ typedef struct {
>  typedef struct {
> 
>    UINT8    CompletionCode;
> 
>    UINT8    ParameterRevision;
> 
> -  UINT8    ParameterData[0];
> 
> +  UINT8    ParameterData[];
> 
>  } IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE;
> 
> 
> 
>  //
> 
> @@ -879,7 +879,7 @@ typedef union {
>  typedef struct {
> 
>    IPMI_SET_SOL_CONFIG_PARAM_CHANNEL_NUM    ChannelNumber;
> 
>    UINT8                                    ParameterSelector;
> 
> -  UINT8                                    ParameterData[0];
> 
> +  UINT8                                    ParameterData[];
> 
>  } IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST;
> 
> 
> 
>  //
> 
> @@ -909,7 +909,7 @@ typedef struct {
>  typedef struct {
> 
>    UINT8    CompletionCode;
> 
>    UINT8    ParameterRevision;
> 
> -  UINT8    ParameterData[0];
> 
> +  UINT8    ParameterData[];
> 
>  } IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE;
> 
> 
> 
>  #pragma pack()
> 
> diff --git a/MdePkg/Include/IndustryStandard/PldmSmbiosTransfer.h
> b/MdePkg/Include/IndustryStandard/PldmSmbiosTransfer.h
> index 9b7a5e838e..3e72812ea7 100644
> --- a/MdePkg/Include/IndustryStandard/PldmSmbiosTransfer.h
> +++ b/MdePkg/Include/IndustryStandard/PldmSmbiosTransfer.h
> @@ -92,7 +92,7 @@ typedef struct {
>  typedef struct {
> 
>    UINT32    NextDataTransferHandle;
> 
>    UINT8     TransferFlag;
> 
> -  UINT8     Table[0];
> 
> +  UINT8     Table[];
> 
>  } PLDM_GET_SMBIOS_STRUCTURE_TABLE_RESPONSE;
> 
> 
> 
>  typedef struct {
> 
> @@ -106,7 +106,7 @@ typedef struct {
>  typedef struct {
> 
>    UINT32    DataTransferHandle;
> 
>    UINT8     TransferFlag;
> 
> -  UINT8     Table[0];
> 
> +  UINT8     Table[];
> 
>  } PLDM_SET_SMBIOS_STRUCTURE_TABLE_REQUEST;
> 
> 
> 
>  typedef struct {
> 
> @@ -143,7 +143,7 @@ typedef struct {
>  typedef struct {
> 
>    UINT32    NextDataTransferHandle;
> 
>    UINT8     TransferFlag;
> 
> -  UINT8     Table[0];
> 
> +  UINT8     Table[];
> 
>  } PLDM_GET_SMBIOS_STRUCTURE_BY_TYPE_RESPONSE;
> 
> 
> 
>  typedef struct {
> 
> @@ -171,7 +171,7 @@ typedef struct {
>  typedef struct {
> 
>    UINT32    NextDataTransferHandle;
> 
>    UINT8     TransferFlag;
> 
> -  UINT8     Table[0];
> 
> +  UINT8     Table[];
> 
>  } PLDM_GET_SMBIOS_STRUCTURE_BY_HANDLE_RESPONSE;
> 
> 
> 
>  typedef struct {
> 
> diff --git a/MdePkg/Include/IndustryStandard/TcgStorageCore.h
> b/MdePkg/Include/IndustryStandard/TcgStorageCore.h
> index 1fae7b6e84..7502e3d46c 100644
> --- a/MdePkg/Include/IndustryStandard/TcgStorageCore.h
> +++ b/MdePkg/Include/IndustryStandard/TcgStorageCore.h
> @@ -38,7 +38,7 @@ typedef struct {
>    UINT32    OutstandingDataBE;
> 
>    UINT32    MinTransferBE;
> 
>    UINT32    LengthBE;
> 
> -  UINT8     Payload[0];
> 
> +  UINT8     Payload[];
> 
>  } TCG_COM_PACKET;
> 
> 
> 
>  typedef struct {
> 
> @@ -49,7 +49,7 @@ typedef struct {
>    UINT16    AckTypeBE;
> 
>    UINT32    AcknowledgementBE;
> 
>    UINT32    LengthBE;
> 
> -  UINT8     Payload[0];
> 
> +  UINT8     Payload[];
> 
>  } TCG_PACKET;
> 
> 
> 
>  #define TCG_SUBPACKET_ALIGNMENT  4// 4-byte alignment per spec
> 
> @@ -58,7 +58,7 @@ typedef struct {
>    UINT8     ReservedBE[6];
> 
>    UINT16    KindBE;
> 
>    UINT32    LengthBE;
> 
> -  UINT8     Payload[0];
> 
> +  UINT8     Payload[];
> 
>  } TCG_SUB_PACKET;
> 
> 
> 
>  #define SUBPACKET_KIND_DATA            0x0000
> 
> diff --git a/MdePkg/Include/Protocol/NetworkInterfaceIdentifier.h
> b/MdePkg/Include/Protocol/NetworkInterfaceIdentifier.h
> index 78acb4ddae..85d904ca9c 100644
> --- a/MdePkg/Include/Protocol/NetworkInterfaceIdentifier.h
> +++ b/MdePkg/Include/Protocol/NetworkInterfaceIdentifier.h
> @@ -101,7 +101,7 @@ struct undiconfig_table {
>    struct {
> 
>      VOID    *NII_InterfacePointer;          ///< Pointer to the NII 
> interface structure.
> 
>      VOID    *DevicePathPointer;             ///< Pointer to the device path 
> for this NIC.
> 
> -  } NII_entry[1];
> 
> +  } NII_entry[];
> 
>  };
> 
> 
> 
>  extern EFI_GUID  gEfiNetworkInterfaceIdentifierProtocolGuid;
> 
> diff --git a/MdePkg/Include/Protocol/NvdimmLabel.h
> b/MdePkg/Include/Protocol/NvdimmLabel.h
> index e46999a3ab..91a9b675f9 100644
> --- a/MdePkg/Include/Protocol/NvdimmLabel.h
> +++ b/MdePkg/Include/Protocol/NvdimmLabel.h
> @@ -244,7 +244,7 @@ typedef struct {
>    ///
> 
>    /// Array size is 1 if EFI_NVDIMM_LABEL_FLAGS_LOCAL is set indicating a 
> Local
> Namespaces.
> 
>    ///
> 
> -  EFI_NVDIMM_LABEL_SET_COOKIE_MAP    Mapping[0];
> 
> +  EFI_NVDIMM_LABEL_SET_COOKIE_MAP    Mapping[];
> 
>  } EFI_NVDIMM_LABEL_SET_COOKIE_INFO;
> 
> 
> 
>  /**
> 
> diff --git a/UefiPayloadPkg/Include/Coreboot.h
> b/UefiPayloadPkg/Include/Coreboot.h
> index 2d454f7c89..a53ede390c 100644
> --- a/UefiPayloadPkg/Include/Coreboot.h
> +++ b/UefiPayloadPkg/Include/Coreboot.h
> @@ -59,7 +59,7 @@ struct cbmem_root {
>    UINT32                num_entries;
> 
>    UINT32                locked;
> 
>    UINT32                size;
> 
> -  struct cbmem_entry    entries[0];
> 
> +  struct cbmem_entry    entries[];
> 
>  };
> 
> 
> 
>  struct imd_entry {
> 
> @@ -75,7 +75,7 @@ struct imd_root {
>    UINT32              flags;
> 
>    UINT32              entry_align;
> 
>    UINT32              max_offset;
> 
> -  struct imd_entry    entries[0];
> 
> +  struct imd_entry    entries[];
> 
>  };
> 
> 
> 
>  struct cbuint64 {
> 
> @@ -119,7 +119,7 @@ struct cb_memory_range {
>  struct cb_memory {
> 
>    UINT32                    tag;
> 
>    UINT32                    size;
> 
> -  struct cb_memory_range    map[0];
> 
> +  struct cb_memory_range    map[];
> 
>  };
> 
> 
> 
>  #define CB_TAG_MAINBOARD  0x0003
> 
> @@ -129,7 +129,7 @@ struct cb_mainboard {
>    UINT32    size;
> 
>    UINT8     vendor_idx;
> 
>    UINT8     part_number_idx;
> 
> -  UINT8     strings[0];
> 
> +  UINT8     strings[];
> 
>  };
> 
> 
> 
>  #define CB_TAG_VERSION         0x0004
> 
> @@ -146,7 +146,7 @@ struct cb_mainboard {
>  struct cb_string {
> 
>    UINT32    tag;
> 
>    UINT32    size;
> 
> -  UINT8     string[0];
> 
> +  UINT8     string[];
> 
>  };
> 
> 
> 
>  #define CB_TAG_SERIAL  0x000f
> 
> --
> 2.40.1
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#107898): https://edk2.groups.io/g/devel/message/107898
> Mute This Topic: https://groups.io/mt/100861513/1772286
> Group Owner: devel+ow...@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [jiewen....@intel.com]
> -=-=-=-=-=-=
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107919): https://edk2.groups.io/g/devel/message/107919
Mute This Topic: https://groups.io/mt/100861513/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to