Crash file attached.
--
PMatos


Member of the CSR plc group of companies. CSR plc registered in England and 
Wales, registered number 4187346, registered office Churchill House, Cambridge 
Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom
More information can be found at www.csr.com. Follow CSR on Twitter at 
http://twitter.com/CSR_PLC and read our blog at www.csr.com/blog
 typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned long uint32;
typedef unsigned int size_t;
typedef unsigned bool;
enum h4_packet_indicator_enum
;
enum protocol_acceleration_enum
;
enum uart_event_group_indices_enum
;
enum uart_rx_protocol_enum
;
enum uart_bcsp_rx_last_seq_num_read_posn_enum
;
typedef enum int_source_enum int_source;
enum nfc_embedded_regs_enum
;
enum nfc_sys_debug_source_enum
;
enum nfc_status_posn_enum
;
enum bus_bridge_tx_clock_select_enum
;
enum lpc_status_posn_enum
;
enum lpc_status_mask_enum
;
enum ram_ctrl_p0_dmem_ds_mask_enum
;
enum ram_ctrl_p0_dmem_ls_posn_enum
;
enum ram_ctrl_p0_dmem_ls_mask_enum
;
enum ram_ctrl_p0_dmem_sd_posn_enum
;
typedef enum mmu_buffer_size_enum mmu_buffer_size;
enum mmu_gw_config_enum
;
enum mmu_proc_read_ports_posn_enum
;
enum mmu_proc_read_ports_mask_enum
;
enum mmu_reg_access_source_enum
;
enum mmu_buffer_access_do_action_enum
;
enum mmu_buffer_access_handle_posn_enum
;
enum mmu_proc_read_ports_disable_read_cache_posn_enum
;
enum int_sw_event_posn_enum
;
enum deep_sleep_wakeup_posn_enum
;
enum deep_sleep_wakeup_enum
;
enum system_bus_enum
;
typedef enum system_bus_enum system_bus;
enum test_enables_posn_enum
;

typedef struct mmu_handle
 mmu_handle;
typedef uint32 mmu_offset;
typedef struct mmu_bufregion
 mmu_bufregion;
;
;
typedef enum mmu_proc_port_mode
 mmu_proc_port_mode;
typedef struct mmu_proc_port_state
 mmu_proc_port_state;
typedef struct {
} buf_mapping_state;
typedef struct BUFFER  BUFFER;
;
;
;
typedef enum nbuffer_mode_enum
 NFC_DATA_MODE;
typedef enum nbuf_md_type_enum
 NBUF_MD_TYPE;
typedef struct msg_info_union
 MSG_INFO;
typedef struct nbuf_data_msg_struct
{
    uint16 front;
    uint16 behind;
} NBUF_MD_FIXED;
typedef struct NBUF_DATA_MSG_NDEP  NBUF_DATA_MSG_NDEP;
typedef struct nbuf_md_ndep_struct
 NBUF_MD_NDEP;
typedef struct NBUF_DATA_MSG_TAGEMU  NBUF_DATA_MSG_TAGEMU;
typedef struct nbuf_md_tagemu_struct
 NBUF_MD_TAGEMU;
typedef struct NBUF_DATA_MSG_TAGRW
{
    uint16 length;
} NBUF_DATA_MSG_TAGRW;
typedef struct nbuf_md_tagrw_struct
{
    NBUF_DATA_MSG_TAGRW ring[8];
} NBUF_MD_TAGRW;
typedef union nbuf_md_variable_union
{
    NBUF_MD_TAGRW TAGRW;
} NBUF_MD_VARIABLE;
typedef struct nbuf_md_struct
{
    NBUF_MD_FIXED f;
    NBUF_MD_VARIABLE v;
} NBUF_MD;
typedef struct nbuffer_struct
 NBUFFER;
;
extern const uint8 *nbuf_raw_read_map_8bit(NBUFFER *buf);
;
;
typedef uint16 NLINK_DESCR;
typedef enum link_desc_created_type_enum
 CREATED_TYPE;
typedef enum link_desc_service_type_enum
 SERVICE_TYPE;
