Uploaded image for project: 'Embedded Software & Tools'
  1. Embedded Software & Tools
  2. EXT_EP-11669

CDD_IPC: GHS compiler throws errors for flexible array variable


    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: High High
    • MCAL
    • MCAL-23487
    • MCUSW_J7_09.01.00
    • MCUSW_J7_09.02.00
    • Hide
      j7200-evm j721e-evm j721s2-evm j784s4-evm

      The MCAL IPC library goes into the ASIL-D MCU R5F core. Customer is using GHS Safety Certified Compiler which generates a number of errors and warnings, which do not show up with TI ARM Clang Compiler. 

      mcal/CddIpc/ipc_baremetal_hw/src/ipc_api.c", line 143 (col. 26): error #1029: type containing an unknown-size array is not allowedError line marked ith ==>

       *  \brief Element to hold payload copied onto receiver's queue.
      typedef struct RPMessage_MsgElem_s
          IpcUtils_QElem    elem;          /**< Allow list linking.          */
          uint32          len;           /**< Length of data               */
          uint32          src;           /**< Src address/endPt of the msg */
          uint32          procId;        /**< Processor sending the msg    */
      ==>    uint8          data[];        /**< payload begins here          */
      } RPMessage_MsgElem;/* The RPMessage Object */
      typedef struct RPMessage_Object_s
          uint32             endPt;        /**< Unique id (procId | queueIndex) */
          void                 *semHandle;   /**< I/O Completion                 */
          RPMessage_Callback   cb;           /**< RPMessage Callback */
          void*                arg;          /**< Callback argument */
          IpcUtils_QHandle     queue;        /**< Queue of pending messages             */
          uint8              unblocked;    /**< Use with signal to unblock _receive() */
          IpcUtils_HeapParams  heapParams;   /* Save the heapBuf params to delete Heap   */
          IpcUtils_HeapHandle  heap;         /* Heap from which to allocate free messages */
          RPMessage_EndptPool  *pool;        /**< track associated pool for cleanup */
          void*                recv_buffer;  /**< Application buffer from RPMessage_recv() */
          RPMessage_MsgElem    payload;      /**< Message info for RPMessage_recv() */
      } RPMessage_Object;

      GHS doesn't like any structure or variable that has zero size. Given that this is data generated by TI, Customer insists TI fix the issues.

            syncuser TI User
            syncuser TI User
            0 Vote for this issue
            2 Start watching this issue