[Sharp eyes, Jim...]
authorStu Grossman <grossman@cygnus>
Wed, 27 Apr 1994 01:39:38 +0000 (01:39 +0000)
committerStu Grossman <grossman@cygnus>
Wed, 27 Apr 1994 01:39:38 +0000 (01:39 +0000)
* remote.c:
* (get_offsets):  Temporary kludge to force data & bss sections to
have the same relocation.

gdb/ChangeLog
gdb/remote.c

index ec724d22fa0e1411c38cba5c109207cabea24663..9c144374b7f853c4a7bea510911b3622f59ec32e 100644 (file)
@@ -23,6 +23,8 @@ Tue Apr 26 09:50:45 1994  Stu Grossman  (grossman at cygnus.com)
        * partial-stabs.h (cases 'f' & 'F'):  Fixes to work around Solaris
        brain-damage which don't apply to relocatable object files.
        * remote.c (putpkt):  Improve error reporting and error handling.
+       * (get_offsets):  Temporary kludge to force data & bss sections to
+       have the same relocation.
        * stabsread.c (define_symbol, scan_file_globals):  Record section
        info in sym.
 
index 9be476c662fc59655803e4c0a53698094a414b90..09eb616d95186f62146479f83a0350b1d28d6b15 100644 (file)
@@ -318,8 +318,13 @@ get_offsets ()
      with SEC_CODE set, but we currently have no way to deal with that).  */
 
   ANOFFSET (offs, SECT_OFF_TEXT) = text_addr;
+
+  /* This is a temporary kludge to force data and bss to use the same offsets
+     because that's what nlmconv does now.  The real solution requires changes
+     to the stub and remote.c that I don't have time to do right now.  */
+
   ANOFFSET (offs, SECT_OFF_DATA) = data_addr;
-  ANOFFSET (offs, SECT_OFF_BSS) = bss_addr;
+  ANOFFSET (offs, SECT_OFF_BSS) = data_addr;
 
   objfile_relocate (symfile_objfile, offs);
 }
@@ -1096,10 +1101,13 @@ putpkt (buf)
 
   while (1)
     {
+      int started_error_output = 0;
+
       if (remote_debug)
        {
          *p = '\0';
-         printf_unfiltered ("Sending packet: %s...", buf2);  gdb_flush(gdb_stdout);
+         printf_unfiltered ("Sending packet: %s...", buf2);
+         gdb_flush(gdb_stdout);
        }
       if (SERIAL_WRITE (remote_desc, buf2, p - buf2))
        perror_with_name ("putpkt: write failed");
@@ -1109,6 +1117,23 @@ putpkt (buf)
        {
          ch = readchar ();
 
+         if (remote_debug)
+           {
+             switch (ch)
+               {
+               case '+':
+               case SERIAL_TIMEOUT:
+               case SERIAL_ERROR:
+               case SERIAL_EOF:
+               case '$':
+                 if (started_error_output)
+                   {
+                     putc_unfiltered ('\n');
+                     started_error_output = 0;
+                   }
+               }
+           }
+
          switch (ch)
            {
            case '+':
@@ -1121,9 +1146,25 @@ putpkt (buf)
              perror_with_name ("putpkt: couldn't read ACK");
            case SERIAL_EOF:
              error ("putpkt: EOF while trying to read ACK");
+           case '$':
+             {
+               unsigned char junkbuf[PBUFSIZ];
+
+             /* It's probably an old response, and we're out of sync.  Just
+                gobble up the packet and ignore it.  */
+               getpkt (junkbuf, 0);
+               continue;               /* Now, go look for + */
+             }
            default:
              if (remote_debug)
-               printf_unfiltered ("%02X %c ", ch&0xFF, ch);
+               {
+                 if (!started_error_output)
+                   {
+                     started_error_output = 1;
+                     printf_unfiltered ("putpkt: Junk: ");
+                   }
+                 putc_unfiltered (ch & 0177);
+               }
              continue;
            }
          break;                /* Here to retransmit */