diff options
author | Steve Chamberlain <sac@cygnus> | 1996-01-04 04:21:57 +0000 |
---|---|---|
committer | Steve Chamberlain <sac@cygnus> | 1996-01-04 04:21:57 +0000 |
commit | e02a2ad9d420fe35fa2f93ec5869a81a7b5a1e5f (patch) | |
tree | 57a1365b227db50b619b12b97839e8d38b9bceaa | |
parent | 9e64063e1c12ed957738547502e18b9da7a1748e (diff) | |
download | gdb-e02a2ad9d420fe35fa2f93ec5869a81a7b5a1e5f.zip gdb-e02a2ad9d420fe35fa2f93ec5869a81a7b5a1e5f.tar.gz gdb-e02a2ad9d420fe35fa2f93ec5869a81a7b5a1e5f.tar.bz2 |
* symtab.h (namespace enum): becomes typedef to avoid namespace
collision in C++.
* infcmd.c (path_command): Use empty string if PATH name not set.
* i386-tdep.c (skip_trampoline_code): New function.
* srec.c: Renamed dsrec.c to avoid filename collision.
* Makefile.in: Cope with renaming.
Update copyrights to 1996.
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/Makefile.in | 17 | ||||
-rw-r--r-- | gdb/infcmd.c | 16 | ||||
-rw-r--r-- | gdb/srec.c | 254 | ||||
-rw-r--r-- | gdb/symtab.h | 28 |
5 files changed, 54 insertions, 271 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e0a83cc..decb427 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +Wed Jan 3 19:49:54 1996 steve chamberlain <sac@slash.cygnus.com> + + * symtab.h (namespace enum): becomes typedef to avoid namespace + collision in C++. + * infcmd.c (path_command): Use empty string if PATH name not set. + * i386-tdep.c (skip_trampoline_code): New function. + * srec.c: Renamed dsrec.c to avoid filename collision. + * Makefile.in: Cope with renaming. + Update copyrights to 1996. + Wed Jan 3 13:09:04 1996 Fred Fish <fnf@cygnus.com> * symmisc.c (print_objfile_statistics): Print memory use statistics diff --git a/gdb/Makefile.in b/gdb/Makefile.in index cd6ef84..e82a0d2 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1,4 +1,4 @@ -# Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995 +# Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 # Free Software Foundation, Inc. # This file is part of GDB. @@ -888,7 +888,7 @@ ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \ infptrace.c inftarg.c irix4-nat.c irix5-nat.c isi-xdep.c \ lynx-nat.c m3-nat.c \ m68k-tdep.c \ - m88k-nat.c m88k-tdep.c mips-nat.c \ + m88k-nat.c m88k-tdep.c mac-nat.c mips-nat.c \ mips-tdep.c mipsm3-nat.c mipsv4-nat.c news-xdep.c \ nindy-share/Onindy.c nindy-share/nindy.c \ nindy-share/ttyflush.c nindy-tdep.c \ @@ -1218,9 +1218,7 @@ m88k-nat.o: m88k-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) m88k-tdep.o: m88k-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) -top.o: top.c top.h $(bfd_h) $(getopt_h) $(readline_headers) call-cmds.h \ - $(defs_h) $(gdbcmd_h) $(inferior_h) language.h signals.h \ - $(remote_utils_h) +mac-nat.o: mac-nat.c $(defs_h) main.o: main.c top.h $(defs_h) @@ -1295,6 +1293,9 @@ hpread.o: hpread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \ parse.o: parse.c $(command_h) $(defs_h) $(expression_h) $(frame_h) \ $(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) +ppcbug-rom.o: ppcbug-rom.c monitor.h $(bfd_h) $(wait_h) $(defs_h) $(gdbcmd_h) \ + $(inferior_h) target.h serial.h terminal.h + printcmd.o: printcmd.c $(breakpoint_h) $(defs_h) $(expression_h) \ $(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) language.h objfiles.h symfile.h \ $(symtab_h) target.h @@ -1413,6 +1414,8 @@ sparc-tdep.o: sparc-tdep.c $(floatformat_h) $(defs_h) $(gdbcore_h) \ sparcl-tdep.o: sparcl-tdep.c $(defs_h) $(gdbcore_h) target.h +dsrec.o: dsrec.c $(defs_h) srec.h + stabsread.o: stabsread.c $(bfd_h) $(INCLUDE_DIR)/aout/stab.def \ $(INCLUDE_DIR)/aout/stab_gnu.h buildsym.h complaints.h $(defs_h) \ $(gdbtypes_h) objfiles.h stabsread.h symfile.h $(symtab_h) @@ -1446,6 +1449,10 @@ target.o: target.c $(bfd_h) $(defs_h) $(gdbcmd_h) $(inferior_h) \ thread.o: thread.c $(defs_h) thread.h $(gdbcmd_h) +top.o: top.c top.h $(bfd_h) $(getopt_h) $(readline_headers) call-cmds.h \ + $(defs_h) $(gdbcmd_h) $(inferior_h) language.h signals.h \ + $(remote_utils_h) + typeprint.o: typeprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \ $(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) target.h \ $(value_h) diff --git a/gdb/infcmd.c b/gdb/infcmd.c index d78b106..9e677ae 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -1,5 +1,5 @@ /* Memory-access and commands for "inferior" process, for GDB. - Copyright 1986, 1987, 1988, 1989, 1991, 1992, 1995 Free Software Foundation, Inc. + Copyright 1986, 1987, 1988, 1989, 1991, 1992, 1995, 1996 Free Software Foundation, Inc. This file is part of GDB. @@ -731,7 +731,7 @@ finish_command (arg, from_tty) val = value_being_returned (value_type, stop_registers, using_struct_return (value_of_variable (function, NULL), funcaddr, - value_type, + check_typedef (value_type), BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function)))); printf_filtered ("Value returned is $%d = ", record_latest_value (val)); @@ -922,9 +922,13 @@ path_command (dirname, from_tty) int from_tty; { char *exec_path; - + char *env; dont_repeat (); - exec_path = strsave (get_in_environ (inferior_environ, path_var_name)); + env = get_in_environ (inferior_environ, path_var_name); + /* Can be null if path is not set */ + if (!env) + env = ""; + exec_path = strsave (env); mod_path (dirname, &exec_path); set_in_environ (inferior_environ, path_var_name, exec_path); free (exec_path); @@ -1056,6 +1060,8 @@ registers_info (addr_exp, fpregs) if (!target_has_registers) error ("The program has no registers now."); + if (selected_frame == NULL) + error ("No selected frame."); if (!addr_exp) { @@ -1126,6 +1132,8 @@ attach_command (args, from_tty) char *args; int from_tty; { + extern int auto_solib_add_at_startup; + dont_repeat (); /* Not for the faint of heart */ if (target_has_execution) diff --git a/gdb/srec.c b/gdb/srec.c deleted file mode 100644 index a16a90b..0000000 --- a/gdb/srec.c +++ /dev/null @@ -1,254 +0,0 @@ -/* S-record download support for GDB, the GNU debugger. - Copyright 1995 Free Software Foundation, Inc. - -This file is part of GDB. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "defs.h" -#include "serial.h" -#include "srec.h" - -extern int remote_debug; - -static int make_srec PARAMS ((char *srec, CORE_ADDR targ_addr, bfd *abfd, - asection *sect, int sectoff, int *maxrecsize, - int flags)); - -/* Download an executable by converting it to S records. DESC is a serial_t - to send the data to. FILE is the name of the file to be loaded. - MAXRECSIZE is the length in chars of the largest S-record the host can - accomodate. This is measured from the starting `S' to the last char of the - checksum. FLAGS is various random flags, and HASHMARK is non-zero to cause - a `#' to be printed out for each record loaded. */ - -void -load_srec (desc, file, maxrecsize, flags, hashmark) - serial_t desc; - const char *file; - int maxrecsize; - int flags; - int hashmark; -{ - bfd *abfd; - asection *s; - char *buffer, srec[1024]; - int i; - int reclen; - - buffer = alloca (maxrecsize + 1); - - abfd = bfd_openr (file, 0); - if (!abfd) - { - printf_filtered ("Unable to open file %s\n", file); - return; - } - - if (bfd_check_format (abfd, bfd_object) == 0) - { - printf_filtered ("File is not an object file\n"); - return; - } - - for (s = abfd->sections; s; s = s->next) - if (s->flags & SEC_LOAD) - { - int numbytes; - - printf_filtered ("%s\t: 0x%4x .. 0x%4x ", s->name, s->vma, - s->vma + s->_raw_size); - gdb_flush (gdb_stdout); - - for (i = 0; i < s->_raw_size; i += numbytes) - { - reclen = maxrecsize; - numbytes = make_srec (srec, s->vma + i, abfd, s, i, &reclen, - flags); - - if (remote_debug) - fprintf_unfiltered (gdb_stderr, "%.*s\\r\n", reclen-1, srec); - SERIAL_WRITE (desc, srec, reclen); - - if (hashmark) - { - putchar_unfiltered ('#'); - gdb_flush (gdb_stdout); - } - } /* Per-packet (or S-record) loop */ - - putchar_unfiltered ('\n'); - } /* Loadable sections */ - - if (hashmark) - putchar_unfiltered ('\n'); - - /* Write a type 7 terminator record. no data for a type 7, and there - is no data, so len is 0. */ - - reclen = maxrecsize; - make_srec (srec, abfd->start_address, NULL, NULL, 0, &reclen, flags); - - if (remote_debug) - fprintf_unfiltered (gdb_stderr, "%.*s\\r\n", reclen-1, srec); - SERIAL_WRITE (desc, srec, reclen); - - SERIAL_WRITE (desc, "\r\r", 2); /* Some monitors need these to wake up */ - - SERIAL_FLUSH_INPUT (desc); -} - -/* - * make_srec -- make an srecord. This writes each line, one at a - * time, each with it's own header and trailer line. - * An srecord looks like this: - * - * byte count-+ address - * start ---+ | | data +- checksum - * | | | | - * S01000006F6B692D746573742E73726563E4 - * S315000448600000000000000000FC00005900000000E9 - * S31A0004000023C1400037DE00F023604000377B009020825000348D - * S30B0004485A0000000000004E - * S70500040000F6 - * - * S<type><length><address><data><checksum> - * - * Where - * - length - * is the number of bytes following upto the checksum. Note that - * this is not the number of chars following, since it takes two - * chars to represent a byte. - * - type - * is one of: - * 0) header record - * 1) two byte address data record - * 2) three byte address data record - * 3) four byte address data record - * 7) four byte address termination record - * 8) three byte address termination record - * 9) two byte address termination record - * - * - address - * is the start address of the data following, or in the case of - * a termination record, the start address of the image - * - data - * is the data. - * - checksum - * is the sum of all the raw byte data in the record, from the length - * upwards, modulo 256 and subtracted from 255. - * - * This routine returns the length of the S-record. - * - */ - -static int -make_srec (srec, targ_addr, abfd, sect, sectoff, maxrecsize, flags) - char *srec; - CORE_ADDR targ_addr; - bfd *abfd; - asection *sect; - int sectoff; - int *maxrecsize; - int flags; -{ - unsigned char checksum; - int tmp; - const static char hextab[] = "0123456789ABCDEF"; - const static char data_code_table[] = "xx123"; - const static char term_code_table[] = "xx987"; - const static char *formats[] = {NULL, NULL, "S%c%02X%04X", "S%c%02X%06X", - "S%c%02X%08X"}; - char const *code_table; - int addr_size; - int payload_size; - int type_code; - char *binbuf; - char *p; - - if (sect) - { - tmp = flags; /* Data record */ - code_table = data_code_table; - binbuf = alloca (*maxrecsize/2); - } - else - { - tmp = flags >> SREC_TERM_SHIFT; /* Term record */ - code_table = term_code_table; - } - - if (tmp & SREC_4_BYTE_ADDR && targ_addr > 0xffffff) - addr_size = 4; - else if (tmp & SREC_3_BYTE_ADDR && targ_addr > 0xffff) - addr_size = 3; - else if (tmp & SREC_2_BYTE_ADDR && targ_addr > 0xff) - addr_size = 2; - else - fatal ("make_srec: Bad address (0x%x), or bad flags (0x%x).", targ_addr, - flags); - -/* Now that we know the address size, we can figure out how much data this - record can hold. */ - - if (sect) - { - payload_size = (*maxrecsize - (1 + 1 + 2 + addr_size * 2 + 2)) / 2; - payload_size = min (payload_size, sect->_raw_size - sectoff); - - bfd_get_section_contents (abfd, sect, binbuf, sectoff, payload_size); - } - else - payload_size = 0; /* Term packets have no payload */ - -/* Output the header. */ - - sprintf (srec, formats[addr_size], code_table[addr_size], - addr_size + payload_size + 1, targ_addr); - -/* Note that the checksum is calculated on the raw data, not the hexified - data. It includes the length, address and the data portions of the - packet. */ - - checksum = 0; - - checksum += (payload_size + addr_size + 1 /* Packet length */ - + (targ_addr & 0xff) /* Address... */ - + ((targ_addr >> 8) & 0xff) - + ((targ_addr >> 16) & 0xff) - + ((targ_addr >> 24) & 0xff)); - - p = srec + 1 + 1 + 2 + addr_size * 2; - - /* build the srecord */ - for (tmp = 0; tmp < payload_size; tmp++) - { - unsigned char k; - - k = binbuf[tmp]; - *p++ = hextab [k >> 4]; - *p++ = hextab [k & 0xf]; - checksum += k; - } - - checksum = ~checksum; - - *p++ = hextab[checksum >> 4]; - *p++ = hextab[checksum & 0xf]; - *p++ = '\r'; - - *maxrecsize = p - srec; - return payload_size; -} diff --git a/gdb/symtab.h b/gdb/symtab.h index 777b107..0a20db5 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1,5 +1,5 @@ /* Symbol table definitions for GDB. - Copyright 1986, 1989, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. + Copyright 1986, 1989, 1991, 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc. This file is part of GDB. @@ -432,8 +432,8 @@ struct block /* Different name spaces for symbols. Looking up a symbol specifies a namespace and ignores symbol definitions in other name spaces. */ - -enum namespace + +typedef enum { /* UNDEF_NAMESPACE is used when a namespace has not been discovered or none of the following apply. This usually indicates an error either @@ -456,7 +456,7 @@ enum namespace currently it is not used and labels are not recorded at all. */ LABEL_NAMESPACE -}; +} namespace_enum; /* An address-class says where to find the value of a symbol. */ @@ -559,6 +559,18 @@ enum address_class LOC_BASEREG_ARG, + /* Value is at fixed address, but the address of the variable has + to be determined from the minimal symbol table whenever the + variable is referenced. + This happens if debugging information for a global symbol is + emitted and the corresponding minimal symbol is defined + in another object file or runtime common storage. + The linker might even remove the minimal symbol if the global + symbol is never referenced, in which case the symbol remains + unresolved. */ + + LOC_UNRESOLVED, + /* The variable does not actually exist in the program. The value is ignored. */ @@ -578,7 +590,7 @@ struct symbol /* Name space code. */ - enum namespace namespace BYTE_BITFIELD; + namespace_enum namespace BYTE_BITFIELD; /* Address class */ @@ -623,7 +635,7 @@ struct partial_symbol /* Name space code. */ - enum namespace namespace BYTE_BITFIELD; + namespace_enum namespace BYTE_BITFIELD; /* Address class (for info_symbols) */ @@ -961,11 +973,11 @@ lookup_symtab PARAMS ((char *)); extern struct symbol * lookup_symbol PARAMS ((const char *, const struct block *, - const enum namespace, int *, struct symtab **)); + const namespace_enum, int *, struct symtab **)); extern struct symbol * lookup_block_symbol PARAMS ((const struct block *, const char *, - const enum namespace)); + const namespace_enum)); extern struct type * lookup_struct PARAMS ((char *, struct block *)); |