typedef enum tag_service_msg_id_enum
 TAG_MODE;
typedef struct tag_ndef_cnf_struct
 TAG_NDEF_CNF;
typedef struct tag_deactivate_req_struct
 TAG_DEACTIVATE_REQ;
typedef struct tag_activate_req_struct
 TAG_ACTIVATE_REQ;
;
typedef struct tag_ndef_get_info_req_struct
 TAG_NDEF_GET_INFO_REQ;
typedef struct tag_ndef_get_info_cnf_struct
 TAG_NDEF_GET_INFO_CNF;
typedef struct tag_ndef_read_req_struct
 TAG_NDEF_READ_REQ;
typedef struct tag_ndef_read_ind_struct
 TAG_NDEF_READ_IND;
typedef struct tag_ndef_write_req_struct
 TAG_NDEF_WRITE_REQ;
;
struct tag_msg_struct
;
typedef uint32 TLV_LEN;
typedef struct t1_memory_map_struct
{
    uint8 hdr[2];
    uint8 uid[4];
    uint8 cc[];
} T1_MEMORY_MAP;
typedef struct t2_memory_map_struct
 T2_MEMORY_MAP;
typedef enum tag_state_enum
{
    INITIALISED,
    READ_WRITE,
    READ_ONLY,
} TAG_STATE;
typedef struct tlv_struct
{
    TLV_LEN max_ndef_length;
    uint8 num_ndef;
    struct
    {
        T1_MEMORY_MAP t1;
    } mp;
} TAG_MEM_CONFIG;
;
;
;
;
extern TAG_STATE tag_mem_config_get_tag_state(void);
    typedef uint16 fsm_event_t;
    typedef uint8 fsm_state_t;
    typedef uint16 fsm32_state_t;
    typedef uint8 fsm16_state_t;
    typedef uint8 fsm_result_t;
    typedef uint8 fsm_logging_t;
    typedef struct
    {
    } FSM_FULL_DEFINITION_T;
    typedef struct
    {
    } FSM_SPARSE_TRANSITION_T;
    typedef struct
    {
    } FSM_SPARSE16_TRANSITION_T;
    typedef struct
    {
    } FSM_SPARSE_DEFINITION_T;
    typedef struct
    {
    } FSM_SPARSE32_TRANSITION_T;
    typedef struct
    {
    } FSM_SPARSE32_DEFINITION_T;
    typedef struct
    {
    } FSM_SPARSE16_DEFINITION_T;
    typedef struct
    {
    } FSM_TRANSITION_T;
    ;
    ;
    ;
    ;
;
typedef enum NFC_PROT_TYPE_E
NFC_PROT_TYPE;
typedef enum NFC_INITIATOR_PROT_E
NFC_INITIATOR_PROT;
typedef enum NFC_DET_MODE_E
 NFC_DET_MODE;
typedef enum NFC_DATA_RATE_E
NFC_DATA_RATE_T;
typedef enum max_payload_size_enum
 MAX_PAYLOAD_SIZE;
typedef enum nfc_dep_lri_max_payl_size_enum
 NFC_DEP_LRI_MAX_PAYL_SIZE;
typedef struct rf_specific_nfc_a_params_struct
 RF_SPECIFIC_NFC_A_PARAMS;
typedef enum atq_length_enum
 ATQ_LENGTH;
typedef struct rf_specific_nfc_b_params_struct
 RF_SPECIFIC_NFC_B_PARAMS;
typedef struct rf_specific_nfc_f_params_struct
 RF_SPECIFIC_NFC_F_PARAMS;
typedef struct rf_specific_nfc_p2p_active_params_struct
 RF_SPECIFIC_NFC_P2P_ACTIVE_PARAMS;
typedef union rf_specific_params_union
 RF_SPECIFIC_PARAMS;
typedef struct activation_params_struct
 ACTIVATION_PARAMS;
typedef enum b2f_msg_enum
 B2F_MSG_ID;
typedef struct nfc_tp0_struct
 NFC_TP5;
typedef enum nfc_target_personality_type_enum
 NFC_TARGET_PERSONALITY_TYPE;
