[PATCH] drm/radeon/atombios: fix variable sized arrays for newer gccs (v2)
Alex Deucher
alexdeucher at gmail.com
Tue Aug 20 14:52:49 PDT 2013
Ignore this patch for now. there are still problems with newer gcc
versions that aren't fixed yet.
Alex
On Tue, Aug 20, 2013 at 1:16 PM, Alex Deucher <alexdeucher at gmail.com> wrote:
> Newer versions of gcc seem to wander off into no-man's land
> when using variably sized arrays. Atombios tends to do things
> like:
>
> struct object {
> u8 version;
> u8 num_elements;
> u32 elements[1]; /* num_elements entries */
> };
>
> We then do things like the following in the driver code:
>
> for (i = 0; i < atom_object->num_elements; i++) {
> driver_object[i] = atom_object->elements[i];
> }
>
> With previous versions of gcc this used to work fine, but with
> 4.7 and 4.8, it seems to generate code that wanders off into the
> weeds.
>
> According to:
> http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
> The traditional way of handling variably sized arrays (ISO C90)
> is to use an array length of 1. Gcc allows you to use an array
> length of 0 and newer versions of gcc only seem to do the
> right thing when 0 is used.
>
> This is tricky in this case because atombios.h is shared between
> multiple components and is used for allocation in the vbios.
>
> v2: update commit message
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> Cc: stable at vger.kernel.org
> ---
> drivers/gpu/drm/radeon/atombios.h | 100 +++++++++++++++++++-------------------
> 1 file changed, 50 insertions(+), 50 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/atombios.h b/drivers/gpu/drm/radeon/atombios.h
> index 16b120c..3f1f011 100644
> --- a/drivers/gpu/drm/radeon/atombios.h
> +++ b/drivers/gpu/drm/radeon/atombios.h
> @@ -3592,7 +3592,7 @@ typedef struct _ATOM_FAKE_EDID_PATCH_RECORD
> {
> UCHAR ucRecordType;
> UCHAR ucFakeEDIDLength;
> - UCHAR ucFakeEDIDString[1]; // This actually has ucFakeEdidLength elements.
> + UCHAR ucFakeEDIDString[0]; // This actually has ucFakeEdidLength elements.
> } ATOM_FAKE_EDID_PATCH_RECORD;
>
> typedef struct _ATOM_PANEL_RESOLUTION_PATCH_RECORD
> @@ -3868,7 +3868,7 @@ typedef struct _ATOM_GPIO_PIN_ASSIGNMENT
> typedef struct _ATOM_GPIO_PIN_LUT
> {
> ATOM_COMMON_TABLE_HEADER sHeader;
> - ATOM_GPIO_PIN_ASSIGNMENT asGPIO_Pin[1];
> + ATOM_GPIO_PIN_ASSIGNMENT asGPIO_Pin[0];
> }ATOM_GPIO_PIN_LUT;
>
> /****************************************************************************/
> @@ -3995,7 +3995,7 @@ typedef struct _ATOM_DISPLAY_OBJECT_PATH
> USHORT usSize; //the size of ATOM_DISPLAY_OBJECT_PATH
> USHORT usConnObjectId; //Connector Object ID
> USHORT usGPUObjectId; //GPU ID
> - USHORT usGraphicObjIds[1]; //1st Encoder Obj source from GPU to last Graphic Obj destinate to connector.
> + USHORT usGraphicObjIds[0]; //1st Encoder Obj source from GPU to last Graphic Obj destinate to connector.
> }ATOM_DISPLAY_OBJECT_PATH;
>
> typedef struct _ATOM_DISPLAY_EXTERNAL_OBJECT_PATH
> @@ -4012,7 +4012,7 @@ typedef struct _ATOM_DISPLAY_OBJECT_PATH_TABLE
> UCHAR ucNumOfDispPath;
> UCHAR ucVersion;
> UCHAR ucPadding[2];
> - ATOM_DISPLAY_OBJECT_PATH asDispPath[1];
> + ATOM_DISPLAY_OBJECT_PATH asDispPath[0];
> }ATOM_DISPLAY_OBJECT_PATH_TABLE;
>
>
> @@ -4028,15 +4028,15 @@ typedef struct _ATOM_OBJECT_TABLE //Above 4 object table
> {
> UCHAR ucNumberOfObjects;
> UCHAR ucPadding[3];
> - ATOM_OBJECT asObjects[1];
> + ATOM_OBJECT asObjects[0];
> }ATOM_OBJECT_TABLE;
>
> typedef struct _ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT //usSrcDstTableOffset pointing to this structure
> {
> UCHAR ucNumberOfSrc;
> - USHORT usSrcObjectID[1];
> + USHORT usSrcObjectID[0];
> UCHAR ucNumberOfDst;
> - USHORT usDstObjectID[1];
> + USHORT usDstObjectID[0];
> }ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT;
>
>
> @@ -4208,7 +4208,7 @@ typedef struct _ATOM_CONNECTOR_DEVICE_TAG_RECORD
> ATOM_COMMON_RECORD_HEADER sheader;
> UCHAR ucNumberOfDevice;
> UCHAR ucReserved;
> - ATOM_CONNECTOR_DEVICE_TAG asDeviceTag[1]; //This Id is same as "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
> + ATOM_CONNECTOR_DEVICE_TAG asDeviceTag[0]; //This Id is same as "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
> }ATOM_CONNECTOR_DEVICE_TAG_RECORD;
>
>
> @@ -4268,7 +4268,7 @@ typedef struct _ATOM_OBJECT_GPIO_CNTL_RECORD
> ATOM_COMMON_RECORD_HEADER sheader;
> UCHAR ucFlags; // Future expnadibility
> UCHAR ucNumberOfPins; // Number of GPIO pins used to control the object
> - ATOM_GPIO_PIN_CONTROL_PAIR asGpio[1]; // the real gpio pin pair determined by number of pins ucNumberOfPins
> + ATOM_GPIO_PIN_CONTROL_PAIR asGpio[0]; // the real gpio pin pair determined by number of pins ucNumberOfPins
> }ATOM_OBJECT_GPIO_CNTL_RECORD;
>
> //Definitions for GPIO pin state
> @@ -4549,7 +4549,7 @@ typedef struct _ATOM_I2C_VOLTAGE_OBJECT_V3
> UCHAR ucVoltageControlAddress;
> UCHAR ucVoltageControlOffset;
> ULONG ulReserved;
> - VOLTAGE_LUT_ENTRY asVolI2cLut[1]; // end with 0xff
> + VOLTAGE_LUT_ENTRY asVolI2cLut[0]; // end with 0xff
> }ATOM_I2C_VOLTAGE_OBJECT_V3;
>
> typedef struct _ATOM_GPIO_VOLTAGE_OBJECT_V3
> @@ -4560,7 +4560,7 @@ typedef struct _ATOM_GPIO_VOLTAGE_OBJECT_V3
> UCHAR ucPhaseDelay; // phase delay in unit of micro second
> UCHAR ucReserved;
> ULONG ulGpioMaskVal; // GPIO Mask value
> - VOLTAGE_LUT_ENTRY_V2 asVolGpioLut[1];
> + VOLTAGE_LUT_ENTRY_V2 asVolGpioLut[0];
> }ATOM_GPIO_VOLTAGE_OBJECT_V3;
>
> typedef struct _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
> @@ -4570,7 +4570,7 @@ typedef struct _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
> UCHAR ucLeakageEntryNum; // indicate the entry number of LeakageId/Voltage Lut table
> UCHAR ucReserved[2];
> ULONG ulMaxVoltageLevel;
> - LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];
> + LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[0];
> }ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
>
>
> @@ -4654,7 +4654,7 @@ typedef struct _ATOM_POWER_SOURCE_INFO
> {
> ATOM_COMMON_TABLE_HEADER asHeader;
> UCHAR asPwrbehave[16];
> - ATOM_POWER_SOURCE_OBJECT asPwrObj[1];
> + ATOM_POWER_SOURCE_OBJECT asPwrObj[0];
> }ATOM_POWER_SOURCE_INFO;
>
>
> @@ -5341,7 +5341,7 @@ typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
> typedef struct _ATOM_I2C_DATA_RECORD
> {
> UCHAR ucNunberOfBytes; //Indicates how many bytes SW needs to write to the external ASIC for one block, besides to "Start" and "Stop"
> - UCHAR ucI2CData[1]; //I2C data in bytes, should be less than 16 bytes usually
> + UCHAR ucI2CData[0]; //I2C data in bytes, should be less than 16 bytes usually
> }ATOM_I2C_DATA_RECORD;
>
>
> @@ -5352,14 +5352,14 @@ typedef struct _ATOM_I2C_DEVICE_SETUP_INFO
> UCHAR ucSSChipID; //SS chip being used
> UCHAR ucSSChipSlaveAddr; //Slave Address to set up this SS chip
> UCHAR ucNumOfI2CDataRecords; //number of data block
> - ATOM_I2C_DATA_RECORD asI2CData[1];
> + ATOM_I2C_DATA_RECORD asI2CData[0];
> }ATOM_I2C_DEVICE_SETUP_INFO;
>
> //==========================================================================================
> typedef struct _ATOM_ASIC_MVDD_INFO
> {
> ATOM_COMMON_TABLE_HEADER sHeader;
> - ATOM_I2C_DEVICE_SETUP_INFO asI2CSetup[1];
> + ATOM_I2C_DEVICE_SETUP_INFO asI2CSetup[0];
> }ATOM_ASIC_MVDD_INFO;
>
> //==========================================================================================
> @@ -5421,7 +5421,7 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO
> typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2
> {
> ATOM_COMMON_TABLE_HEADER sHeader;
> - ATOM_ASIC_SS_ASSIGNMENT_V2 asSpreadSpectrum[1]; //this is point only.
> + ATOM_ASIC_SS_ASSIGNMENT_V2 asSpreadSpectrum[0]; //this is point only.
> }ATOM_ASIC_INTERNAL_SS_INFO_V2;
>
> typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3
> @@ -5443,7 +5443,7 @@ typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3
> typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V3
> {
> ATOM_COMMON_TABLE_HEADER sHeader;
> - ATOM_ASIC_SS_ASSIGNMENT_V3 asSpreadSpectrum[1]; //this is pointer only.
> + ATOM_ASIC_SS_ASSIGNMENT_V3 asSpreadSpectrum[0]; //this is pointer only.
> }ATOM_ASIC_INTERNAL_SS_INFO_V3;
>
>
> @@ -6181,7 +6181,7 @@ typedef union _ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
>
> typedef struct _ATOM_MEMORY_SETTING_DATA_BLOCK{
> ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS ulMemoryID;
> - ULONG aulMemData[1];
> + ULONG aulMemData[0];
> }ATOM_MEMORY_SETTING_DATA_BLOCK;
>
>
> @@ -6194,8 +6194,8 @@ typedef struct _ATOM_INIT_REG_INDEX_FORMAT{
> typedef struct _ATOM_INIT_REG_BLOCK{
> USHORT usRegIndexTblSize; //size of asRegIndexBuf
> USHORT usRegDataBlkSize; //size of ATOM_MEMORY_SETTING_DATA_BLOCK
> - ATOM_INIT_REG_INDEX_FORMAT asRegIndexBuf[1];
> - ATOM_MEMORY_SETTING_DATA_BLOCK asRegDataBuf[1];
> + ATOM_INIT_REG_INDEX_FORMAT asRegIndexBuf[0];
> + ATOM_MEMORY_SETTING_DATA_BLOCK asRegDataBuf[0];
> }ATOM_INIT_REG_BLOCK;
>
> #define END_OF_REG_INDEX_BLOCK 0x0ffff
> @@ -6938,8 +6938,8 @@ typedef struct _ATOM_DISP_OUT_INFO
> ATOM_COMMON_TABLE_HEADER sHeader;
> USHORT ptrTransmitterInfo;
> USHORT ptrEncoderInfo;
> - ASIC_TRANSMITTER_INFO asTransmitterInfo[1];
> - ASIC_ENCODER_INFO asEncoderInfo[1];
> + ASIC_TRANSMITTER_INFO asTransmitterInfo[0];
> + ASIC_ENCODER_INFO asEncoderInfo[0];
> }ATOM_DISP_OUT_INFO;
>
> typedef struct _ATOM_DISP_OUT_INFO_V2
> @@ -6948,8 +6948,8 @@ typedef struct _ATOM_DISP_OUT_INFO_V2
> USHORT ptrTransmitterInfo;
> USHORT ptrEncoderInfo;
> USHORT ptrMainCallParserFar; // direct address of main parser call in VBIOS binary.
> - ASIC_TRANSMITTER_INFO asTransmitterInfo[1];
> - ASIC_ENCODER_INFO asEncoderInfo[1];
> + ASIC_TRANSMITTER_INFO asTransmitterInfo[0];
> + ASIC_ENCODER_INFO asEncoderInfo[0];
> }ATOM_DISP_OUT_INFO_V2;
>
>
> @@ -6989,7 +6989,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V3
> UCHAR ucMaxPPLLNum;
> UCHAR ucCoreRefClkSource; // value of CORE_REF_CLK_SOURCE
> UCHAR ucReserved[3];
> - ASIC_TRANSMITTER_INFO_V2 asTransmitterInfo[1]; // for alligment only
> + ASIC_TRANSMITTER_INFO_V2 asTransmitterInfo[0]; // for alligment only
> }ATOM_DISP_OUT_INFO_V3;
>
> //ucDispCaps
> @@ -7221,12 +7221,12 @@ typedef struct _CLOCK_CONDITION_SETTING_ENTRY{
> USHORT usMaxClockFreq;
> UCHAR ucEncodeMode;
> UCHAR ucPhySel;
> - ULONG ulAnalogSetting[1];
> + ULONG ulAnalogSetting[0];
> }CLOCK_CONDITION_SETTING_ENTRY;
>
> typedef struct _CLOCK_CONDITION_SETTING_INFO{
> USHORT usEntrySize;
> - CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[1];
> + CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[0];
> }CLOCK_CONDITION_SETTING_INFO;
>
> typedef struct _PHY_CONDITION_REG_VAL{
> @@ -7243,27 +7243,27 @@ typedef struct _PHY_CONDITION_REG_VAL_V2{
> typedef struct _PHY_CONDITION_REG_INFO{
> USHORT usRegIndex;
> USHORT usSize;
> - PHY_CONDITION_REG_VAL asRegVal[1];
> + PHY_CONDITION_REG_VAL asRegVal[0];
> }PHY_CONDITION_REG_INFO;
>
> typedef struct _PHY_CONDITION_REG_INFO_V2{
> USHORT usRegIndex;
> USHORT usSize;
> - PHY_CONDITION_REG_VAL_V2 asRegVal[1];
> + PHY_CONDITION_REG_VAL_V2 asRegVal[0];
> }PHY_CONDITION_REG_INFO_V2;
>
> typedef struct _PHY_ANALOG_SETTING_INFO{
> UCHAR ucEncodeMode;
> UCHAR ucPhySel;
> USHORT usSize;
> - PHY_CONDITION_REG_INFO asAnalogSetting[1];
> + PHY_CONDITION_REG_INFO asAnalogSetting[0];
> }PHY_ANALOG_SETTING_INFO;
>
> typedef struct _PHY_ANALOG_SETTING_INFO_V2{
> UCHAR ucEncodeMode;
> UCHAR ucPhySel;
> USHORT usSize;
> - PHY_CONDITION_REG_INFO_V2 asAnalogSetting[1];
> + PHY_CONDITION_REG_INFO_V2 asAnalogSetting[0];
> }PHY_ANALOG_SETTING_INFO_V2;
>
> typedef struct _GFX_HAVESTING_PARAMETERS {
> @@ -7709,7 +7709,7 @@ typedef struct _ATOM_PPLIB_THERMALCONTROLLER
> typedef struct _ATOM_PPLIB_STATE
> {
> UCHAR ucNonClockStateIndex;
> - UCHAR ucClockStateIndices[1]; // variable-sized
> + UCHAR ucClockStateIndices[0]; // variable-sized
> } ATOM_PPLIB_STATE;
>
>
> @@ -8057,14 +8057,14 @@ typedef struct _ATOM_PPLIB_STATE_V2
> /**
> * Driver will read the first ucNumDPMLevels in this array
> */
> - UCHAR clockInfoIndex[1];
> + UCHAR clockInfoIndex[0];
> } ATOM_PPLIB_STATE_V2;
>
> typedef struct _StateArray{
> //how many states we have
> UCHAR ucNumEntries;
>
> - ATOM_PPLIB_STATE_V2 states[1];
> + ATOM_PPLIB_STATE_V2 states[0];
> }StateArray;
>
>
> @@ -8075,7 +8075,7 @@ typedef struct _ClockInfoArray{
> //sizeof(ATOM_PPLIB_CLOCK_INFO)
> UCHAR ucEntrySize;
>
> - UCHAR clockInfo[1];
> + UCHAR clockInfo[0];
> }ClockInfoArray;
>
> typedef struct _NonClockInfoArray{
> @@ -8085,7 +8085,7 @@ typedef struct _NonClockInfoArray{
> //sizeof(ATOM_PPLIB_NONCLOCK_INFO)
> UCHAR ucEntrySize;
>
> - ATOM_PPLIB_NONCLOCK_INFO nonClockInfo[1];
> + ATOM_PPLIB_NONCLOCK_INFO nonClockInfo[0];
> }NonClockInfoArray;
>
> typedef struct _ATOM_PPLIB_Clock_Voltage_Dependency_Record
> @@ -8098,7 +8098,7 @@ typedef struct _ATOM_PPLIB_Clock_Voltage_Dependency_Record
> typedef struct _ATOM_PPLIB_Clock_Voltage_Dependency_Table
> {
> UCHAR ucNumEntries; // Number of entries.
> - ATOM_PPLIB_Clock_Voltage_Dependency_Record entries[1]; // Dynamically allocate entries.
> + ATOM_PPLIB_Clock_Voltage_Dependency_Record entries[0]; // Dynamically allocate entries.
> }ATOM_PPLIB_Clock_Voltage_Dependency_Table;
>
> typedef struct _ATOM_PPLIB_Clock_Voltage_Limit_Record
> @@ -8114,7 +8114,7 @@ typedef struct _ATOM_PPLIB_Clock_Voltage_Limit_Record
> typedef struct _ATOM_PPLIB_Clock_Voltage_Limit_Table
> {
> UCHAR ucNumEntries; // Number of entries.
> - ATOM_PPLIB_Clock_Voltage_Limit_Record entries[1]; // Dynamically allocate entries.
> + ATOM_PPLIB_Clock_Voltage_Limit_Record entries[0]; // Dynamically allocate entries.
> }ATOM_PPLIB_Clock_Voltage_Limit_Table;
>
> typedef struct _ATOM_PPLIB_CAC_Leakage_Record
> @@ -8126,7 +8126,7 @@ typedef struct _ATOM_PPLIB_CAC_Leakage_Record
> typedef struct _ATOM_PPLIB_CAC_Leakage_Table
> {
> UCHAR ucNumEntries; // Number of entries.
> - ATOM_PPLIB_CAC_Leakage_Record entries[1]; // Dynamically allocate entries.
> + ATOM_PPLIB_CAC_Leakage_Record entries[0]; // Dynamically allocate entries.
> }ATOM_PPLIB_CAC_Leakage_Table;
>
> typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Record
> @@ -8141,7 +8141,7 @@ typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Record
> typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Table
> {
> UCHAR ucNumEntries; // Number of entries.
> - ATOM_PPLIB_PhaseSheddingLimits_Record entries[1]; // Dynamically allocate entries.
> + ATOM_PPLIB_PhaseSheddingLimits_Record entries[0]; // Dynamically allocate entries.
> }ATOM_PPLIB_PhaseSheddingLimits_Table;
>
> typedef struct _VCEClockInfo{
> @@ -8153,7 +8153,7 @@ typedef struct _VCEClockInfo{
>
> typedef struct _VCEClockInfoArray{
> UCHAR ucNumEntries;
> - VCEClockInfo entries[1];
> + VCEClockInfo entries[0];
> }VCEClockInfoArray;
>
> typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record
> @@ -8165,7 +8165,7 @@ typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record
> typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table
> {
> UCHAR numEntries;
> - ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record entries[1];
> + ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record entries[0];
> }ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table;
>
> typedef struct _ATOM_PPLIB_VCE_State_Record
> @@ -8177,7 +8177,7 @@ typedef struct _ATOM_PPLIB_VCE_State_Record
> typedef struct _ATOM_PPLIB_VCE_State_Table
> {
> UCHAR numEntries;
> - ATOM_PPLIB_VCE_State_Record entries[1];
> + ATOM_PPLIB_VCE_State_Record entries[0];
> }ATOM_PPLIB_VCE_State_Table;
>
>
> @@ -8199,7 +8199,7 @@ typedef struct _UVDClockInfo{
>
> typedef struct _UVDClockInfoArray{
> UCHAR ucNumEntries;
> - UVDClockInfo entries[1];
> + UVDClockInfo entries[0];
> }UVDClockInfoArray;
>
> typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record
> @@ -8211,7 +8211,7 @@ typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record
> typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table
> {
> UCHAR numEntries;
> - ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record entries[1];
> + ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record entries[0];
> }ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table;
>
> typedef struct _ATOM_PPLIB_UVD_State_Record
> @@ -8223,7 +8223,7 @@ typedef struct _ATOM_PPLIB_UVD_State_Record
> typedef struct _ATOM_PPLIB_UVD_State_Table
> {
> UCHAR numEntries;
> - ATOM_PPLIB_UVD_State_Record entries[1];
> + ATOM_PPLIB_UVD_State_Record entries[0];
> }ATOM_PPLIB_UVD_State_Table;
>
>
> @@ -8245,7 +8245,7 @@ typedef struct _ATOM_PPLIB_SAMClk_Voltage_Limit_Record
>
> typedef struct _ATOM_PPLIB_SAMClk_Voltage_Limit_Table{
> UCHAR numEntries;
> - ATOM_PPLIB_SAMClk_Voltage_Limit_Record entries[1];
> + ATOM_PPLIB_SAMClk_Voltage_Limit_Record entries[0];
> }ATOM_PPLIB_SAMClk_Voltage_Limit_Table;
>
> typedef struct _ATOM_PPLIB_SAMU_Table
> @@ -8473,12 +8473,12 @@ typedef struct {
>
> typedef struct {
> VFCT_IMAGE_HEADER VbiosHeader;
> - UCHAR VbiosContent[1];
> + UCHAR VbiosContent[0];
> }GOP_VBIOS_CONTENT;
>
> typedef struct {
> VFCT_IMAGE_HEADER Lib1Header;
> - UCHAR Lib1Content[1];
> + UCHAR Lib1Content[0];
> }GOP_LIB1_CONTENT;
>
> #pragma pack()
> --
> 1.8.3.1
>
More information about the dri-devel
mailing list