Merge branch 'bugfix/build_with_clang' into 'master'

fix build errors with clang

Closes IDFGH-13238

See merge request espressif/esp-idf!32099
This commit is contained in:
Ivan Grokhotkov
2024-07-15 21:40:40 +08:00
9 changed files with 69 additions and 66 deletions

View File

@@ -260,8 +260,7 @@ esp_err_t emac_esp_custom_ioctl(esp_eth_mac_t *mac, int cmd, void *data)
{ {
emac_esp32_t *emac = __containerof(mac, emac_esp32_t, parent); emac_esp32_t *emac = __containerof(mac, emac_esp32_t, parent);
switch (cmd) switch (cmd) {
{
case ETH_MAC_ESP_CMD_PTP_ENABLE: case ETH_MAC_ESP_CMD_PTP_ENABLE:
return ESP_ERR_NOT_SUPPORTED; return ESP_ERR_NOT_SUPPORTED;
case ETH_MAC_ESP_CMD_SET_TDES0_CFG_BITS: case ETH_MAC_ESP_CMD_SET_TDES0_CFG_BITS:
@@ -583,7 +582,7 @@ static esp_err_t emac_esp_config_data_interface(const eth_esp32_emac_config_t *e
{ {
esp_err_t ret = ESP_OK; esp_err_t ret = ESP_OK;
switch (esp32_emac_config->interface) { switch (esp32_emac_config->interface) {
case EMAC_DATA_INTERFACE_MII: case EMAC_DATA_INTERFACE_MII: {
/* MII interface GPIO initialization */ /* MII interface GPIO initialization */
#if SOC_EMAC_MII_USE_GPIO_MATRIX #if SOC_EMAC_MII_USE_GPIO_MATRIX
ESP_GOTO_ON_ERROR(emac_esp_gpio_matrix_init_mii(&esp32_emac_config->emac_dataif_gpio.mii), err, TAG, "failed to initialize EMAC MII GPIO Matrix"); ESP_GOTO_ON_ERROR(emac_esp_gpio_matrix_init_mii(&esp32_emac_config->emac_dataif_gpio.mii), err, TAG, "failed to initialize EMAC MII GPIO Matrix");
@@ -599,7 +598,8 @@ static esp_err_t emac_esp_config_data_interface(const eth_esp32_emac_config_t *e
emac_hal_clock_enable_mii(&emac->hal); emac_hal_clock_enable_mii(&emac->hal);
} }
break; break;
case EMAC_DATA_INTERFACE_RMII: }
case EMAC_DATA_INTERFACE_RMII: {
/* RMII interface GPIO initialization */ /* RMII interface GPIO initialization */
const eth_mac_rmii_gpio_config_t *rmii_data_gpio = NULL; const eth_mac_rmii_gpio_config_t *rmii_data_gpio = NULL;
#if SOC_EMAC_USE_MULTI_IO_MUX #if SOC_EMAC_USE_MULTI_IO_MUX
@@ -640,6 +640,7 @@ static esp_err_t emac_esp_config_data_interface(const eth_esp32_emac_config_t *e
ESP_GOTO_ON_FALSE(false, ESP_ERR_INVALID_ARG, err, TAG, "invalid EMAC clock mode"); ESP_GOTO_ON_FALSE(false, ESP_ERR_INVALID_ARG, err, TAG, "invalid EMAC clock mode");
} }
break; break;
}
default: default:
ESP_GOTO_ON_FALSE(false, ESP_ERR_INVALID_ARG, err, TAG, "invalid EMAC Data Interface:%i", esp32_emac_config->interface); ESP_GOTO_ON_FALSE(false, ESP_ERR_INVALID_ARG, err, TAG, "invalid EMAC Data Interface:%i", esp32_emac_config->interface);
} }

View File

@@ -136,7 +136,7 @@ static IRAM_ATTR void receive_ack_timeout_timer_start(uint32_t duration)
} }
#endif #endif
static void ieee802154_rx_frame_info_update(void) static IEEE802154_NOINLINE void ieee802154_rx_frame_info_update(void)
{ {
uint8_t len = s_rx_frame[s_rx_index][0]; uint8_t len = s_rx_frame[s_rx_index][0];
int8_t rssi = s_rx_frame[s_rx_index][len - 1]; // crc is not written to rx buffer int8_t rssi = s_rx_frame[s_rx_index][len - 1]; // crc is not written to rx buffer

View File

@@ -49,7 +49,7 @@ IEEE802154_STATIC IEEE802154_INLINE bool is_suported_frame_type(uint8_t frame_ty
frame_type == IEEE802154_FRAME_TYPE_ACK || frame_type == IEEE802154_FRAME_TYPE_COMMAND); frame_type == IEEE802154_FRAME_TYPE_ACK || frame_type == IEEE802154_FRAME_TYPE_COMMAND);
} }
IEEE802154_STATIC bool is_dst_panid_present(const uint8_t *frame) IEEE802154_STATIC IEEE802154_NOINLINE bool is_dst_panid_present(const uint8_t *frame)
{ {
uint8_t dst_mode = dst_addr_mode(frame); uint8_t dst_mode = dst_addr_mode(frame);
bool dst_panid_present = false; bool dst_panid_present = false;
@@ -79,7 +79,7 @@ IEEE802154_STATIC bool is_dst_panid_present(const uint8_t *frame)
return dst_panid_present; return dst_panid_present;
} }
IEEE802154_STATIC bool is_src_panid_present(const uint8_t *frame) IEEE802154_STATIC IEEE802154_NOINLINE bool is_src_panid_present(const uint8_t *frame)
{ {
uint8_t src_mode = src_addr_mode(frame); uint8_t src_mode = src_addr_mode(frame);
bool panid_compression = is_panid_compression(frame); bool panid_compression = is_panid_compression(frame);
@@ -160,7 +160,7 @@ IEEE802154_STATIC IRAM_ATTR uint8_t ieee802154_frame_address_size(const uint8_t
return address_size; return address_size;
} }
IEEE802154_STATIC uint8_t ieee802154_frame_security_header_offset(const uint8_t *frame) IEEE802154_STATIC IEEE802154_NOINLINE uint8_t ieee802154_frame_security_header_offset(const uint8_t *frame)
{ {
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_ADDR_MODE, IEEE802154_TAG, "invalid frame type"); ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_ADDR_MODE, IEEE802154_TAG, "invalid frame type");
uint8_t offset = ieee802154_frame_address_offset(frame); uint8_t offset = ieee802154_frame_address_offset(frame);
@@ -174,7 +174,7 @@ IEEE802154_STATIC uint8_t ieee802154_frame_security_header_offset(const uint8_t
return offset; return offset;
} }
IEEE802154_STATIC uint8_t ieee802154_frame_get_security_field_len(const uint8_t *frame) IEEE802154_STATIC IEEE802154_NOINLINE uint8_t ieee802154_frame_get_security_field_len(const uint8_t *frame)
{ {
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_TAG, "invalid frame type"); ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_TAG, "invalid frame type");

View File

@@ -2,6 +2,7 @@
archive: libieee802154.a archive: libieee802154.a
entries: entries:
if IEEE802154_ENABLED = y: if IEEE802154_ENABLED = y:
# When adding static functions here, add IEEE802154_NOINLINE attribute to them
esp_ieee802154_ack: ieee802154_ack_config_pending_bit (noflash) esp_ieee802154_ack: ieee802154_ack_config_pending_bit (noflash)
esp_ieee802154_dev: ieee802154_rx_frame_info_update (noflash) esp_ieee802154_dev: ieee802154_rx_frame_info_update (noflash)
esp_ieee802154_dev: ieee802154_isr (noflash) esp_ieee802154_dev: ieee802154_isr (noflash)

View File

@@ -245,6 +245,7 @@ extern void esp_ieee802154_timer1_done(void);
#define IEEE802154_STATIC static #define IEEE802154_STATIC static
#define IEEE802154_INLINE inline #define IEEE802154_INLINE inline
#endif // CONFIG_IEEE802154_TEST #endif // CONFIG_IEEE802154_TEST
#define IEEE802154_NOINLINE __attribute__((noinline))
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -1264,6 +1264,7 @@ static esp_err_t _port_cmd_reset(port_t *port)
ret = ESP_OK; ret = ESP_OK;
bailout: bailout:
// Reinitialize channel registers // Reinitialize channel registers
(void) 0; // clang doesn't allow variable declarations after labels
pipe_t *pipe; pipe_t *pipe;
TAILQ_FOREACH(pipe, &port->pipes_idle_tailq, tailq_entry) { TAILQ_FOREACH(pipe, &port->pipes_idle_tailq, tailq_entry) {
usb_dwc_hal_chan_set_ep_char(port->hal, pipe->chan_obj, &pipe->ep_char); usb_dwc_hal_chan_set_ep_char(port->hal, pipe->chan_obj, &pipe->ep_char);

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2019-2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2019-2024 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -200,11 +200,10 @@ static esp_err_t set_config_endpoint(void *config, const char *endpoint_name, ui
void wifi_prov_scheme_ble_event_cb_free_btdm(void *user_data, wifi_prov_cb_event_t event, void *event_data) void wifi_prov_scheme_ble_event_cb_free_btdm(void *user_data, wifi_prov_cb_event_t event, void *event_data)
{ {
switch (event) { switch (event) {
case WIFI_PROV_INIT: case WIFI_PROV_INIT: {
#ifdef CONFIG_BT_CONTROLLER_ENABLED #ifdef CONFIG_BT_CONTROLLER_ENABLED
esp_err_t err;
/* Release BT memory, as we need only BLE */ /* Release BT memory, as we need only BLE */
err = esp_bt_mem_release(ESP_BT_MODE_CLASSIC_BT); esp_err_t err = esp_bt_mem_release(ESP_BT_MODE_CLASSIC_BT);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "bt_mem_release of classic BT failed %d", err); ESP_LOGE(TAG, "bt_mem_release of classic BT failed %d", err);
} else { } else {
@@ -212,12 +211,12 @@ void wifi_prov_scheme_ble_event_cb_free_btdm(void *user_data, wifi_prov_cb_event
} }
#endif #endif
break; break;
}
case WIFI_PROV_DEINIT: case WIFI_PROV_DEINIT: {
#ifndef CONFIG_WIFI_PROV_KEEP_BLE_ON_AFTER_PROV #ifndef CONFIG_WIFI_PROV_KEEP_BLE_ON_AFTER_PROV
#ifdef CONFIG_BT_CONTROLLER_ENABLED #ifdef CONFIG_BT_CONTROLLER_ENABLED
/* Release memory used by BLE and Bluedroid host stack */ /* Release memory used by BLE and Bluedroid host stack */
err = esp_bt_mem_release(ESP_BT_MODE_BTDM); esp_err_t err = esp_bt_mem_release(ESP_BT_MODE_BTDM);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "bt_mem_release of BTDM failed %d", err); ESP_LOGE(TAG, "bt_mem_release of BTDM failed %d", err);
} else { } else {
@@ -226,7 +225,7 @@ void wifi_prov_scheme_ble_event_cb_free_btdm(void *user_data, wifi_prov_cb_event
#endif #endif
#endif #endif
break; break;
}
default: default:
break; break;
} }
@@ -236,7 +235,7 @@ void wifi_prov_scheme_ble_event_cb_free_btdm(void *user_data, wifi_prov_cb_event
void wifi_prov_scheme_ble_event_cb_free_bt(void *user_data, wifi_prov_cb_event_t event, void *event_data) void wifi_prov_scheme_ble_event_cb_free_bt(void *user_data, wifi_prov_cb_event_t event, void *event_data)
{ {
switch (event) { switch (event) {
case WIFI_PROV_INIT: case WIFI_PROV_INIT: {
#ifdef CONFIG_BT_CONTROLLER_ENABLED #ifdef CONFIG_BT_CONTROLLER_ENABLED
esp_err_t err; esp_err_t err;
/* Release BT memory, as we need only BLE */ /* Release BT memory, as we need only BLE */
@@ -248,7 +247,7 @@ void wifi_prov_scheme_ble_event_cb_free_bt(void *user_data, wifi_prov_cb_event_t
} }
#endif #endif
break; break;
}
default: default:
break; break;
} }
@@ -258,7 +257,7 @@ void wifi_prov_scheme_ble_event_cb_free_bt(void *user_data, wifi_prov_cb_event_t
void wifi_prov_scheme_ble_event_cb_free_ble(void *user_data, wifi_prov_cb_event_t event, void *event_data) void wifi_prov_scheme_ble_event_cb_free_ble(void *user_data, wifi_prov_cb_event_t event, void *event_data)
{ {
switch (event) { switch (event) {
case WIFI_PROV_DEINIT: case WIFI_PROV_DEINIT: {
#ifndef CONFIG_WIFI_PROV_KEEP_BLE_ON_AFTER_PROV #ifndef CONFIG_WIFI_PROV_KEEP_BLE_ON_AFTER_PROV
#ifdef CONFIG_BT_CONTROLLER_ENABLED #ifdef CONFIG_BT_CONTROLLER_ENABLED
esp_err_t err; esp_err_t err;
@@ -272,7 +271,7 @@ void wifi_prov_scheme_ble_event_cb_free_ble(void *user_data, wifi_prov_cb_event_
#endif #endif
#endif #endif
break; break;
}
default: default:
break; break;
} }

View File

@@ -3,5 +3,5 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
include($ENV{IDF_PATH}/tools/cmake/project.cmake) include($ENV{IDF_PATH}/tools/cmake/project.cmake)
set(COMPONENTS main) # Note: not setting set(COMPONENTS main) here, this app should build all the components
project(cpp_pthread) project(clang_build_test)

View File

@@ -1,3 +1,3 @@
idf_component_register(SRCS "test_main.cpp" idf_component_register(SRCS "test_main.cpp"
INCLUDE_DIRS "." INCLUDE_DIRS ".")
PRIV_REQUIRES pthread bt) # Note: not setting PRIV_REQUIRES, this app should build all the components.