typedef enum rf_personality_protocol_enum
 RF_PERSONALITY_PROTOCOL;
typedef struct b2f_personality_config_req_struct
 B2F_PERSONALITY_CONFIG_REQ;
typedef struct b2f_tp_en_struct
 B2F_TP_EN;
typedef struct b2f_tp_dis_struct
 B2F_TP_DIS;
typedef struct b2f_tdm_conf_struct
 B2F_TDM_CONF;
typedef struct b2f_initiator_conf_struct
 B2F_CONF_AS_INITIATOR;
typedef struct b2f_ba_tag_tx_data_req_struct
 B2F_BA_TAG_TX_DATA_REQ;
typedef struct b2f_nba_tx_data_req_struct
 B2F_NBA_TX_DATA_REQ;
typedef struct b2f_non_buf_data_tx_req_struct
 B2F_NON_BUF_DATA_TX_REQ;
typedef enum nrc_data_test_cmd_enum
 NRC_DATA_TEST_CMD;
typedef struct b2f_nrc_test_trigger_req_struct
 B2F_NRC_TEST_TRIGGER_REQ;
typedef struct ndep_hdr_struct
 NDEP_TGT;
typedef struct b2f_ndep_act_req_struct
 B2F_NDEP_ACT_REQ;
typedef struct b2f_ndep_deact_req_struct
 B2F_NDEP_DEACT_REQ;
typedef struct b2f_ndep_data_req_struct
 B2F_NDEP_DATA_REQ;
typedef struct b2f_nfc_a_dep_framing_req_struct
 B2F_NFC_A_DEP_FRAMING_MODE_REQ;
typedef struct b2f_msg_params_union
 B2F_MSG_PARAMS;
typedef struct b2f_msg_struct
 B2F_MSG;
typedef enum f2b_msg_id_enum
 F2B_MSG_ID;
typedef struct f2b_colln_detect_struct
 F2B_COLLN_DETECT;
typedef struct f2b_auto_det_prot_struct
 F2B_AUTO_DET_PROT;
typedef struct f2b_rx_data_struct
 F2B_RX_DATA;
typedef struct f2b_non_buf_data_rx_ind_struct
 F2B_NON_BUF_DATA_RX_IND;
typedef struct f2b_ndep_act_ind_struct
 F2B_NDEP_ACT_IND;
typedef struct f2b_ndep_deact_ind_struct
 F2B_NDEP_DEACT_IND;
typedef struct f2b_ndep_data_ind_struct
 F2B_NDEP_DATA_IND;
typedef enum ndep_err_id_enum
 NDEP_ERR_ID;
typedef struct f2b_ndep_err_ind_struct
 F2B_NDEP_ERR_IND;
typedef struct f2b_hal_tar_act_ind_struct
 F2B_HAL_TAR_ACT_IND;
typedef struct f2b_hal_tar_sel_ind_struct
 F2B_HAL_TAR_SEL_IND;
typedef struct f2b_msg_params_union
 F2B_MSG_PARAMS;
typedef struct f2b_msg_struct
 F2B_MSG;
typedef struct t1_rw_fsm_data_struct
{
    fsm16_state_t state;
    TAG_MEM_CONFIG tag_mem_config;
    NBUFFER *p_tx_sdu;
    NBUFFER *p_rx_sdu;
    uint8 ndef_msg_index;
    uint32 ndef_length;
    uint8 segment_pos;
    bool ndef_complete;
} T1_RW_FSM_DATA;

typedef struct parser_init_struct
 PARSER_INIT;
typedef struct parser_ndef_get_info_cnf_struct
 PARSER_NDEF_GET_INFO_CNF;
typedef struct parser_ndef_write_cnf_struct
 PARSER_NDEF_READ_IND;
;
;
;
;
;
typedef struct sensb_req_struct
 SENSF_RES;
typedef enum mode_enum
 MODE;
typedef struct nfcid1_union
 NFCID1;
typedef struct nfcid_struct
 NFCID;
;
;
;
;

;
;
;
typedef enum panicid
 panicid;
