aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-08-12 19:34:20 +0000
committerAndrew Cagney <cagney@redhat.com>2003-08-12 19:34:20 +0000
commit44160db3297f1557d9f58e6a84736f9d18f21b6f (patch)
tree9d4d37e801f252466f236438a2e2f3c559b0efe5
parentbcf7d3caa297bf5cf3e1269d92884437b47d0d4f (diff)
downloadfsf-binutils-gdb-44160db3297f1557d9f58e6a84736f9d18f21b6f.zip
fsf-binutils-gdb-44160db3297f1557d9f58e6a84736f9d18f21b6f.tar.gz
fsf-binutils-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.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/Makefile.in2
-rw-r--r--gdb/dsrec.c15
3 files changed, 16 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index cd4da94..a68614f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
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.
+
+2003-08-12 Andrew Cagney <cagney@redhat.com>
+
* frame.c (deprecated_frame_xmalloc): Use XMALLOC, instead of
FRAME_OBSTACK_ZALLOC.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 23896f7..436ea1f 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1687,7 +1687,7 @@ disasm.o: disasm.c $(defs_h) $(target_h) $(value_h) $(ui_out_h) \
doublest.o: doublest.c $(defs_h) $(doublest_h) $(floatformat_h) \
$(gdb_assert_h) $(gdb_string_h) $(gdbtypes_h)
dpx2-nat.o: dpx2-nat.c $(defs_h) $(gdbcore_h) $(gdb_string_h)
-dsrec.o: dsrec.c $(defs_h) $(serial_h) $(srec_h)
+dsrec.o: dsrec.c $(defs_h) $(serial_h) $(srec_h) $(gdb_assert_h)
dummy-frame.o: dummy-frame.c $(defs_h) $(dummy_frame_h) $(regcache_h) \
$(frame_h) $(inferior_h) $(gdb_assert_h) $(frame_unwind_h) \
$(command_h) $(gdbcmd_h)
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. */