diff options
author | Andrew Cagney <cagney@redhat.com> | 2003-08-12 19:34:20 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2003-08-12 19:34:20 +0000 |
commit | 44160db3297f1557d9f58e6a84736f9d18f21b6f (patch) | |
tree | 9d4d37e801f252466f236438a2e2f3c559b0efe5 /gdb/dsrec.c | |
parent | bcf7d3caa297bf5cf3e1269d92884437b47d0d4f (diff) | |
download | gdb-44160db3297f1557d9f58e6a84736f9d18f21b6f.zip gdb-44160db3297f1557d9f58e6a84736f9d18f21b6f.tar.gz gdb-44160db3297f1557d9f58e6a84736f9d18f21b6f.tar.bz2 |
2003-08-12 Andrew Cagney <cagney@redhat.com>
* Makefile.in (dsrec.o): Update dependencies.
* dsrec.c: Include "gdb_assert.h".
(make_srec): Use snprintf instead of sprintf, use a literal format
string.
Diffstat (limited to 'gdb/dsrec.c')
-rw-r--r-- | gdb/dsrec.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/gdb/dsrec.c b/gdb/dsrec.c index 5f2c2d7..4f111bb 100644 --- a/gdb/dsrec.c +++ b/gdb/dsrec.c @@ -23,6 +23,7 @@ #include "serial.h" #include "srec.h" #include <time.h> +#include "gdb_assert.h" extern void report_transfer_performance (unsigned long, time_t, time_t); @@ -223,10 +224,6 @@ make_srec (char *srec, CORE_ADDR targ_addr, bfd *abfd, asection *sect, const static char data_code_table[] = "123"; const static char term_code_table[] = "987"; const static char header_code_table[] = "000"; - const static char *formats[] = - {"S%c%02X%04X", - "S%c%02X%06X", - "S%c%02X%08X"}; char const *code_table; int addr_size; int payload_size; @@ -271,9 +268,10 @@ make_srec (char *srec, CORE_ADDR targ_addr, bfd *abfd, asection *sect, payload_size = 0; /* Term or header packets have no payload */ /* Output the header. */ - - sprintf (srec, formats[addr_size - 2], code_table[addr_size - 2], - addr_size + payload_size + 1, (int) targ_addr); + snprintf (srec, (*maxrecsize) + 1, "S%c%02X%0*X", + code_table[addr_size - 2], + addr_size + payload_size + 1, + addr_size * 2, (int) targ_addr); /* Note that the checksum is calculated on the raw data, not the hexified data. It includes the length, address and the data @@ -287,6 +285,9 @@ make_srec (char *srec, CORE_ADDR targ_addr, bfd *abfd, asection *sect, + ((targ_addr >> 16) & 0xff) + ((targ_addr >> 24) & 0xff)); + /* NOTE: cagney/2003-08-10: The equation is old. Check that the + recent snprintf changes match that equation. */ + gdb_assert (strlen (srec) == 1 + 1 + 2 + addr_size * 2); p = srec + 1 + 1 + 2 + addr_size * 2; /* Build the Srecord. */ |