enum {
    panic_seg_fault_xap = 0x00
};
;
static bool t1_is_v_write_req(TAG_MEM_CONFIG *p_tag_m_cnf)
{
    bool valid;
    if (0 == (0x10 == (p_tag_m_cnf->mp.t1.hdr[0] & 0xF0)))
    
        valid = 0;
    
    else
    
        switch(tag_mem_config_get_tag_state())
        {
        case READ_WRITE:
            valid = 1;
        default:
            break;
        }
    
    return valid;
}
bool t1_is_null_tlv_required_required;
T1_RW_FSM_DATA * t1_is_null_tlv_required_p_t1_rw_fsm_data;
static bool t1_is_null_tlv_required(void)
{
    
    if(t1_is_null_tlv_required_p_t1_rw_fsm_data->segment_pos <
       t1_is_null_tlv_required_p_t1_rw_fsm_data->tag_mem_config.max_ndef_length &&
       t1_is_null_tlv_required_p_t1_rw_fsm_data->segment_pos <  -  + 2 )
    
        t1_is_null_tlv_required_required = 0;
    
    return t1_is_null_tlv_required_required;
}
T1_RW_FSM_DATA * t1_is_ndef_complete_p_t1_rw_fsm_data;
static bool t1_is_ndef_complete(void)
{
    return t1_is_ndef_complete_p_t1_rw_fsm_data->ndef_complete;
}
bool t1_validate_physical_mem_size_valid;
uint16 t1_validate_physical_mem_size_physical_mem_size;
bool t1_validate_physical_mem_size_static_mem;
static bool t1_validate_physical_mem_size(
                                          void)
{
    
    if (t1_validate_physical_mem_size_static_mem)
    
    
    return t1_validate_physical_mem_size_valid;
}
uint16 t1_calculate_max_ndef_length_max_ndef_length;
uint16 t1_calculate_max_ndef_length_tlv_header_size;
uint16 t1_calculate_max_ndef_length_physical_mem_size;
static uint16 t1_calculate_max_ndef_length(void)
{
    
    
    t1_calculate_max_ndef_length_max_ndef_length = t1_calculate_max_ndef_length_max_ndef_length - t1_calculate_max_ndef_length_tlv_header_size;
    return t1_calculate_max_ndef_length_max_ndef_length;
}
TLV_LEN t1_find_next_ndef_msg_next_tlv_pos = 0;
TAG_MEM_CONFIG * t1_find_next_ndef_msg_p_tag_m_cnf;
const uint8 * t1_find_next_ndef_msg_p_buf;
TLV_LEN t1_find_next_ndef_msg_size;
bool * t1_find_next_ndef_msg_nb_ndef_found;
TLV_LEN t1_find_next_ndef_msg_offset;
static TLV_LEN t1_find_next_ndef_msg(
                                     
                                     
                                     
                                     void)
{
    
    
    return t1_find_next_ndef_msg_next_tlv_pos;
}
TLV_LEN t1_find_ndef_tlv_in_rall_resp_tlv_offset = 0;
TLV_LEN t1_find_ndef_tlv_in_rall_resp_tlv_size = 1;
bool t1_find_ndef_tlv_in_rall_resp_nb_ndef_found;
uint8 t1_find_ndef_tlv_in_rall_resp_nb_msg = 0;
TAG_MEM_CONFIG * t1_find_ndef_tlv_in_rall_resp_p_tag_m_cnf;
const uint8 * t1_find_ndef_tlv_in_rall_resp_p_buf;
TLV_LEN t1_find_ndef_tlv_in_rall_resp_size;
static uint8 t1_find_ndef_tlv_in_rall_resp(
                                           
                                           void)
{
    
    
    
    
    while (t1_find_ndef_tlv_in_rall_resp_tlv_offset < t1_find_ndef_tlv_in_rall_resp_size &&
           t1_find_ndef_tlv_in_rall_resp_tlv_size != 0)
    
        t1_find_ndef_tlv_in_rall_resp_tlv_size = t1_find_next_ndef_msg(
                                         
                                         
                                         
                                         );
        
    
    return t1_find_ndef_tlv_in_rall_resp_nb_msg;
}

