[Sharp eyes, Jim...]

* remote.c:
	* (get_offsets):  Temporary kludge to force data & bss sections to
	have the same relocation.
This commit is contained in:
Stu Grossman 1994-04-27 01:39:38 +00:00
parent e632f85ee1
commit 1624c38fd7
2 changed files with 46 additions and 3 deletions

View 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 * partial-stabs.h (cases 'f' & 'F'): Fixes to work around Solaris
brain-damage which don't apply to relocatable object files. brain-damage which don't apply to relocatable object files.
* remote.c (putpkt): Improve error reporting and error handling. * 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 * stabsread.c (define_symbol, scan_file_globals): Record section
info in sym. info in sym.

View File

@ -318,8 +318,13 @@ get_offsets ()
with SEC_CODE set, but we currently have no way to deal with that). */ with SEC_CODE set, but we currently have no way to deal with that). */
ANOFFSET (offs, SECT_OFF_TEXT) = text_addr; 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_DATA) = data_addr;
ANOFFSET (offs, SECT_OFF_BSS) = bss_addr; ANOFFSET (offs, SECT_OFF_BSS) = data_addr;
objfile_relocate (symfile_objfile, offs); objfile_relocate (symfile_objfile, offs);
} }
@ -1096,10 +1101,13 @@ putpkt (buf)
while (1) while (1)
{ {
int started_error_output = 0;
if (remote_debug) if (remote_debug)
{ {
*p = '\0'; *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)) if (SERIAL_WRITE (remote_desc, buf2, p - buf2))
perror_with_name ("putpkt: write failed"); perror_with_name ("putpkt: write failed");
@ -1109,6 +1117,23 @@ putpkt (buf)
{ {
ch = readchar (); 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) switch (ch)
{ {
case '+': case '+':
@ -1121,9 +1146,25 @@ putpkt (buf)
perror_with_name ("putpkt: couldn't read ACK"); perror_with_name ("putpkt: couldn't read ACK");
case SERIAL_EOF: case SERIAL_EOF:
error ("putpkt: EOF while trying to read ACK"); 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: default:
if (remote_debug) 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; continue;
} }
break; /* Here to retransmit */ break; /* Here to retransmit */