Changed to use sprintf/sscanf by default.

Overridden by STM32 platform.h to use newling siprintf/siscanf.
This commit is contained in:
Gareth McMullin 2011-02-06 19:36:01 +13:00
parent 8aefe82df0
commit 5788445ab2
3 changed files with 17 additions and 12 deletions

View File

@ -84,7 +84,7 @@ gdb_main(void)
uint32_t addr, len; uint32_t addr, len;
char *mem; char *mem;
ERROR_IF_NO_TARGET(); ERROR_IF_NO_TARGET();
siscanf(pbuf, "m%08lX,%08lX", &addr, &len); sscanf(pbuf, "m%08lX,%08lX", &addr, &len);
DEBUG("m packet: addr = %08lX, len = %08lX\n", addr, len); DEBUG("m packet: addr = %08lX, len = %08lX\n", addr, len);
mem = malloc(len); mem = malloc(len);
if(!mem) break; if(!mem) break;
@ -111,7 +111,7 @@ gdb_main(void)
int hex; int hex;
char *mem; char *mem;
ERROR_IF_NO_TARGET(); ERROR_IF_NO_TARGET();
siscanf(pbuf, "M%08lX,%08lX:%n", &addr, &len, &hex); sscanf(pbuf, "M%08lX,%08lX:%n", &addr, &len, &hex);
DEBUG("M packet: addr = %08lX, len = %08lX\n", addr, len); DEBUG("M packet: addr = %08lX, len = %08lX\n", addr, len);
mem = malloc(len); mem = malloc(len);
unhexify(mem, pbuf + hex, len); unhexify(mem, pbuf + hex, len);
@ -212,7 +212,7 @@ gdb_main(void)
uint32_t addr, len; uint32_t addr, len;
int bin; int bin;
ERROR_IF_NO_TARGET(); ERROR_IF_NO_TARGET();
siscanf(pbuf, "X%08lX,%08lX:%n", &addr, &len, &bin); sscanf(pbuf, "X%08lX,%08lX:%n", &addr, &len, &bin);
DEBUG("X packet: addr = %08lX, len = %08lX\n", addr, len); DEBUG("X packet: addr = %08lX, len = %08lX\n", addr, len);
if(((addr & 3) == 0) && ((len & 3) == 0)) if(((addr & 3) == 0) && ((len & 3) == 0))
target_mem_write_words(cur_target, addr, (void*)pbuf+bin, len); target_mem_write_words(cur_target, addr, (void*)pbuf+bin, len);
@ -243,9 +243,9 @@ gdb_main(void)
ERROR_IF_NO_TARGET(); ERROR_IF_NO_TARGET();
/* I have no idea why this doesn't work. Seems to work /* I have no idea why this doesn't work. Seems to work
* with real sscanf() though... */ * with real sscanf() though... */
//siscanf(pbuf, "%*[zZ]%hhd,%08lX,%hhd", &type, &addr, &len); //sscanf(pbuf, "%*[zZ]%hhd,%08lX,%hhd", &type, &addr, &len);
type = pbuf[1] - '0'; type = pbuf[1] - '0';
siscanf(pbuf + 2, ",%08lX,%d", &addr, &len); sscanf(pbuf + 2, ",%08lX,%d", &addr, &len);
switch(type) { switch(type) {
case 1: /* Hardware breakpoint */ case 1: /* Hardware breakpoint */
if(!cur_target->set_hw_bp) { /* Not supported */ if(!cur_target->set_hw_bp) { /* Not supported */
@ -314,7 +314,7 @@ handle_q_packet(char *packet, int len)
} else if (strncmp (packet, "qXfer:memory-map:read::", 23) == 0) { } else if (strncmp (packet, "qXfer:memory-map:read::", 23) == 0) {
/* Read target XML memory map */ /* Read target XML memory map */
uint32_t addr, len; uint32_t addr, len;
siscanf(packet+23, "%08lX,%08lX", &addr, &len); sscanf(packet+23, "%08lX,%08lX", &addr, &len);
if((!cur_target) && last_target) { if((!cur_target) && last_target) {
/* Attach to last target if detached. */ /* Attach to last target if detached. */
cur_target = last_target; cur_target = last_target;
@ -346,7 +346,7 @@ handle_v_packet(char *packet, int plen)
int bin; int bin;
static uint8_t flash_mode = 0; static uint8_t flash_mode = 0;
if (siscanf(packet, "vAttach;%08lX", &addr) == 1) { if (sscanf(packet, "vAttach;%08lX", &addr) == 1) {
/* Attach to remote target processor */ /* Attach to remote target processor */
target *t; target *t;
uint32_t i; uint32_t i;
@ -372,7 +372,7 @@ handle_v_packet(char *packet, int plen)
gdb_putpacketz("T05"); gdb_putpacketz("T05");
} else gdb_putpacketz("E01"); } else gdb_putpacketz("E01");
} else if (siscanf(packet, "vFlashErase:%08lX,%08lX", &addr, &len) == 2) { } else if (sscanf(packet, "vFlashErase:%08lX,%08lX", &addr, &len) == 2) {
/* Erase Flash Memory */ /* Erase Flash Memory */
DEBUG("Flash Erase %08lX %08lX\n", addr, len); DEBUG("Flash Erase %08lX %08lX\n", addr, len);
if(!cur_target) { gdb_putpacketz("EFF"); return; } if(!cur_target) { gdb_putpacketz("EFF"); return; }
@ -388,7 +388,7 @@ handle_v_packet(char *packet, int plen)
else else
gdb_putpacketz("EFF"); gdb_putpacketz("EFF");
} else if (siscanf(packet, "vFlashWrite:%08lX:%n", &addr, &bin) == 1) { } else if (sscanf(packet, "vFlashWrite:%08lX:%n", &addr, &bin) == 1) {
/* Write Flash Memory */ /* Write Flash Memory */
len = plen - bin; len = plen - bin;
DEBUG("Flash Write %08lX %08lX\n", addr, len); DEBUG("Flash Write %08lX %08lX\n", addr, len);

View File

@ -107,7 +107,7 @@ void gdb_putpacket(unsigned char *packet, int size)
} }
} }
gdb_if_putchar('#', 0); gdb_if_putchar('#', 0);
siprintf(xmit_csum, "%02X", csum); sprintf(xmit_csum, "%02X", csum);
gdb_if_putchar(xmit_csum[0], 0); gdb_if_putchar(xmit_csum[0], 0);
gdb_if_putchar(xmit_csum[1], 1); gdb_if_putchar(xmit_csum[1], 1);
@ -122,7 +122,7 @@ void gdb_putpacket_f(const unsigned char *fmt, ...)
int size; int size;
va_start(ap, fmt); va_start(ap, fmt);
size = vasiprintf(&buf, fmt, ap); size = vasprintf(&buf, fmt, ap);
gdb_putpacket(buf, size); gdb_putpacket(buf, size);
free(buf); free(buf);
va_end(ap); va_end(ap);
@ -145,7 +145,7 @@ void gdb_outf(const char *fmt, ...)
char *buf; char *buf;
va_start(ap, fmt); va_start(ap, fmt);
vasiprintf(&buf, fmt, ap); vasprintf(&buf, fmt, ap);
gdb_out(buf); gdb_out(buf);
free(buf); free(buf);
va_end(ap); va_end(ap);

View File

@ -117,5 +117,10 @@ extern const char *morse_msg;
int platform_init(void); int platform_init(void);
void morse(const char *msg, char repeat); void morse(const char *msg, char repeat);
/* Use newlib provided integer only stdio functions */
#define sscanf siscanf
#define sprintf siprintf
#define vasprintf vasiprintf
#endif #endif