;
static fsm_event_t t1_rw_fn_start_request(T1_RW_FSM_DATA *p_t1_rw_fsm_data)
{
    return 0;;
}
void * t1_rw_fn_ndef_read_req_pv_arg1;
void * t1_rw_fn_ndef_read_req_pv_arg2;
fsm_event_t t1_rw_fn_ndef_read_req( void)
{
    T1_RW_FSM_DATA *p_t1_rw_fsm_data =  t1_rw_fn_ndef_read_req_pv_arg1;
    return t1_rw_fn_start_request(p_t1_rw_fsm_data);;
}
TAG_MEM_CONFIG *t1_rw_fn_validate_rall_rsp_p_tag_m_cnf;
uint8 t1_rw_fn_validate_rall_rsp_p_tag_m_cnf_2_0_0_0;
uint8 t1_rw_fn_validate_rall_rsp_p_tag_m_cnf_2_0_1_3;
uint8 t1_rw_fn_validate_rall_rsp_p_tag_m_cnf_2_0_1_0;
uint16 t1_rw_fn_validate_rall_rsp_read_size = 0;
const uint8 *t1_rw_fn_validate_rall_rsp_read_data;
const uint8 t1_rw_fn_validate_rall_rsp_read_data_3;
const uint8 t1_rw_fn_validate_rall_rsp_read_data_0;
uint16 t1_rw_fn_validate_rall_rsp_phy_mem_size;
void * t1_rw_fn_validate_rall_rsp_pv_arg1;
void * t1_rw_fn_validate_rall_rsp_pv_arg2;
fsm_event_t t1_rw_fn_validate_rall_rsp(
                                       void)
{
    
    
    
    
    T1_RW_FSM_DATA *p_t1_rw_fsm_data =  t1_rw_fn_validate_rall_rsp_pv_arg1;
    NBUFFER *p_tag_rx_buf =  t1_rw_fn_validate_rall_rsp_pv_arg2;
    
    
    
    
    
    t1_rw_fn_validate_rall_rsp_p_tag_m_cnf = &p_t1_rw_fsm_data->tag_mem_config;
    if (0 == p_tag_rx_buf)
    ;
    
        return  6;
    
    if (!t1_rw_fn_validate_rall_rsp_p_tag_m_cnf_2_0_1_0 == t1_rw_fn_validate_rall_rsp_read_data_0 &&
          t1_rw_fn_validate_rall_rsp_p_tag_m_cnf_2_0_1_3 == t1_rw_fn_validate_rall_rsp_read_data_3)
    
    
    if (t1_validate_physical_mem_size( ))
    
        t1_rw_fn_validate_rall_rsp_p_tag_m_cnf->max_ndef_length = t1_calculate_max_ndef_length();
    
    
        t1_find_ndef_tlv_in_rall_resp(
            
            
            );
    
}

;

;
uint8 t1_rw_fn_fill_validate_write_req_p_t1_rw_fsm_data_4;
const uint8 *t1_rw_fn_fill_validate_write_req_read_data = 0;
void * t1_rw_fn_fill_validate_write_req_pv_arg1;
void * t1_rw_fn_fill_validate_write_req_pv_arg2;
fsm_event_t t1_rw_fn_fill_validate_write_req(
                                             void)
{
    T1_RW_FSM_DATA *p_t1_rw_fsm_data =  t1_rw_fn_fill_validate_write_req_pv_arg1;
    
    if (0 == t1_is_v_write_req(&p_t1_rw_fsm_data->tag_mem_config))
    
        return  9;
    
    
        NBUFFER *p_tag_rx_buf =  t1_rw_fn_fill_validate_write_req_pv_arg2;
        
        t1_rw_fn_fill_validate_write_req_read_data = nbuf_raw_read_map_8bit(p_tag_rx_buf);
        if ((0x00 == t1_rw_fn_fill_validate_write_req_read_data[ + 4] ||
             0x03 == t1_rw_fn_fill_validate_write_req_read_data[ + 4]) &&
            0 == t1_rw_fn_fill_validate_write_req_p_t1_rw_fsm_data_4)
        ;
        return  11;
    
}

;

