Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Compilation failure on gcc-15.2.0

Open
#51 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
67/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
c

Research direction

Review the supplied patch across the listed files under src/flash/nor, src/helper, src/rtos, src/server, and src/target. Start by reproducing the OpenOCD build with gcc-15.2.0, then check the proposed changes against the affected call sites. Done means OpenOCD compiles successfully with that compiler.

Written by the indexing model from the issue text.

Description

OpenOCD fails to compile on gcc-15.2.0. Fixed and include a patch. Feel free to use.

From cbacacbbfbfc5b1a9c8280ab25d9845201a58574 Mon Sep 17 00:00:00 2001
Date: Wed, 8 Jul 2026 14:24:10 +0200
Subject: [PATCH] fix compiler errors for gcc 15.2.0


src/flash/nor/ambiqmicro.c | 2 +-
src/flash/nor/at91sam7.c | 4 ++--
src/flash/nor/kinetis.c | 4 ++--
src/flash/nor/max32xxx.c | 2 +-
src/flash/nor/msp432.c | 2 +-
src/flash/nor/stellaris.c | 2 +-
src/flash/nor/stldr_driver.c | 4 ++--
src/flash/nor/stm32f2x.c | 2 +-
src/helper/log.c | 2 +-
src/helper/options.c | 2 +-
src/rtos/eCos.c | 2 +-
src/server/telnet_server.c | 2 +-
src/target/arc_jtag.c | 4 ++--
13 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/flash/nor/ambiqmicro.c b/src/flash/nor/ambiqmicro.c
index 2b458bc8f..bb893778c 100644
--- a/src/flash/nor/ambiqmicro.c
+++ b/src/flash/nor/ambiqmicro.c
@@ -124,7 +124,7 @@ FLASH_BANK_COMMAND_HANDLER(ambiqmicro_flash_bank_command)
if (CMD_ARGC < 6)
return ERROR_COMMAND_SYNTAX_ERROR;

  • ambiqmicro_info = calloc(sizeof(struct ambiqmicro_flash_bank), 1);
  • ambiqmicro_info = calloc(1, sizeof(struct ambiqmicro_flash_bank));

    bank->driver_priv = ambiqmicro_info;

