This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[RFA]: Fix gdb.base/remote for embedded targets (HC11)


Hi!

The gdb.base/remote test fails for 68HC11/68HC12:

  - The gdb.base/remote.c defines a data table that is too large to link for
    68HC11 targets (it requires 48K of data).  

  - For HC11/HC12, the data section is installed by the crt0.  The data section
    has its image in ROM and it is copied to RAM by the startup code.  With a
    48K data table, it requires 96K of memory (48K rom, 48K ram).

    After the load, the data table is not initialized.  It is initialized when
    we reached the 'main'.

The following patch improves the gdb.base/remote test:

  - The remote.c data table is reduced to 1K for 68HC11 (only), and the
    test verifies only the 1K load for 68HC11 (other platforms still use 48K).

  - It checks for a new 'gdb,noloaddata' configuration variable and
    runs to the main before verifying the load.

Can you approve this patch?

Thanks,
	Stephane

2001-05-20  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* gdb.base/remote.c (RANDOM_DATA_SIZE): New define, defaults to 48K 
	and defined to 1K for m68hc11.
	(random_data): Reduce table to 1K for embedded platforms (68hc11).
	* gdb.base/remote.exp (remote_data_size): New variable to tell the size
	of the data table; don't test past this size; check for gdb,noloaddata
	and run to the main if it is set (data section installed by crt0).
Index: testsuite/gdb.base/remote.c
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/remote.c,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 remote.c
--- remote.c	1999/12/07 03:56:16	1.1.1.2
+++ remote.c	2001/05/20 11:40:00
@@ -23,12 +23,21 @@ BEGIN {
 
 */
 
+#ifdef mc68hc11
+# define RANDOM_DATA_SIZE (1024)
+#endif
+
 /* Use a character buffer to avoid byte order problems. 48k is
    chosen so that the buffer required at least 3 16k packets but
    targets often have no more than 64k of data. */
 /* If you change this data, you will also have to change the checks
    for the data in remote.c */
-unsigned char random_data[3 * 2048 * 8] = {
+#ifndef RANDOM_DATA_SIZE
+# define RANDOM_DATA_SIZE (3 * 2048 * 8)
+# define BIG_RANDOM_DATA
+#endif
+
+unsigned char random_data[RANDOM_DATA_SIZE] = {
   60,  74, 216,  38, 149,  49, 207,  44,
  124,  38,  93, 125, 232,  67, 228,  56,
  161, 146,  85,  26, 128, 145, 218,  10,
@@ -157,6 +166,7 @@ unsigned char random_data[3 * 2048 * 8] 
  196,  13, 161, 122, 145, 141, 102, 233,
  227, 112, 121,  67, 111, 148, 160,  32,
  199, 117, 223, 105, 184, 131, 119, 182,
+#ifdef BIG_RANDOM_DATA
   60,  26, 169, 194, 173, 164, 249, 135,
  178,  57,  50,  44,  12, 159, 167, 240,
  249, 188,  86, 192,  73,  47,  74,  77,
@@ -6173,6 +6183,7 @@ unsigned char random_data[3 * 2048 * 8] 
   97, 106, 152,  12, 243, 240,  41, 251,
   35, 249, 105, 228,  53,  94,  43, 119,
   61, 162, 192,  78,  58,  46,  84, 110,
+#endif
 };
 
 int
Index: testsuite/gdb.base/remote.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/remote.exp,v
retrieving revision 1.2
diff -u -p -r1.2 remote.exp
--- remote.exp	2001/03/06 08:21:51	1.2
+++ remote.exp	2001/05/20 11:40:02
@@ -30,6 +30,12 @@ if {! [is_remote target]} {
     return
 }
 
+# configure the size of the data table to check according to the target
+if { [istarget "m6811-*-*"] } then {
+   set remote_data_size 1024
+} else {
+   set remote_data_size 49152
+}
 
 set testfile "remote"
 set srcfile ${testfile}.c
@@ -138,11 +144,16 @@ gdb_load_timed $binfile 0 "fixed" 16385
 # fall back to the default
 gdb_load_timed $binfile 0 "limit" 0
 
-
 #
 # Part THREE: Check the upload behavour
 #
 
+if [target_info exists gdb,noloaddata] then {
+    if ![runto_main] then {
+	fail "Cannot run to main"
+    }
+}
+
 # Carefully check memory around each of the most common packet edge
 # conditions
 
@@ -152,9 +163,10 @@ gdb_test "x/8ub random_data" \
 gdb_test "x/8ub random_data + 400 - 4" \
 	"<random_data\\+396>:\[ \t\]+185\[ \t\]+255\[ \t\]+50\[ \t\]+140\[ \t\]+237\[ \t\]+172\[ \t\]+143\[ \t\]+93"
 
-gdb_test "x/8ub random_data + 16384 - 4" \
+if {$remote_data_size > 16380 } then {
+    gdb_test "x/8ub random_data + 16384 - 4" \
 	"<random_data\\+16380>:\[ \t\]+178\[ \t\]+180\[ \t\]+135\[ \t\]+93\[ \t\]+70\[ \t\]+62\[ \t\]+205\[ \t\]+76"
-
+}
 
 # Read a chunk just larger than the packet size (reduce the packet
 # size to make life easier)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]