;
T1_RW_FSM_DATA * t1_rw_fn_rx_data_ind_data_cmpl_p_t1_rw_fsm_data;
static fsm_event_t t1_rw_fn_rx_data_ind_data_cmpl(
    void)
{
    if (t1_is_null_tlv_required())
    ;
    
        (void) t1_is_ndef_complete;
        return  13;
    
}
fsm_event_t t1_rw_fn_rx_data_ind_wait_write_data_ret_event = 0xFFFF;
uint16 t1_rw_fn_rx_data_ind_wait_write_data_tx_sdu_size = 0;
void * t1_rw_fn_rx_data_ind_wait_write_data_pv_arg1;
void * t1_rw_fn_rx_data_ind_wait_write_data_pv_arg2;
fsm_event_t t1_rw_fn_rx_data_ind_wait_write_data(
                                                 void)
{
    
    T1_RW_FSM_DATA *p_t1_rw_fsm_data =  t1_rw_fn_rx_data_ind_wait_write_data_pv_arg1;
    
        
        if (p_t1_rw_fsm_data->segment_pos < t1_rw_fn_rx_data_ind_wait_write_data_tx_sdu_size)
        
        
            t1_rw_fn_rx_data_ind_wait_write_data_ret_event = t1_rw_fn_rx_data_ind_data_cmpl();
        
    
    return t1_rw_fn_rx_data_ind_wait_write_data_ret_event;
}

;

;

;

;

;
T1_RW_FSM_DATA * run_t1_rw_state_machine_p_t1_rw_fsm_data;
void * run_t1_rw_state_machine_param;
fsm_event_t run_t1_rw_state_machine_event;
static void run_t1_rw_state_machine(
                                    
                                    void)
{
    if (0 !=  1)
    ;
}
T1_RW_FSM_DATA *t1_rw_fsm_init_req_p_t1_rw_fsm_data;
uint8 * t1_rw_fsm_init_req_p_uid;
T1_RW_FSM_DATA *t1_rw_fsm_init_req(void)
{
    
    t1_rw_fsm_init_req_p_t1_rw_fsm_data =
         0;
    run_t1_rw_state_machine(
                            
                             );
    return t1_rw_fsm_init_req_p_t1_rw_fsm_data;
}
 

// /home/pm18/local/libexec/clang_delta --transformation=union-to-struct --counter=1 test.c
 typedef union nbuf_md_variable_union NBUFFER;
unsigned char *nbuf_raw_read_map_8bit (  );
typedef struct
{
  int hdr[0];
} T1_MEMORY_MAP;
typedef enum
{
  READ_WRITE
} TAG_STATE;
typedef struct
{
  struct
  {
    T1_MEMORY_MAP t1;
  } mp;
} TAG_MEM_CONFIG;
TAG_STATE tag_mem_config_get_tag_state (  );
typedef struct
{
  TAG_MEM_CONFIG tag_mem_config;
} T1_RW_FSM_DATA;
static int
t1_is_v_write_req ( TAG_MEM_CONFIG * p_tag_m_cnf )
{
  int valid;
  if   ( p_tag_m_cnf->mp.t1.hdr[0] )  
    valid = 0;
  else
    switch ( tag_mem_config_get_tag_state (  ) )
      
      case 0:
	valid = 1;
      
  return valid;
}
unsigned char *t1_rw_fn_fill_validate_write_req_read_data;
void *t1_rw_fn_fill_validate_write_req_pv_arg1;
void *t1_rw_fn_fill_validate_write_req_pv_arg2;
NBUFFER *t1_rw_fn_fill_validate_write_req_p_tag_rx_buf = 0;
void
t1_rw_fn_fill_validate_write_req (  )
{
  T1_RW_FSM_DATA *p_t1_rw_fsm_data = 0;
  if ( t1_is_v_write_req ( &p_t1_rw_fsm_data->tag_mem_config ) )
    return;
  
  nbuf_raw_read_map_8bit ( t1_rw_fn_fill_validate_write_req_p_tag_rx_buf );
}
 

// /home/pm18/local/libexec/clang_delta --transformation=union-to-struct --counter=1 test.c

Reply via email to