diff --git a/src/flash/nor/at91sam7.c b/src/flash/nor/at91sam7.c
index 6879a1bf2..86c80765f 100644
--- a/src/flash/nor/at91sam7.c
+++ b/src/flash/nor/at91sam7.c
@@ -560,7 +560,7 @@ static int at91sam7_read_part_info(struct flash_bank bank)
if (bnk > 0) {
if (!t_bank->next) {
/
create a new flash bank element */

  •   		struct flash_bank *fb = calloc(sizeof(struct flash_bank), 1);
    
  •   		struct flash_bank *fb = calloc(1, sizeof(struct flash_bank));
      		if (!fb) {
      			LOG_ERROR("No memory for flash bank");
      			return ERROR_FAIL;
    

@@ -748,7 +748,7 @@ FLASH_BANK_COMMAND_HANDLER(at91sam7_flash_bank_command)
if (bnk > 0) {
if (!t_bank->next) {
/* create a new bank element */

  •   		struct flash_bank *fb = calloc(sizeof(struct flash_bank), 1);
    
  •   		struct flash_bank *fb = calloc(1, sizeof(struct flash_bank));
      		if (!fb) {
      			LOG_ERROR("No memory for flash bank");
      			return ERROR_FAIL;
    

diff --git a/src/flash/nor/kinetis.c b/src/flash/nor/kinetis.c
index e8074e35b..fee36444e 100644
--- a/src/flash/nor/kinetis.c
+++ b/src/flash/nor/kinetis.c
@@ -930,7 +930,7 @@ FLASH_BANK_COMMAND_HANDLER(kinetis_flash_bank_command)
k_chip = kinetis_get_chip(target);

if (!k_chip) {
  •   k_chip = calloc(sizeof(struct kinetis_chip), 1);
    
  •   k_chip = calloc(1, sizeof(struct kinetis_chip));
      if (!k_chip) {
      	LOG_ERROR("No memory");
      	return ERROR_FAIL;
    

@@ -1031,7 +1031,7 @@ static int kinetis_create_missing_banks(struct kinetis_chip *k_chip)
bank_idx - k_chip->num_pflash_blocks);
}

  •   bank = calloc(sizeof(struct flash_bank), 1);
    
  •   bank = calloc(1, sizeof(struct flash_bank));
      if (!bank)
      	return ERROR_FAIL;
    

diff --git a/src/flash/nor/max32xxx.c b/src/flash/nor/max32xxx.c
index 51d6ae271..59a14af8b 100644
--- a/src/flash/nor/max32xxx.c
+++ b/src/flash/nor/max32xxx.c
@@ -87,7 +87,7 @@ FLASH_BANK_COMMAND_HANDLER(max32xxx_flash_bank_command)
return ERROR_FLASH_BANK_INVALID;
}

  • info = calloc(sizeof(struct max32xxx_flash_bank), 1);
  • info = calloc(1, sizeof(struct max32xxx_flash_bank));
    COMMAND_PARSE_NUMBER(uint, CMD_ARGV[2], info->flash_size);
    COMMAND_PARSE_NUMBER(uint, CMD_ARGV[6], info->flc_base);
    COMMAND_PARSE_NUMBER(uint, CMD_ARGV[7], info->sector_size);
    diff --git a/src/flash/nor/msp432.c b/src/flash/nor/msp432.c
    index 5e2935d02..b5e2b0bf8 100644
    --- a/src/flash/nor/msp432.c
    +++ b/src/flash/nor/msp432.c
    @@ -937,7 +937,7 @@ static int msp432_probe(struct flash_bank *bank)

    if (is_main && MSP432P4 == msp432_bank->family_type) {
    /* Create the info flash bank needed by MSP432P4 variants */

  •   struct flash_bank *info = calloc(sizeof(struct flash_bank), 1);
    
  •   struct flash_bank *info = calloc(1, sizeof(struct flash_bank));
      if (!info)
      	return ERROR_FAIL;
    

diff --git a/src/flash/nor/stellaris.c b/src/flash/nor/stellaris.c
index 972686e3f..eab6244d4 100644
--- a/src/flash/nor/stellaris.c
+++ b/src/flash/nor/stellaris.c
@@ -453,7 +453,7 @@ FLASH_BANK_COMMAND_HANDLER(stellaris_flash_bank_command)
if (CMD_ARGC < 6)
return ERROR_COMMAND_SYNTAX_ERROR;

  • stellaris_info = calloc(sizeof(struct stellaris_flash_bank), 1);
  • stellaris_info = calloc(1, sizeof(struct stellaris_flash_bank));
    bank->base = 0x0;
    bank->driver_priv = stellaris_info;

diff --git a/src/flash/nor/stldr_driver.c b/src/flash/nor/stldr_driver.c
index bdc8678a3..559a29b2a 100644
--- a/src/flash/nor/stldr_driver.c
+++ b/src/flash/nor/stldr_driver.c
@@ -264,7 +264,7 @@ static int stldr_parse(struct flash_bank *bank, const char *stldr_path)
return ERROR_FAIL;
}

  •   struct stldr_section *section = calloc(sizeof(struct stldr_section), 1);
    
  •   struct stldr_section *section = calloc(1, sizeof(struct stldr_section));
      if (!section) {
      	free(content);
      	return ERROR_FAIL;
    

@@ -416,7 +416,7 @@ FLASH_BANK_COMMAND_HANDLER(stldr_flash_bank_command)
if (CMD_ARGC != 6 && CMD_ARGC != 7)
return ERROR_COMMAND_SYNTAX_ERROR;

  • stldr_info = calloc(sizeof(struct stldr_flash_bank), 1);
  • stldr_info = calloc(1, sizeof(struct stldr_flash_bank));
    if (!stldr_info) {
    LOG_ERROR("Out of memory");
    return ERROR_FAIL;
    diff --git a/src/flash/nor/stm32f2x.c b/src/flash/nor/stm32f2x.c
    index 4e0f73182..3bafde56f 100644
    --- a/src/flash/nor/stm32f2x.c
    +++ b/src/flash/nor/stm32f2x.c
    @@ -1020,7 +1020,7 @@ static int stm32x_probe(struct flash_bank *bank)
    assert(num_sectors > 0);

    bank->num_sectors = num_sectors;
    
  •   bank->sectors = calloc(sizeof(struct flash_sector), num_sectors);
    
  •   bank->sectors = calloc(num_sectors, sizeof(struct flash_sector));
    
      if (stm32x_otp_is_f7(bank))
      	bank->size = STM32F7_OTP_SIZE;
    

diff --git a/src/helper/log.c b/src/helper/log.c
index 471069ade..2bf4efc78 100644
--- a/src/helper/log.c
+++ b/src/helper/log.c
@@ -81,7 +81,7 @@ static void log_puts(enum log_levels level,
const char *function,
const char *string)
{

  • char *f;
  • const char *f;

    if (!log_output) {
    /* log_init() not called yet; print on stderr */
    diff --git a/src/helper/options.c b/src/helper/options.c
    index 61a101469..643007931 100644
    --- a/src/helper/options.c
    +++ b/src/helper/options.c
    @@ -151,7 +151,7 @@ static char *find_relative_path(const char *from, const char *to)
    while (from[0] != '\0') {
    if (from[0] != '/')
    i++;

  •   char *next = strchr(from, '/');
    
  •   const char *next = strchr(from, '/');
      if (!next)
      	break;
      from = next + 1;
    

diff --git a/src/rtos/eCos.c b/src/rtos/eCos.c
index 10ed12809..aca2f4ebc 100644
--- a/src/rtos/eCos.c
+++ b/src/rtos/eCos.c
@@ -511,7 +511,7 @@ static bool ecos_escape_string(const char *raw, char *out, size_t limit)
continue;
}

  •   char *fidx = strchr(tokens, *raw);
    
  •   const char *fidx = strchr(tokens, *raw);
      if (!fidx) {
      	/* Should never happen assuming xmlchars
      	 * vector and tokens string match. */
    

diff --git a/src/server/telnet_server.c b/src/server/telnet_server.c
index 938bc5b06..fa3523553 100644
--- a/src/server/telnet_server.c
+++ b/src/server/telnet_server.c
@@ -68,7 +68,7 @@ static int telnet_outputline(struct connection *connection, const char *line)

/* process lines in buffer */
while (*line) {
  •   char *line_end = strchr(line, '\n');
    
  •   const char *line_end = strchr(line, '\n');
    
      if (line_end)
      	len = line_end-line;
    

diff --git a/src/target/arc_jtag.c b/src/target/arc_jtag.c
index ddb4f6232..a186709c6 100644
--- a/src/target/arc_jtag.c
+++ b/src/target/arc_jtag.c
@@ -298,7 +298,7 @@ static int arc_jtag_read_registers(struct arc_jtag *jtag_info, uint32_t type,
ARC_JTAG_READ_FROM_CORE_REG : ARC_JTAG_READ_FROM_AUX_REG);
arc_jtag_enque_set_transaction(jtag_info, transaction, TAP_DRPAUSE);

  • uint8_t *data_buf = calloc(sizeof(uint8_t), count * 4);
  • uint8_t *data_buf = calloc(count * 4, sizeof(uint8_t));

    arc_jtag_enque_register_rw(jtag_info, addr, data_buf, NULL, count);

@@ -498,7 +498,7 @@ int arc_jtag_read_memory(struct arc_jtag *jtag_info, uint32_t addr,
if (!count)
return ERROR_OK;

  • data_buf = calloc(sizeof(uint8_t), count * 4);
  • data_buf = calloc(count * 4, sizeof(uint8_t));
    arc_jtag_enque_reset_transaction(jtag_info);

    /* We are reading from memory. */
    --
    2.53.0

Dominant language
C
Stars
202
Forks
57
PR merge metrics
No merged PRs in 30d

Getting set up

We have not checked this project's setup files yet. Start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from STMicroelectronics/OpenOCD

All issues in STMicroelectronics/OpenOCD

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.