diff -r gdb-3.98/Makefile.in gdb-4.0/Makefile.in 2a3 > # Copyright (C) 1990, 1991 Cygnus Support 4c5,17 < # Last Mod Wed Jul 24 18:25:48 PDT 1991, by rich@cygint.cygnus.com --- > # This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ 6,7c19,21 < < # $Id: Makefile.in,v 1.21 1991/07/31 18:07:59 gnu Exp $ --- > # Last Mod Tue Aug 20 12:48:54 PDT 1991, by rich@cygint.cygnus.com > # > # $Id: Makefile.in,v 1.27 1991/08/23 07:15:56 gnu Exp $ 18c32 < BISONPATH = $(srcdir)/../bison`if [ -d $(srcdir)/bison.$(target) ] ; then echo .$(target) ; fi` --- > BISONPATH = 20c34 < BISON = $(BISONPATH)$(subdir)/bison -L $(BISONPATH)/ --- > BISON = `if [ -d $(srcdir)/../bison\`if [ -d $(srcdir)/bison.$(target) ] ; then echo .$(target) ; fi\`$(subdir) ] ; then echo $(srcdir)/../bison\`if [ -d $(srcdir)/bison.$(target) ] ; then echo .$(target) ; fi\`$(subdir)/bison -L $(srcdir)/../bison\`if [ -d $(srcdir)/bison.$(target) ] ; then echo .$(target) ; fi\`/; else echo yacc ; fi` 80a95,96 > -L$(srcdir)/../gnulib`if [ -d $(srcdir)/gnulib.$(target) ] ; \ > then echo .$(target) ; fi`$(subdir)/$(stagepass)/ \ 151c167 < `if [ "$(srcdir)" != "." ] ; then echo +f; fi` \ --- > `if [ "$(srcdir)" != "." ] ; then echo +subdirs; fi` \ 157c173,174 < DEVO_SUPPORT= README.configure Makefile.in configure configure.in --- > DEVO_SUPPORT= README README.configure Makefile.in configure configure.in \ > config.sub 173a191,208 > # Revision 1.27 1991/08/23 07:15:56 gnu > # Make README stick... > # > # Revision 1.26 1991/08/22 09:20:07 gnu > # Build a top-level README for devo. > # > # Revision 1.25 1991/08/22 07:15:49 rich > # Three part names, etc. > # > # Revision 1.24 1991/08/20 01:57:31 rich > # Another try at passing gnulib's location. > # > # Revision 1.23 1991/08/16 21:47:41 rich > # Pass on BISON as bison only if bison is here. > # > # Revision 1.22 1991/08/07 19:15:26 rich > # +forcesubdirs -> +subdirs > # Only in gdb-4.0: README diff -r gdb-3.98/README.configure gdb-4.0/README.configure 6c6 < Last Mod 19 Jul 1991 by gnu@cygnus.com --- > Last Mod Fri Aug 23 14:44:19 PDT 1991, by rich@cygint.cygnus.com 111,112c111,112 < ./configure sun4 +forcesubdirs +notation=postfix < ./configure sun3 +forcesubdirs +notation=infix --- > ./configure sun4 +subdirs +notation=postfix > ./configure sun3 +subdirs +notation=infix 118c118 < behaviour so the "+forcesubdirs" configuration option is necessary --- > behaviour so the "+subdirs" configuration option is necessary 124c124 < tools "in place" and won't show the "+forcesubdirs" option, but --- > tools "in place" and won't show the "+subdirs" option, but 215c215 < to be build in a sun3 environment, in subdirectories, to be --- > to be built in a sun3 environment, in subdirectories, to be 526c526 < * "./configure +forcesubdirs hostname +target=targetname" creates a --- > * "./configure +subdirs hostname +target=targetname" creates a 529c529 < be done from Host-hostname/Target-targetname. "./configure +f name" --- > be done from Host-hostname/Target-targetname. "./configure +sub name" diff -r gdb-3.98/bfd/ChangeLog gdb-4.0/bfd/ChangeLog 0a1,87 > Fri Aug 23 13:51:06 1991 John Gilmore (gnu at cygint.cygnus.com) > > * aoutx.h: Add information on host-aout.c and how to configure > to use it, to the manual. > * configure.in: Tix typo. > * ecoff.c: If compiling for DEC3100, use trad_unix core files, > else dummy out the core file support. > * trad-core.c (trad_unix_core_file_p): If HOST_DATA_START_ADDR is > specified, use it to locate the data section. > * coffcode.h (coff_write_symbols): Declare buffer as bfd_bytes > rather than as chars (lint). > > Thu Aug 22 22:20:19 1991 Stu Grossman (grossman at cygint.cygnus.com) > > * aoutx.h, coffcode.h: saberized. > > Thu Aug 22 11:27:06 1991 Roland H. Pesch (pesch at cygint.cygnus.com) > > * bfd.texinfo: some cleanup, reincorporated more intro matter from > bfd.doc > bfd.c, targets.c: minor rewording of doc segments > > > Wed Aug 21 19:13:22 1991 John Gilmore (gnu at cygint.cygnus.com) > > * trad-core.c (trad_unix_core_file_p): Use HOST_TEXT_START_ADDR, > etc, rather than TEXT_START_ADDR. > * host-aout.c: Remove #if 0 around whole thing. > Update to modern (32/64-bit) a.out naming conventions. > Include a large chunk of ../include/a.out.gnu.h to get macros that > are not defined by the system include files. > (host_aout_{32,64}_write_object_contents): Use the WRITE_HEADERS > macro used by the other a.out implementations. > * Makefile.in: Give dependencies to OPTIONAL_BACKENDS. > > Wed Aug 21 14:33:06 1991 Roland H. Pesch (pesch at cygint.cygnus.com) > > * Makefile.in: use targets "bfd.dvi" and "bfd.ps" instead of > texdoc and psdoc; make these depend on generated .texi's > > * scanit, (new) unPROTO: turn PROTO macros into ANSI declarations in > doc > > * bfd.c, reloc.c, syms.c: minor spelling/wording fixes in doc > portions > > * Makefile.in, awkscan-ip, awkscan-p, intobfd, > libbfd.h, libcoff.h, tolibcoff; new bfd-in.h, libbfd-in.h, > libcoff-in.h: (a) use separate files for invariant parts of bfd.h, > libbfd.h, and libcoff.h; (b) in generated parts of same, use less > obtrusive marks indicating .c origins. > > * bfd.texinfo: generalize most references to linker > > Tue Aug 20 15:18:02 1991 Roland H. Pesch (pesch at cygint.cygnus.com) > > * Makefile.in: include core.p in PROTOS (building better bfd.h) > * archures.c: remove empty foo() definition (crept in at vn1.9) > > Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com) > > * bfd.texinfo: use @setchapternewpage on instead of lots of > @page's; minor rephrasing in Introduction. > > * aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c, > coffcode.h, core.c, format.c, ieee.c, libbfd.c, libbfd.h, libcoff.h, > oasys.c, opncls.c, reloc.c, section.c, syms.c, targets.c (documentation > segments): used BFD (caps) more consistently as a name in > discourse, fixed a few other minor typos and uses of fonts > > > Thu Aug 8 16:47:43 1991 Steve Chamberlain (steve at cygint.cygnus.com) > > * coffcode.h: fixed bug where string table size wasn't being swapped. > > Thu Aug 1 16:35:28 1991 Steve Chamberlain (steve at cygint.cygnus.com) > > * section.c: added SEC_CONSTRUCTOR_TEXT|DATA|BSS flags > > * syms.c: added BSF_CONSTRUCTOR, BSF_WARNING and BSF_INDIRECT > flags. (bfd_print_symbol_vandf) now knows what to do with the > above flags. > > * aoutx.h: made translate_from_native_sym_flags and > translate_to_native_sym_flags produce the above flags. > > diff -r gdb-3.98/bfd/Makefile.in gdb-4.0/bfd/Makefile.in 21c21 < # $Id: Makefile.in,v 1.27 1991/07/31 17:37:02 gnu Exp $ --- > # $Id: Makefile.in,v 1.36 1991/08/22 19:59:41 steve Exp $ 25a26 > docdir = $(srcdir)/doc 32a34,35 > > 45,46c48,50 < icoff.o m68kcoff.o i386coff.o m88k-bcs.o ecoff.o \ < # trad-core.o --- > icoff.o m68kcoff.o i386coff.o m88k-bcs.o ecoff.o > > OPTIONAL_BACKENDS = trad-core.o 105c109 < rm -f *.[oa] *~ core *.E --- > rm -f *.[oa] *~ core *.E *.p *.ip 110c114 < $(BFD_LIBS) $(BFD_BACKENDS): libbfd.h $(BFD_H) --- > $(BFD_LIBS) $(BFD_BACKENDS) $(OPTIONAL_BACKENDS): libbfd.h $(BFD_H) 188c192 < `if [ "$(srcdir)" != "." ] ; then echo +f; fi` \ --- > `if [ "$(srcdir)" != "." ] ; then echo +subdirs; fi` \ 195,231d198 < # Stuff to make the documentation for bfd. < # < # make docs < # rebuilds the documentation. Has to be done when the source is < # modified until I work out how to do this properly < # < # make docs headers < # rebuilds the header files from the source < # < # make docs texdoc < # rebuilds the bfd.dvi manual < # < # make docs texinfo < # rebuilts the bfdinfo manual < < < .SUFFIXES: .doc .o .c .h .proto < < .c.doc: < makedoc <$< doc/$*.doc doc/$*.proto doc/$*.protointernal doc/$*.drop < < .h.doc: < makedoc <$< doc/$*.doc doc/$*.proto doc/$*.protointernal doc/$*.drop < < .proto.doc: < makedoc <$< doc/$*.doc doc/$*.proto doc/$*.protointernal doc/$*.drop < < < DSRC=$(CFILES) < < docs: syms.doc bfd.doc cache.doc format.doc section.doc archive.doc \ < core.doc libbfd.doc archures.doc reloc.doc opncls.doc \ < targets.doc aoutx.doc coffcode.doc < < < PROTOS = doc/opncls.proto doc/archures.proto doc/libbfd.proto doc/section.proto doc/syms.proto doc/bfd.proto doc/archive.proto \ < doc/reloc.proto doc/targets.proto doc/format.proto 233,235c200,204 < < headers : $(PROTOS) < - mkdir doc --- > headers: > cp $(srcdir)/bfd-in.h $(docdir) > cp $(srcdir)/libbfd-in.h $(docdir) > cp $(srcdir)/libcoff-in.h $(docdir) > (cd $(docdir); make protos) 237,257c206,208 < sed <$(BFD_H) >bfd.h.new -e '1,/THE FOLLOWING/!d' < cat doc/opncls.proto doc/archures.proto \ < doc/libbfd.proto doc/section.proto doc/syms.proto \ < doc/bfd.proto doc/archive.proto \ < doc/core.proto \ < doc/reloc.proto doc/targets.proto doc/format.proto >>bfd.h.new < echo >> bfd.h.new < echo "#endif" >> bfd.h.new < echo >> bfd.h.new < mv bfd.h.new $(BFD_H) < < # and libbfd.h < sed < libbfd.h >libbfd.h.new -e '1,/THE FOLLOWING/!d' < cat doc/libbfd.protointernal doc/cache.protointernal doc/reloc.protointernal >> libbfd.h.new < echo >> libbfd.h.new < mv libbfd.h.new libbfd.h < < # and libcoff.h < sed < $(srcdir)/libcoff.h >libcoff.h.new -e '1,/THE FOLLOWING/!d' < cat doc/coffcode.proto >>libcoff.h.new < mv libcoff.h.new $(srcdir)/libcoff.h --- > cp $(docdir)/bfd.h $(BFD_H) > cp $(docdir)/libbfd.h $(srcdir)/libbfd.h > cp $(docdir)/libcoff.h $(srcdir)/libcoff.h 259,261c210,214 < < texinfo: < makeinfo +no-validate bfd.texinfo --- > bfd.info: > ( cd doc; make bfd.info) > > bfd.dvi: > (cd doc; make bfd.dvi) 263,266c216,217 < texdoc: < tex bfd.texinfo < texindex bfd.?? < tex bfd.texinfo --- > bfd.ps: > (cd doc; make bfd.ps) 268,269d218 < quickdoc: $(DSRC) docs < tex bfd.texinfo diff -r gdb-3.98/bfd/aoutf1.h gdb-4.0/bfd/aoutf1.h 247c247 < struct core { --- > struct external_sparc_core { 250,251c250,252 < struct regs c_regs; /* General purpose registers -- MACHDEP SIZE */ < struct internal_exec c_aouthdr; /* A.out header */ --- > #define SPARC_CORE_LEN 432 > int c_regs[19]; /* General purpose registers -- MACHDEP SIZE */ > struct external_exec c_aouthdr; /* A.out header */ 266,268c267,333 < /* Supposedly the user stack grows downward from the bottom of kernel memory. < Presuming that this remains true, this definition will work. */ < #define USRSTACK (-(128*1024*1024)) --- > struct external_sun3_core { > int c_magic; /* Corefile magic number */ > int c_len; /* Sizeof (struct core) */ > #define SUN3_CORE_LEN 826 /* As of SunOS 4.1.1 */ > int c_regs[18]; /* General purpose registers -- MACHDEP SIZE */ > struct external_exec c_aouthdr; /* A.out header */ > int c_signo; /* Killing signal, if any */ > int c_tsize; /* Text size (bytes) */ > int c_dsize; /* Data size (bytes) */ > int c_ssize; /* Stack size (bytes) */ > char c_cmdname[CORE_NAMELEN + 1]; /* Command name */ > double fp_stuff[1]; /* external FPU state (size unknown by us) */ > /* The type "double" is critical here, for alignment. > SunOS declares a struct here, but the struct's alignment > is double since it contains doubles. */ > int c_ucode; /* Exception no. from u_code */ > /* (this member is not accessible by name since we don't > portably know the size of fp_stuff.) */ > }; > > struct internal_sunos_core { > int c_magic; /* Corefile magic number */ > int c_len; /* Sizeof (struct core) */ > long c_regs_pos; /* file offset of General purpose registers */ > int c_regs_size; /* size of General purpose registers */ > struct internal_exec c_aouthdr; /* A.out header */ > int c_signo; /* Killing signal, if any */ > int c_tsize; /* Text size (bytes) */ > int c_dsize; /* Data size (bytes) */ > int c_ssize; /* Stack size (bytes) */ > long c_stacktop; /* Stack top (address) */ > char c_cmdname[CORE_NAMELEN + 1]; /* Command name */ > long fp_stuff_pos; /* file offset of external FPU state (regs) */ > int fp_stuff_size; /* Size of it */ > int c_ucode; /* Exception no. from u_code */ > }; > > /* byte-swap in the Sun-3 core structure */ > static void > DEFUN(swapcore_sun3,(abfd, ext, intcore), > bfd *abfd AND > char *ext AND > struct internal_sunos_core *intcore) > { > struct external_exec exec_bytes; > struct external_sun3_core *extcore = (struct external_sun3_core *)ext; > > intcore->c_magic = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_magic); > intcore->c_len = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_len ); > intcore->c_regs_pos = (long) (((struct external_sun3_core *)0)->c_regs); > intcore->c_regs_size = sizeof (extcore->c_regs); > NAME(aout,swap_exec_header_in)(abfd, &extcore->c_aouthdr,&intcore->c_aouthdr); > intcore->c_signo = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_signo); > intcore->c_tsize = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_tsize); > intcore->c_dsize = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_dsize); > intcore->c_ssize = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_ssize); > bcopy (extcore->c_cmdname, intcore->c_cmdname, sizeof (intcore->c_cmdname)); > intcore->fp_stuff_pos = (long) (((struct external_sun3_core *)0)->fp_stuff); > /* FP stuff takes up whole rest of struct, except c_ucode. */ > intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) - > (file_ptr)(((struct external_sun3_core *)0)->fp_stuff); > /* Ucode is the last thing in the struct -- just before the end */ > intcore->c_ucode = bfd_h_get_32 (abfd, > intcore->c_len - sizeof (extcore->c_ucode) + (unsigned char *)extcore); > intcore->c_stacktop = 0x0E000000; /* By experimentation */ > } > 270c335,366 < PROTO (static void, swapcore, (bfd *abfd, struct core *core)); --- > /* byte-swap in the Sun-3 core structure */ > static void > DEFUN(swapcore_sparc,(abfd, ext, intcore), > bfd *abfd AND > char *ext AND > struct internal_sunos_core *intcore) > { > struct external_sparc_core *extcore = (struct external_sparc_core *)ext; > > intcore->c_magic = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_magic); > intcore->c_len = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_len ); > intcore->c_regs_pos = (long) (((struct external_sparc_core *)0)->c_regs); > intcore->c_regs_size = sizeof (extcore->c_regs); > NAME(aout,swap_exec_header_in)(abfd, &extcore->c_aouthdr,&intcore->c_aouthdr); > intcore->c_signo = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_signo); > intcore->c_tsize = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_tsize); > intcore->c_dsize = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_dsize); > intcore->c_ssize = bfd_h_get_32 (abfd, (unsigned char *)&extcore->c_ssize); > bcopy (extcore->c_cmdname, intcore->c_cmdname, sizeof (intcore->c_cmdname)); > intcore->fp_stuff_pos = (long) (((struct external_sparc_core *)0)->fp_stuff); > /* FP stuff takes up whole rest of struct, except c_ucode. */ > intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) - > (file_ptr)(((struct external_sparc_core *)0)->fp_stuff); > /* Ucode is the last thing in the struct -- just before the end */ > intcore->c_ucode = bfd_h_get_32 (abfd, > intcore->c_len - sizeof (extcore->c_ucode) + (unsigned char *)extcore); > /* Supposedly the user stack grows downward from the bottom of kernel memory. > Presuming that this remains true, this definition will work. */ > #define USRSTACK (-(128*1024*1024)) > intcore->c_stacktop = USRSTACK; /* By experimentation */ > #undef USRSTACK > } 272,277c368,373 < /* need this cast b/c ptr is really void * */ < #define core_hdr(bfd) (((struct suncordata *) (bfd->tdata))->hdr) < #define core_datasec(bfd) (((struct suncordata *) ((bfd)->tdata))->data_section) < #define core_stacksec(bfd) (((struct suncordata*)((bfd)->tdata))->stack_section) < #define core_regsec(bfd) (((struct suncordata *) ((bfd)->tdata))->reg_section) < #define core_reg2sec(bfd) (((struct suncordata *) ((bfd)->tdata))->reg2_section) --- > /* need this cast because ptr is really void * */ > #define core_hdr(bfd) (((struct suncoredata *) (bfd->tdata))->hdr) > #define core_datasec(bfd) (((struct suncoredata *) ((bfd)->tdata))->data_section) > #define core_stacksec(bfd) (((struct suncoredata*)((bfd)->tdata))->stack_section) > #define core_regsec(bfd) (((struct suncoredata *) ((bfd)->tdata))->reg_section) > #define core_reg2sec(bfd) (((struct suncoredata *) ((bfd)->tdata))->reg2_section) 280,285c376,381 < struct suncordata { < struct core *hdr; /* core file header */ < asection *data_section; < asection *stack_section; < asection *reg_section; < asection *reg2_section; --- > struct suncoredata { > struct internal_sunos_core *hdr; /* core file header */ > asection *data_section; > asection *stack_section; > asection *reg_section; > asection *reg2_section; 295c391,392 < struct core *core; --- > struct internal_sunos_core *core; > char *extcore; 296a394,398 > struct mergem { > struct suncoredata suncoredata; > struct internal_sunos_core internal_sunos_core; > char external_core[1]; > } *mergem; 318,319c420,421 < rawptr = bfd_zalloc (abfd, core_size + sizeof (struct suncordata)); < if (rawptr == NULL) { --- > mergem = (struct mergem *)bfd_zalloc (abfd, core_size + sizeof (struct mergem)); > if (mergem == NULL) { 324c426 < core = (struct core *) (rawptr + sizeof (struct suncordata)); --- > extcore = mergem->external_core; 326c428 < if ((bfd_read ((PTR) core, 1, core_size, abfd)) != core_size) { --- > if ((bfd_read ((PTR) extcore, 1, core_size, abfd)) != core_size) { 328c430,447 < bfd_release (abfd, rawptr); --- > bfd_release (abfd, (char *)mergem); > return 0; > } > > /* Validate that it's a core file we know how to handle, due to sun > botching the positioning of registers and other fields in a machine > dependent way. */ > core = &mergem->internal_sunos_core; > switch (core_size) { > case SPARC_CORE_LEN: > swapcore_sparc (abfd, extcore, core); > break; > case SUN3_CORE_LEN: > swapcore_sun3 (abfd, extcore, core); > break; > default: > bfd_error = system_call_error; /* FIXME */ > bfd_release (abfd, (char *)mergem); 332,333c451 < swapcore (abfd, core); < set_tdata (abfd, ((struct suncordata *) rawptr)); --- > set_tdata (abfd, &mergem->suncoredata); 375,378c493,494 < core_regsec (abfd)->size = (sizeof core->c_regs); < /* Float regs take up end of struct, except c_ucode. */ < core_reg2sec (abfd)->size = core_size - (sizeof core->c_ucode) - < (file_ptr)(((struct core *)0)->fp_stuff); --- > core_regsec (abfd)->size = core->c_regs_size; > core_reg2sec (abfd)->size = core->fp_stuff_size; 380c496 < core_stacksec (abfd)->vma = (USRSTACK - core->c_ssize); --- > core_stacksec (abfd)->vma = (core->c_stacktop - core->c_ssize); 387,389c503,505 < /* In file header: */ < core_regsec (abfd)->filepos = (file_ptr)(&((struct core *)0)->c_regs); < core_reg2sec (abfd)->filepos = (file_ptr)(((struct core *)0)->fp_stuff); --- > /* We'll access the regs afresh in the core file, like any section: */ > core_regsec (abfd)->filepos = (file_ptr)core->c_regs_pos; > core_reg2sec (abfd)->filepos = (file_ptr)core->fp_stuff_pos; 432,453d547 < } < < /* byte-swap core structure */ < /* FIXME, this needs more work to swap IN a core struct from raw bytes */ < static void < DEFUN(swapcore,(abfd, core), < bfd *abfd AND < struct core *core) < { < struct external_exec exec_bytes; < < core->c_magic = bfd_h_get_32 (abfd, (unsigned char *)&core->c_magic); < core->c_len = bfd_h_get_32 (abfd, (unsigned char *)&core->c_len ); < /* Leave integer registers in target byte order. */ < bcopy ((char *)&(core->c_aouthdr), (char *)&exec_bytes, EXEC_BYTES_SIZE); < NAME(aout,swap_exec_header_in)(abfd, &exec_bytes, &core->c_aouthdr); < core->c_signo = bfd_h_get_32 (abfd, (unsigned char *)&core->c_signo); < core->c_tsize = bfd_h_get_32 (abfd, (unsigned char *)&core->c_tsize); < core->c_dsize = bfd_h_get_32 (abfd, (unsigned char *)&core->c_dsize); < core->c_ssize = bfd_h_get_32 (abfd, (unsigned char *)&core->c_ssize); < /* Leave FP registers in target byte order. */ < /* Leave "c_ucode" unswapped for now, since we can't find it easily. */ diff -r gdb-3.98/bfd/aoutx.h gdb-4.0/bfd/aoutx.h 40c40 < bfd requires. It is included by @code{aout32.c} and @code{aout64.c} to --- > BFD requires. It is included by @code{aout32.c} and @code{aout64.c} to 74a75,105 > The file host-aout.c is a special case. It is for a large set of hosts > that use ``more or less standard'' a.out files, and for which cross-debugging > is not interesting. It uses the standard 32-bit a.out support routines, > but determines the file offsets and addresses of the text, data, > and BSS sections, the machine architecture and machine type, > and the entry point address, in a host-dependent manner. Once these > values have been determined, generic code is used to handle the > object file. > > When porting it to run on a new system, you must supply: > > HOST_PAGE_SIZE > HOST_SEGMENT_SIZE > HOST_MACHINE_ARCH (optional) > HOST_MACHINE_MACHINE (optional) > HOST_TEXT_START_ADDR > HOST_STACK_END_ADDR > > in the file ../include/sys/h-XXX.h (for your host). These values, plus > the structures and macros defined in on your host system, will > produce a BFD target that will access ordinary a.out files on your host. > > To configure a new machine to use host-aout.c, specify: > > TDEFINES = -DDEFAULT_VECTOR=host_aout_big_vec > TDEPFILES= host-aout.o trad-core.o > > in the config/tmake-XXX file, and modify configure.in to use the > tmake-XXX file (by setting "bfd_target=XXX") when your configuration is > selected. > 76a108,109 > #define KEEPIT flags > #define KEEPITTYPE int 384c417 < This routine initializes a bfd for use with a.out files. --- > This routine initializes a BFD for use with a.out files. 478c511 < Sets the architecture and the machine of the bfd to those values --- > Sets the architecture and the machine of the BFD to those values 505c538 < Called by the bfd in response to a @code{bfd_make_section} request. --- > Called by the BFD in response to a @code{bfd_make_section} request. 628,674c661,696 < { < switch (cache_ptr->type & N_TYPE) { < case N_SETA: < case N_SETT: < case N_SETD: < case N_SETB: < { < char *copy = bfd_alloc(abfd, strlen(cache_ptr->symbol.name)+1); < asection *section ; < arelent_chain *reloc = (arelent_chain *)bfd_alloc(abfd, sizeof(arelent_chain)); < strcpy(copy, cache_ptr->symbol.name); < section = bfd_make_section(abfd,copy); < switch ( (cache_ptr->type & N_TYPE) ) { < case N_SETA: < reloc->relent.section = (asection *)NULL; < cache_ptr->symbol.section = (asection *)NULL; < break; < case N_SETT: < reloc->relent.section = (asection *)obj_textsec(abfd); < cache_ptr->symbol.value -= reloc->relent.section->vma; < break; < case N_SETD: < reloc->relent.section = (asection *)obj_datasec(abfd); < cache_ptr->symbol.value -= reloc->relent.section->vma; < break; < case N_SETB: < reloc->relent.section = (asection *)obj_bsssec(abfd); < cache_ptr->symbol.value -= reloc->relent.section->vma; < break; < } < cache_ptr->symbol.section = reloc->relent.section; < reloc->relent.addend = cache_ptr->symbol.value ; < < /* We modify the symbol to belong to a section depending upon the < name of the symbol - probably __CTOR__ or __DTOR__ but we don't < really care, and add to the size of the section to contain a < pointer to the symbol. Build a reloc entry to relocate to this < symbol attached to this section. */ < < section->flags = SEC_CONSTRUCTOR; < section->reloc_count++; < section->alignment_power = 2; < reloc->relent.sym_ptr_ptr = (asymbol **)NULL; < reloc->next = section->constructor_chain; < section->constructor_chain = reloc; < reloc->relent.address = section->size; < section->size += sizeof(int *); --- > { > switch (cache_ptr->type & N_TYPE) { > case N_SETA: > case N_SETT: > case N_SETD: > case N_SETB: > { > char *copy = bfd_alloc(abfd, strlen(cache_ptr->symbol.name)+1); > asection *section ; > arelent_chain *reloc = (arelent_chain *)bfd_alloc(abfd, sizeof(arelent_chain)); > strcpy(copy, cache_ptr->symbol.name); > section = bfd_make_section(abfd,copy); > switch ( (cache_ptr->type & N_TYPE) ) { > case N_SETA: > section->flags = SEC_CONSTRUCTOR; > reloc->relent.section = (asection *)NULL; > cache_ptr->symbol.section = (asection *)NULL; > break; > case N_SETT: > section->flags = SEC_CONSTRUCTOR_TEXT; > reloc->relent.section = (asection *)obj_textsec(abfd); > cache_ptr->symbol.value -= reloc->relent.section->vma; > break; > case N_SETD: > section->flags = SEC_CONSTRUCTOR_DATA; > reloc->relent.section = (asection *)obj_datasec(abfd); > cache_ptr->symbol.value -= reloc->relent.section->vma; > break; > case N_SETB: > section->flags = SEC_CONSTRUCTOR_BSS; > reloc->relent.section = (asection *)obj_bsssec(abfd); > cache_ptr->symbol.value -= reloc->relent.section->vma; > break; > } > cache_ptr->symbol.section = reloc->relent.section; > reloc->relent.addend = cache_ptr->symbol.value ; 676,679c698,716 < reloc->relent.howto = howto_table_ext +CTOR_TABLE_RELOC_IDX; < cache_ptr->symbol.flags |= BSF_DEBUGGING ; < } < break; --- > /* We modify the symbol to belong to a section depending upon the > name of the symbol - probably __CTOR__ or __DTOR__ but we don't > really care, and add to the size of the section to contain a > pointer to the symbol. Build a reloc entry to relocate to this > symbol attached to this section. */ > > > section->reloc_count++; > section->alignment_power = 2; > reloc->relent.sym_ptr_ptr = (asymbol **)NULL; > reloc->next = section->constructor_chain; > section->constructor_chain = reloc; > reloc->relent.address = section->size; > section->size += sizeof(int *); > > reloc->relent.howto = howto_table_ext +CTOR_TABLE_RELOC_IDX; > cache_ptr->symbol.flags |= BSF_DEBUGGING | BSF_CONSTRUCTOR; > } > break; 681c718,739 < --- > if (cache_ptr->type == N_WARNING) > { > /* This symbol is the text of a warning message, the next symbol > is the symbol to associate the warning with */ > cache_ptr->symbol.flags = BSF_DEBUGGING | BSF_WARNING; > cache_ptr->symbol.value = (bfd_vma)((cache_ptr+1)); > /* We furgle with the next symbol in place. We don't want it to be undefined, we'll trample the type */ > (sym_pointer+1)->e_type[0] = 0xff; > break; > } > if ((cache_ptr->type | N_EXT) == (N_INDR | N_EXT)) { > /* Two symbols in a row for an INDR message. The first symbol > contains the name we will match, the second symbol contains the > name the first name is translated into. It is supplied to us > undefined. This is good, since we want to pull in any files which > define it */ > cache_ptr->symbol.flags = BSF_DEBUGGING | BSF_INDIRECT; > cache_ptr->symbol.value = (bfd_vma)((cache_ptr+1)); > break; > } > > 706a765 > 719c778 < --- > 726c785 < --- > 734c793 < --- > 787c846,848 < --- > if (cache_ptr->flags & (BSF_WARNING)) { > (sym_pointer+1)->e_type[0] = 1; > } 939c1000 < translate_to_native_sym_flags (&nsp, (PTR)g, abfd); --- > translate_to_native_sym_flags (&nsp, g, abfd); 965c1026 < g->name = itos(count); /* smash the generic symbol */ --- > g->KEEPIT = (KEEPITTYPE) count; 1025c1086 < r_index = stoi((*(g->sym_ptr_ptr))->name); --- > r_index = ((*(g->sym_ptr_ptr))->KEEPIT); 1111c1172 < r_index = stoi((*(g->sym_ptr_ptr))->name); --- > r_index = stoi((*(g->sym_ptr_ptr))->KEEPIT); 1530c1591 < provided a bfd, a section and an offset into the section, calculate --- > provided a BFD, a section and an offset into the section, calculate diff -r gdb-3.98/bfd/archive.c gdb-4.0/bfd/archive.c 27c27 < Archives are supported in bfd in @code{archive.c}. --- > Archives are supported in BFD in @code{archive.c}. 29,32c29,32 < An archive is represented internally just like another bfd, with a < pointer to a chain of contained bfds. Archives can be created by < opening bfds, linking them together and attatching them as children to < another bfd and then closing the parent bfd. --- > An archive is represented internally just like another BFD, with a > pointer to a chain of contained BFDs. Archives can be created by > opening BFDs, linking them together and attaching them as children to > another BFD and then closing the parent BFD. 42c42 < /* $Id: archive.c,v 1.24 1991/07/31 16:57:25 gnu Exp $ */ --- > /* $Id: archive.c,v 1.27 1991/08/22 16:16:51 steve Exp $ */ 127c127,128 < Used whilst processing archives. Sets the head of the chain of bfds --- > > Used whilst processing archives. Sets the head of the chain of BFDs 128a130 > 129a132 > 342a346 > Return the sub bfd contained within the archive at archive index n. 359c363 < Initially provided a bfd containing an archive and NULL, opens a bfd --- > Initially provided a BFD containing an archive and NULL, opens a BFD 362c366 < return value to return a created bfd to the next contained element. --- > return value to return a created BFD to the next contained element. 567c571 < stringsize = mapdata->parsed_size - (4 * (*raw_armap)) - 4; --- > stringsize = mapdata->parsed_size - (4 * (bfd_h_get_32(abfd, (PTR)raw_armap))) - 4; 570c574 < unsigned int nsymz = *raw_armap; --- > unsigned int nsymz = bfd_h_get_32(abfd, (PTR)raw_armap); 589c593 < carsyms->file_offset = *rawptr; --- > carsyms->file_offset = bfd_h_get_32(abfd, (PTR)rawptr); 596c600 < ardata->symdef_count = *raw_armap; --- > ardata->symdef_count = bfd_h_get_32(abfd, (PTR)raw_armap); 603c607 < So they will stick around until the bfd is closed. */ --- > So they will stick around until the BFD is closed. */ 961c965 < /* The bfd is open for write and has its format set to bfd_archive */ --- > /* The BFD is open for write and has its format set to bfd_archive */ diff -r gdb-3.98/bfd/archures.c gdb-4.0/bfd/archures.c 24,25c24,25 < keeps two atoms in a bfd describing the architecture of the data < attatched to the bfd, the @code{enum bfd_architecture arch} field and --- > keeps two atoms in a BFD describing the architecture of the data > attached to the BFD, the @code{enum bfd_architecture arch} field and 84c84 < /* $Id: archures.c,v 1.8 1991/07/31 16:57:26 gnu Exp $ */ --- > /* $Id: archures.c,v 1.12 1991/08/20 22:23:50 pesch Exp $ */ 125c125 < bfd_printable_arch_mach. --- > @code{bfd_printable_arch_mach}. 347c347 < two architectures and machine types implied by the bfds and sets the --- > two architectures and machine types implied by the BFDs and sets the 350c350 < This routine returns @code{true} if the bfds are of compatible type, --- > This routine returns @code{true} if the BFDs are of compatible type, 458a459,462 > > > > Only in gdb-4.0/bfd: bfd-in.h diff -r gdb-3.98/bfd/bfd.c gdb-4.0/bfd/bfd.c 21c21 < /* $Id: bfd.c,v 1.18 1991/07/31 16:57:27 gnu Exp $ */ --- > /* $Id: bfd.c,v 1.22 1991/08/22 18:27:01 pesch Exp $ */ 24c24 < @section typedef bfd --- > @section @code{typedef bfd} 26,28c26,28 < Pointers to bfd structs are the cornerstone of any application using < libbfd. References though the bfd and to data in the bfd give the < entire bfd functionality. --- > A BFD is has type @code{bfd}; objects of this type are the cornerstone > of any application using @code{libbfd}. References though the BFD and > to data in the BFD give the entire BFD functionality. 30,31c30,32 < Finally! The BFD struct itself. This contains the major data about < the file, and contains pointers to the rest of the data. --- > Here is the struct used to define the type @code{bfd}. This contains > the major data about the file, and contains pointers to the rest of > the data. 37c38 < The filename the application opened the bfd with. --- > The filename the application opened the BFD with. 47c48 < includes bfd.h, IOSTREAM has been declared as a "char *", and MTIME --- > includes @file{bfd.h}, IOSTREAM has been declared as a "char *", and MTIME 59c60 < Marks whether there was a default target specified when the bfd was --- > Marks whether there was a default target specified when the BFD was 65c66,67 < The caching routines use these to maintain an LRU list of bfds. --- > The caching routines use these to maintain a least-recently-used list of > BFDs (@pxref{File Caching}). 69,70c71,72 < When a file is closed by the caching routines, it retains the state < here: --- > When a file is closed by the caching routines, BFD retains state > information on the file here: 83c85 < For output files, channel we locked (is this used?). --- > Reserved for an unimplemented file locking extension. 87c89 < The format which belongs to the bfd. --- > The format which belongs to the BFD. 91c93 < The direction the bfd was opened with --- > The direction the BFD was opened with 120c122 < Stuff only usefull for object files: --- > Stuff only useful for object files: 127c129 < Symtab for output bfd --- > Symbol table for output BFD 139c141 < Stuff only usefull for archives: --- > Stuff only useful for archives: 155c157 < Where all the allocated stuff under this BFD goes --- > Where all the allocated stuff under this BFD goes (@pxref{Memory Usage}). 356c358 < Marks the entry point of an output bfd. Returns @code{true} on --- > Marks the entry point of an output BFD. Returns @code{true} on Only in gdb-3.98/bfd: bfd.texinfo diff -r gdb-3.98/bfd/cache.c gdb-4.0/bfd/cache.c 24c24 < bfds as it wants without regard to the underlying operating system's --- > BFDs as it wants without regard to the underlying operating system's 30c30 < required bfd is open. If not, then it chooses a file to close, closes --- > required BFD is open. If not, then it chooses a file to close, closes 37c37 < /* $Id: cache.c,v 1.8 1991/07/31 16:57:29 gnu Exp $ */ --- > /* $Id: cache.c,v 1.10 1991/08/19 23:02:59 pesch Exp $ */ 55c55 < static bfd *cache_sentinel; /* Chain of bfds with active fds we've --- > static bfd *cache_sentinel; /* Chain of BFDs with active fds we've 59,61c59,61 < Zero, or a pointer to the topmost bfd on the chain. This is used by the < bfd_cache_lookup() macro in libbfd.h to determine when it can avoid a function < call. --- > Zero, or a pointer to the topmost BFD on the chain. This is used by > the @code{bfd_cache_lookup} macro in @file{libbfd.h} to determine when > it can avoid a function call. 71,72c71,72 < Checks to see if the required bfd is the same as the last one looked < up. If so then it can use the iostream in the bfd with impunity, since --- > Checks to see if the required BFD is the same as the last one looked > up. If so then it can use the iostream in the BFD with impunity, since 106c106 < /* Cuts the bfd abfd out of the chain in the cache */ --- > /* Cuts the BFD abfd out of the chain in the cache */ 163c163 < Remove the bfd from the cache. If the attatched file is open, then close it too. --- > Remove the BFD from the cache. If the attached file is open, then close it too. 248c248 < /* This is a bfd without a stream - --- > /* This is a BFD without a stream - diff -r gdb-3.98/bfd/coffcode.h gdb-4.0/bfd/coffcode.h 59c59 < You can verify that your new bfd backend works quite simply by --- > You can verify that your new BFD backend works quite simply by 72c72 < Each flavour of coff supported in bfd has its own header file --- > Each flavour of coff supported in BFD has its own header file 86c86 < To port bfd, that person will have to add more @code{#defines}. --- > To port BFD, that person will have to add more @code{#defines}. 91c91 < own, but uses bfd to fix things up. --- > own, but uses BFD to fix things up. 94c94 < The simple canonical form for symbols used by bfd is not rich enough --- > The simple canonical form for symbols used by BFD is not rich enough 122c122 < canonical table used by the bfd application. Each symbol is inspected --- > canonical table used by the BFD application. Each symbol is inspected 128c128 < Any linenumbers are read from the coff file too, and attatched to the --- > Any linenumbers are read from the coff file too, and attached to the 134c134 < remembers the bfd from which was born, and on output the back end --- > remembers the BFD from which was born, and on output the back end 146c146 < The symbol table is not output to a writable bfd until it is closed. --- > The symbol table is not output to a writable BFD until it is closed. 158c158 < of bfd into the form used by coff. Internally, bfd expects symbol --- > of BFD into the form used by coff. Internally, BFD expects symbol 221c221 < The actual symbol which the rest of bfd works with --- > The actual symbol which the rest of BFD works with 238c238 < /* $Id: coffcode.h,v 1.13 1991/07/31 16:57:31 gnu Exp $ */ --- > /* $Id: coffcode.h,v 1.18 1991/08/23 20:55:25 gnu Exp $ */ 1053c1053 < bfd_swap_aouthdr_in(abfd, &opthdr, &internal_a); --- > bfd_swap_aouthdr_in(abfd, (char *)&opthdr, (char *)&internal_a); 1671,1672c1671,1674 < size = size; < bfd_write((PTR) &size, 1, sizeof(size), abfd); --- > bfd_byte buffer[4]; > > bfd_h_put_32(abfd, size, buffer); > bfd_write((PTR) buffer, 1, sizeof(buffer), abfd); 1679c1681,1682 < maxlen = ((c_symbol != NULL && c_symbol->native != NULL) && (c_symbol->native->u.syment.n_sclass == C_FILE)) ? --- > maxlen = ((c_symbol != NULL && c_symbol->native != NULL) && > (c_symbol->native->u.syment.n_sclass == C_FILE)) ? 2476c2479 < coff_swap_sym_in(abfd, raw_src,&internal_ptr->u.syment); --- > coff_swap_sym_in(abfd, (char *)raw_src, (char *)&internal_ptr->u.syment); 2907c2910 < Coff relocations are easily transformed into the internal bfd form --- > Coff relocations are easily transformed into the internal BFD form 3080c3083 < provided a bfd, a section and an offset into the section, calculate and --- > provided a BFD, a section and an offset into the section, calculate and 3138c3141 < If this is the same bfd as we were previously called with and this is --- > If this is the same BFD as we were previously called with and this is Only in gdb-4.0/bfd/config: hmake-hp300bsd Only in gdb-3.98/bfd/config: tmake-a29k Only in gdb-4.0/bfd/config: tmake-a29k-aout Only in gdb-4.0/bfd/config: tmake-a29k-coff Only in gdb-3.98/bfd/config: tmake-coff-a29k Only in gdb-4.0/bfd/config: tmake-dec3100 Only in gdb-4.0/bfd/config: tmake-hp300bsd Only in gdb-3.98/bfd/config: tmake-i386 Only in gdb-4.0/bfd/config: tmake-i386-aout Only in gdb-4.0/bfd/config: tmake-i386-coff Only in gdb-3.98/bfd/config: tmake-i960 Only in gdb-4.0/bfd/config: tmake-i960-bout Only in gdb-4.0/bfd/config: tmake-i960-coff Only in gdb-4.0/bfd/config: tmake-m68k-aout Only in gdb-4.0/bfd/config: tmake-m68k-coff Only in gdb-4.0/bfd/config: tmake-m88k-aout Only in gdb-4.0/bfd/config: tmake-m88k-coff Only in gdb-4.0/bfd/config: tmake-sparc-aout Only in gdb-3.98/bfd/config: tmake-sun3 Only in gdb-3.98/bfd/config: tmake-sun4 Only in gdb-4.0/bfd: config.sub diff -r gdb-3.98/bfd/configure gdb-4.0/bfd/configure 27c27 < # $Id: configure,v 1.22 1991/07/20 01:22:30 rich Exp $ --- > # $Id: configure,v 1.31 1991/08/23 04:50:57 rich Exp $ 57a58 > recursing= 62a64 > commontargets= 70c72 < -ansi | +ansi) --- > -ansi | +a*) 71a74 > clib=clib 76,79d78 < -forcesubdirs | +forcesubdirs | +forcesubdir | +forcesubdi | +forcesubd \ < | +forcesub | +forcesu | +forces | +force | +forc | +for | +fo | +f) < forcesubdirs=${arg} < ;; 85c84 < -gas | +gas | +ga | +g) --- > -gas | +g*) 88c87 < -help | +h | +help) --- > -help | +h*) 91c90 < -nfp | +nfp | +nf | +n) --- > -nfp | +nf*) 94c93 < -norecurse | +norecurse) --- > -norecurse | +no*) 97c96,99 < -rm | +rm) --- > -recursing) > recursing=true > ;; > -rm | +r*) 103c105,108 < -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*) --- > -subdirs | +f* | +su*) > subdirs=${arg} > ;; > -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=*) 105c110 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 111c116 < -template=* | +template=*) --- > -template=* | +template=* | +templat=* | +templa=* | +templ=* | +temp=* | +tem=* | +te=*) 114c119 < +verbose | +verbos | +verbo | +verb | +ver | +ve | +v) --- > -v | -verbose | +v*) 125c130 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 136d140 < echo targets=\"${targets}\" 145c149 < echo) 2>&1 --- > echo) 1>&2 156c160 < echo " +forcesubdirs configure in subdirectories. [in source directories]" ; --- > echo " +subdirs configure in subdirectories. [in source directories]" ; 167c171 < echo "Asking for more than one \"+target\" implies \"+forcesubdirs\". Any other" ; --- > echo "Asking for more than one \"+target\" implies \"+subdirs\". Any other" ; 191c195 < echo "Can't find template ${template}." --- > echo '***' "Can't find template ${template}." 1>&2 212c216 < echo `pwd`/configure.in has no "per-host:" line. --- > echo '***' `pwd`/configure.in has no "per-host:" line. 1>&2 217c221 < echo `pwd`/configure.in has no "per-target:" line. --- > echo '***' `pwd`/configure.in has no "per-target:" line. 1>&2 250c254,268 < echo Rebuilt configure in `pwd` --- > > if [ -n "${verbose}" ] ; then > echo Rebuilt configure in `pwd` > fi > > # Now update config.sub from the template directory. > if echo "$template" | grep -s 'configure$' ; then > cp `echo "$template" | sed s/configure$/config.sub/` ./config.sub.new > # mv config.sub config.sub.old > mv config.sub.new config.sub > > if [ -n "${verbose}" ] ; then > echo Rebuilt config.sub in `pwd` > fi > fi 276c294 < echo No configure script in `pwd`/$i --- > echo Warning: No configure script in `pwd`/$i 279c297,299 < echo Warning: directory $i is missing. --- > if [ -n "${verbose}" ] ; then > echo Warning: directory $i is missing. > fi 290c310 < echo srctrigger not set in configure.in. `pwd` not configured. --- > echo Warning: srctrigger not set in configure.in. `pwd` not configured. 300a321,325 > result=`/bin/sh ./config.sub ${host}` > host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > host=${host_cpu}-${host_vendor}-${host_os} 305c330,371 < ## end of per-host part. --- > if [ "${host_os}" = "posix" ] ; then > bfd_host=posix > else > case "${host_cpu}" in > rs6000) bfd_host=aix ;; > mips) > case "${host_vendor}" in > dec) bfd_host=dec3100 ;; > esac > ;; > m88k) > case "${host_vendor}" in > *) > case "${host_os}" in > dgux) bfd_host=dgux ;; > esac > ;; > esac > ;; > > m68k) > case "${host_vendor}" in > hp) > case "${host_os}" in > hpux) bfd_host=hp9000 ;; > bsd) bfd_host=hp300bsd ;; > esac > ;; > sony) bfd_host=news ;; > sun) bfd_host=sun3 ;; > esac > ;; > > i386) > case "${host_vendor}" in > *) > case "${host_os}" in > sysv) bfd_host=i386v ;; > esac > ;; > esac > ;; 306a373,377 > sparc) > case "${host_vendor}" in > sun) bfd_host=sun4 ;; > esac > ;; 308c379,382 < for target in ${targets} ; do --- > rtpc) bfd_host=rtbsd ;; > tahoe | vax) bfd_host=${host_cpu} ;; > esac > fi 310,312c384,389 < if [ -n "${verbose}" ] ; then < echo " target=\"${target}\"" < fi --- > if [ ! -f config/hmake-${bfd_host} ] ; then > echo '***' BFD does not support host ${host}: no file config/hmake-${bfd_host} > exit 1 > fi > > host_makefile_frag=config/hmake-${bfd_host} 313a391,399 > ## end of per-host part. > > for target in ${targets} ; do > > result=`/bin/sh ./config.sub ${target}` > target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > target=${target_cpu}-${target_vendor}-${target_os} 317a404,453 > case "${target_vendor}" in > aout | coff | bout) bfd_target=${target_cpu}-${target_vendor} ;; > sony) bfd_target=news ;; > intel) bfd_target=${target_cpu}-coff ;; > wrs) > case "${target_cpu}" in > i960) bfd_target=i960-bout ;; > m68k) bfd_target=m68k-aout ;; > esac > ;; > sun) > case "${target_cpu}" in > m68k) bfd_target=m68k-aout ;; > sparc) bfd_target=sparc-aout ;; > esac > ;; > dec) > case "${target_cpu}" in > mips) bfd_target=dec3100 ;; > esac > ;; > hp) > case "${target_cpu}" in > m68k) > case "${target_os}" in > hpux) bfd_target=hp9000 ;; > bsd) bfd_target=hp300bsd ;; > esac > ;; > esac > ;; > none) > case "${target_cpu}" in > i386) bfd_target=i386-coff ;; > esac > ;; > *) > case "${target_cpu}" in > tahoe | vax) bfd_target=${target_cpu} ;; > esac > ;; > esac > > if [ ! -f config/tmake-${bfd_target} ] ; then > echo '***' BFD does not support target ${target}: no file config/tmake-${bfd_target} > exit 1 > fi > > target_makefile_frag=config/tmake-${bfd_target} > 327c463 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 331c467 < if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then --- > if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target- | grep -v Target-independent`" ] ; then 341c477 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 344c480 < echo "${Makefile} already exists in source directory. `pwd` not configured." --- > echo '***' "${Makefile} already exists in source directory. `pwd` not configured." 1>&2 351c487,498 < if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi --- > if [ ! -d ${targetsubdir} ] ; then > if [ -z "${commontargets}" ] ; then > mkdir ${targetsubdir} > else > if [ ! -d Target-independent ] ; then > mkdir Target-independent > fi > > ${symbolic_link} Target-independent ${targetsubdir} > fi # if target independent > fi # if no target dir yet > 358c505 < echo "Configured subdirs exist. `pwd` not configured." --- > echo '***' "Configured subdirs exist. `pwd` not configured." 1>&2 374c521 < echo "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 376c523 < echo "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 379c526 < echo \(At least ${srctrigger} is missing.\) 1>&2 --- > echo '***' \(At least ${srctrigger} is missing.\) 1>&2 393,394c540,541 < echo "${progname}: cannot create a link \"${link}\"," 1>&2 < echo "since the file \"${file}\" does not exist." 1>&2 --- > echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 > echo '***' "since the file \"${file}\" does not exist." 1>&2 404c551 < echo "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 --- > echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 407c554,557 < echo "Linked \"${link}\" to \"${srcdir}/${file}\"." --- > > if [ -n "${verbose}" ] ; then > echo "Linked \"${link}\" to \"${srcdir}/${file}\"." > fi 443c593 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 500c650,652 < echo "Created \"${Makefile}\"" in `pwd`${andusing}. --- > if [ -n "${verbose}" -o -z "${recursing}" ] ; then > echo "Created \"${Makefile}\"" in `pwd`${andusing}. > fi 519,538d670 < done # for each target < < # # Now build a Makefile for this host. < # if [ -n "${forcesubdirs}" ] ; then < # cd ${hostsubdir} < # cat > GNUmakefile << E!O!F < ## Makefile generated by configure for host ${host}. < # < #%: < # for i in ${targets} ; do \ < # $(MAKE) -C Target-\$i \$@ < # < #all clean stage1 stage2 stage3 stage4etags tags TAGS < #E!O!F < # fi < done # for each host < < # If there are subdirectories, then recurse. < < if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi 540,586c672,691 < # configdirs is not null < for configdir in ${configdirs} ; do < echo Configuring ${configdir}... < specifics= < commons= < < if [ -n "${defaulttargets}" ] ; then < for host in ${hosts} ; do < if [ -d ${configdir}.${host} ] ; then < newspecifics="${specifics} ${host}" < specifics=${newspecifics} < else < newcommons="${commons} ${host}" < commons=${newcommons} < fi # if target specific < done # for each host < < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${commons} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any common hosts < < if [ -n "${specifics}" ] ; then < for host in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${host}... < (cd ${configdir}.${host} ; < ./configure ${host} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < done # for host in specifics < fi # if there are any specifics < else < < for target in ${targets} ; do < if [ -d ${configdir}.${target} ] ; then < newspecifics="${specifics} ${target}" < specifics=${newspecifics} < else < newcommons="${commons} +target=${target}" < commons=${newcommons} < fi < < done # check for target specific dir override --- > # If there are subdirectories, then recurse. > if [ -z "${norecurse}" -a -n "${configdirs}" ] ; then > for configdir in ${configdirs} ; do > if [ -n "${verbose}" ] ; then > echo Configuring ${configdir}... > fi > > if [ -d ${configdir} ] ; then > (cd ${configdir} ; > ./configure -recursing ${host} +target=${target} \ > ${verbose} ${subdirs} ${removing} +destdir=${destdir}) \ > | sed 's/^/ /' > else > if [ -n "${verbose}" ] ; then > echo Warning: directory \"${configdir}\" is missing. > fi > fi > done > fi > done # for each target 588,591c693,702 < if [ -n "${verbose}" ] ; then < echo " "commons=\"${commons}\" < echo " "specifics=\"${specifics}\" < fi # if verbose --- > # Now build a Makefile for this host. > if [ -n "${subdirs}" -a ! -n "${removing}" ] ; then > cd ${hostsubdir} > cat > GNUmakefile << E!O!F > # Makefile generated by configure for host ${host}. > > ALL := $(shell ls -d Target-*) > > %: > $(foreach subdir,$(ALL),$(MAKE) -C $(subdir) \$@ &&) true 593,614c704,708 < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < ${commons} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any commons < < if [ -n "${specifics}" ] ; then < for target in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${target}... < (cd ${configdir}.${target} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < "+target=${target}" +destdir=${destdir}) \ < | sed 's/^/ /' < done < fi # if any specifics < fi # not default targets < done --- > all: > E!O!F > cd .. > fi > done # for each host 619a714,744 > # Revision 1.31 1991/08/23 04:50:57 rich > # Minor config polish. > # > # Revision 1.22 1991/08/23 03:31:43 rich > # Minor polish & config mapping. > # > # Revision 1.30 1991/08/22 07:15:51 rich > # Three part names, etc. > # > # Revision 1.29 1991/08/20 04:56:51 rich > # revisiting error messages > # > # Revision 1.28 1991/08/16 19:22:17 rich > # This is the commontargets change and should be considered > # experimental. > # > # Revision 1.27 1991/08/08 01:14:13 rich > # allow +f to stand in for +subdirs > # > # Revision 1.26 1991/08/07 19:21:32 rich > # +forcesubdirs -> +subdirs > # > # Revision 1.25 1991/08/07 07:05:30 rich > # Added make. > # > # Revision 1.24 1991/08/06 19:26:01 rich > # revised option parsing. > # > # Revision 1.23 1991/08/06 19:12:32 rich > # Host-level GNUmakefiles. > # diff -r gdb-3.98/bfd/configure.in gdb-4.0/bfd/configure.in 10a11,71 > if [ "${host_os}" = "posix" ] ; then > bfd_host=posix > else > case "${host_cpu}" in > rs6000) bfd_host=aix ;; > mips) > case "${host_vendor}" in > dec) bfd_host=dec3100 ;; > esac > ;; > m88k) > case "${host_vendor}" in > *) > case "${host_os}" in > dgux) bfd_host=dgux ;; > esac > ;; > esac > ;; > > m68k) > case "${host_vendor}" in > hp) > case "${host_os}" in > hpux) bfd_host=hp9000 ;; > bsd) bfd_host=hp300bsd ;; > esac > ;; > sony) bfd_host=news ;; > sun) bfd_host=sun3 ;; > esac > ;; > > i386) > case "${host_vendor}" in > *) > case "${host_os}" in > sysv) bfd_host=i386v ;; > esac > ;; > esac > ;; > > sparc) > case "${host_vendor}" in > sun) bfd_host=sun4 ;; > esac > ;; > > rtpc) bfd_host=rtbsd ;; > tahoe | vax) bfd_host=${host_cpu} ;; > esac > fi > > if [ ! -f config/hmake-${bfd_host} ] ; then > echo '***' BFD does not support host ${host}: no file config/hmake-${bfd_host} > exit 1 > fi > > host_makefile_frag=config/hmake-${bfd_host} > 11a73,122 > > case "${target_vendor}" in > aout | coff | bout) bfd_target=${target_cpu}-${target_vendor} ;; > sony) bfd_target=news ;; > intel) bfd_target=${target_cpu}-coff ;; > wrs) > case "${target_cpu}" in > i960) bfd_target=i960-bout ;; > m68k) bfd_target=m68k-aout ;; > esac > ;; > sun) > case "${target_cpu}" in > m68k) bfd_target=m68k-aout ;; > sparc) bfd_target=sparc-aout ;; > esac > ;; > dec) > case "${target_cpu}" in > mips) bfd_target=dec3100 ;; > esac > ;; > hp) > case "${target_cpu}" in > m68k) > case "${target_os}" in > hpux) bfd_target=hp9000 ;; > bsd) bfd_target=hp300bsd ;; > esac > ;; > esac > ;; > none) > case "${target_cpu}" in > i386) bfd_target=i386-coff ;; > esac > ;; > *) > case "${target_cpu}" in > tahoe | vax) bfd_target=${target_cpu} ;; > esac > ;; > esac > > if [ ! -f config/tmake-${bfd_target} ] ; then > echo '***' BFD does not support target ${target}: no file config/tmake-${bfd_target} > exit 1 > fi > > target_makefile_frag=config/tmake-${bfd_target} diff -r gdb-3.98/bfd/core.c gdb-4.0/bfd/core.c 52c52 < the file the bfd is attatched to. --- > the file the BFD is attached to. 69,70c69,70 < Returns @code{true} if the core file attatched to @var{core_bfd} was < generated by a run of the executable file attatched to @var{exec_bfd}, --- > Returns @code{true} if the core file attached to @var{core_bfd} was > generated by a run of the executable file attached to @var{exec_bfd}, Only in gdb-4.0/bfd: doc diff -r gdb-3.98/bfd/ecoff.c gdb-4.0/bfd/ecoff.c 28a29 > #include "trad-core.h" 37a39,48 > #if HOST_SYS==DEC3100_SYS > /* If compiling on host, implement traditional Unix core files with upage */ > #undef coff_core_file_failing_command > #define coff_core_file_failing_command trad_unix_core_file_failing_command > #undef coff_core_file_failing_signal > #define coff_core_file_failing_signal trad_unix_core_file_failing_signal > #undef coff_core_file_matches_executable_p > #define coff_core_file_matches_executable_p trad_unix_core_file_matches_executable_p > #endif > 44c55 < #define coff_swap_aux_in (PROTO(void,(*),(bfd *,PTR,PTR))) bfd_void --- > #define coff_swap_aux_in (PROTO(void,(*),(bfd *,PTR,int,int,PTR))) bfd_void 93c104,110 < bfd_generic_archive_p, _bfd_dummy_target}, --- > bfd_generic_archive_p, > #if HOST_SYS==DEC3100_SYS > trad_unix_core_file_p /* On host, this works */ > #else > _bfd_dummy_target /* Other folks get no core support */ > #endif > }, diff -r gdb-3.98/bfd/format.c gdb-4.0/bfd/format.c 23,24c23,24 < A format is a @code{bfd} concept of high level file contents. The < formats supported by @code{bfd} are: --- > A format is a BFD concept of high level file contents. The > formats supported by BFD are: 27c27 < The bfd may contain data, symbols, relocations and debug info. --- > The BFD may contain data, symbols, relocations and debug info. 29c29 < The bfd contains other bfds and an optional index. --- > The BFD contains other BFDs and an optional index. 31c31 < The bfd contains the result of an executable core dump. --- > The BFD contains the result of an executable core dump. 45,46c45,46 < This routine is supplied a bfd and a format. It attempts to verify if < the file attatched to the bfd is indeed compatible with the format --- > This routine is supplied a BFD and a format. It attempts to verify if > the file attached to the BFD is indeed compatible with the format 50c50 < If the bfd has been set to a specific @var{target} before the call, --- > If the BFD has been set to a specific @var{target} before the call, 154,156c154,156 < This function sets the file format of the supplied bfd to the format < requested. If the target set in the bfd does not support the format < requested, the format is illegal or the bfd is not open for writing --- > This function sets the file format of the supplied BFD to the format > requested. If the target set in the BFD does not support the format > requested, the format is illegal or the BFD is not open for writing diff -r gdb-3.98/bfd/host-aout.c gdb-4.0/bfd/host-aout.c 1d0 < #if 0 32c31,33 < void (*bfd_error_trap)(); --- > /*======== This next section is stolen from ../include/a.out.gnu.h > ======== for all the losing Unix systems that don't provide these > ======== macros. 34c35,61 < static bfd_target *host_aout_callback (); --- > When porting to a new system, you must supply: > > HOST_PAGE_SIZE > HOST_SEGMENT_SIZE > HOST_MACHINE_ARCH (optional) > HOST_MACHINE_MACHINE (optional) > HOST_TEXT_START_ADDR > HOST_STACK_END_ADDR > > in the ../include/h-systemname.h file. */ > > #define PAGE_SIZE HOST_PAGE_SIZE > #define SEGMENT_SIZE HOST_SEGMENT_SIZE > #define TEXT_START_ADDR HOST_TEXT_START_ADDR > #define STACK_END_ADDR HOST_STACK_END_ADDR > > /*======== Stolen section begins below. =================================*/ > > #define a_info a_magic /* Old traditional Unix */ > > #define N_MAGIC(exec) ((exec).a_info & 0xffff) > #define N_SET_MAGIC(exec, magic) \ > ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff))) > > /* Virtual Address of text segment from the a.out file. For OMAGIC, > (almost always "unlinked .o's" these days), should be zero. > For linked files, should reflect reality if we know it. */ 35a63,121 > #ifndef N_TXTADDR > #define N_TXTADDR(x) (N_MAGIC(x)==OMAGIC? 0 : TEXT_START_ADDR) > #endif > > #ifndef N_BADMAG > #define N_BADMAG(x) (N_MAGIC(x) != OMAGIC \ > && N_MAGIC(x) != NMAGIC \ > && N_MAGIC(x) != ZMAGIC) > #endif > > /* This complexity is for encapsulated COFF support */ > #ifndef _N_HDROFF > #define _N_HDROFF(x) (SEGMENT_SIZE - sizeof (struct exec)) > #endif > > #ifndef N_TXTOFF > #define N_TXTOFF(x) (N_MAGIC(x) == ZMAGIC ? \ > _N_HDROFF((x)) + sizeof (struct exec) : \ > sizeof (struct exec)) > #endif > > > #ifndef N_DATOFF > #define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text ) > #endif > > #ifndef N_TRELOFF > #define N_TRELOFF(x) ( N_DATOFF(x) + (x).a_data ) > #endif > > #ifndef N_DRELOFF > #define N_DRELOFF(x) ( N_TRELOFF(x) + (x).a_trsize ) > #endif > > #ifndef N_SYMOFF > #define N_SYMOFF(x) ( N_DRELOFF(x) + (x).a_drsize ) > #endif > > #ifndef N_STROFF > #define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms ) > #endif > > /* Address of text segment in memory after it is loaded. */ > #ifndef N_TXTADDR > #define N_TXTADDR(x) 0 > #endif > > #ifndef N_DATADDR > #define N_DATADDR(x) \ > (N_MAGIC(x)==OMAGIC? (N_TXTADDR(x)+(x).a_text) \ > : (SEGMENT_SIZE + ((N_TXTADDR(x)+(x).a_text-1) & ~(SEGMENT_SIZE-1)))) > #endif > > /* Address of bss segment in memory after it is loaded. */ > #define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data) > > > static bfd_target *NAME(host_aout,callback) (); > 40,41c126,127 < host_aout_object_p (abfd) < bfd *abfd; --- > DEFUN(NAME(host_aout,object_p), (abfd), > bfd *abfd) 51c137 < magic = bfd_h_getlong (abfd, magicbuf); --- > magic = bfd_h_get_32 (abfd, magicbuf); 55c141 < return some_aout_object_p (abfd, host_aout_callback); --- > return NAME(aout,some_aout_object_p) (abfd, NAME(host_aout,callback)); 59c145,146 < This routine is called from some_aout_object_p just before it returns. */ --- > This routine is called from NAME(some_aout_object_p) just before it returns. > */ 62,63c149,150 < host_aout_callback (abfd) < bfd *abfd; --- > DEFUN(NAME(host_aout,callback), (abfd), > bfd *abfd) 65c152,158 < struct exec *execp = exec_hdr (abfd); --- > /* exec_hdr (abfd), a "struct internal_exec *", is just an abstraction, > as far as the BFD a.out layer cares. We use it as a "struct exec *". > This routine moves any data from the exec header, > which is needed by the BFD code, out to places known to BFD. This > allows the rest of the BFD code to not know or care about the structure > of exec_hdr (abfd). */ > struct exec *execp = (struct exec *)exec_hdr (abfd); 90a184 > obj_reloc_entry_size (abfd) = sizeof (struct relocation_info); 96,97c190,191 < host_aout_mkobject (abfd) < bfd *abfd; --- > DEFUN(NAME(host_aout,mkobject), (abfd), > bfd *abfd) 99c193,198 < char *rawptr; --- > /* This struct is just for allocating two things with one zalloc, so > they will be freed together, without violating alignment constraints. */ > struct aout_exec { > struct aoutdata aoutdata; > struct exec exec; > } *rawptr; 104c203 < rawptr = bfd_zalloc (abfd, sizeof (struct aoutdata) + sizeof (struct exec)); --- > rawptr = (struct aout_exec *)bfd_zalloc (abfd, sizeof (struct aout_exec)); 111,112c210,213 < set_tdata (abfd, (struct aoutdata *) rawptr); < exec_hdr (abfd) = (struct exec *) (rawptr + sizeof (struct aoutdata)); --- > set_tdata (abfd, &rawptr->aoutdata); > /* exec_hdr (abfd), a "struct internal_exec *", is just an abstraction, > as far as the BFD a.out layer cares. We use it as a "struct exec *". */ > exec_hdr (abfd) = (struct internal_exec *) &rawptr->exec; 131,132c232,233 < host_aout_write_object_contents (abfd) < bfd *abfd; --- > DEFUN(NAME(host_aout,write_object_contents), (abfd), > bfd *abfd) 135c236,237 < #define EXEC_BYTES_SIZE sizeof (struct exec) --- > #define EXEC_BYTES_SIZE (sizeof (struct exec)) > #define EXTERNAL_LIST_SIZE (sizeof (struct nlist)) 138c240 < struct exec *execp = exec_hdr (abfd); --- > struct exec *execp = (struct exec *)exec_hdr (abfd); 142,204c244 < < N_SET_MAGIC (*execp, OMAGIC); < if (abfd->flags & D_PAGED) { < /* This is not strictly true, but will probably do for the default < case. FIXME. < */ < < execp->a_text = obj_textsec (abfd)->size + EXEC_BYTES_SIZE; < N_SET_MAGIC (*execp, ZMAGIC); < } else if (abfd->flags & WP_TEXT) { < N_SET_MAGIC (*execp, NMAGIC); < } < N_SET_FLAGS (*execp, 0x1); /* copied from ld.c; who the hell knows? */ < #ifndef PAGE_SIZE < #define PAGE_SIZE 2048 < #endif < if (abfd->flags & D_PAGED) < { < data_pad = ((obj_datasec(abfd)->size + PAGE_SIZE -1) < & (- PAGE_SIZE)) - obj_datasec(abfd)->size; < < if (data_pad > obj_bsssec(abfd)->size) < execp->a_bss = 0; < else < execp->a_bss = obj_bsssec(abfd)->size - data_pad; < execp->a_data = obj_datasec(abfd)->size + data_pad; < < } < else { < execp->a_data = obj_datasec (abfd)->size; < execp->a_bss = obj_bsssec (abfd)->size; < } < < execp->a_syms = bfd_get_symcount (abfd) * sizeof (struct nlist); < execp->a_entry = bfd_get_start_address (abfd); < < execp->a_trsize = ((obj_textsec (abfd)->reloc_count) * < obj_reloc_entry_size (abfd)); < < execp->a_drsize = ((obj_datasec (abfd)->reloc_count) * < obj_reloc_entry_size (abfd)); < < bfd_aout_swap_exec_header_out (abfd, execp, exec_bytes); < < bfd_seek (abfd, 0L, false); < bfd_write ((PTR) exec_bytes, 1, EXEC_BYTES_SIZE, abfd); < < /* Now write out reloc info, followed by syms and strings */ < < if (bfd_get_symcount (abfd) != 0) < { < bfd_seek (abfd, < (long)(N_SYMOFF(*execp)), false); < < aout_write_syms (abfd); < < bfd_seek (abfd, (long)(N_TRELOFF(*execp)), false); < < if (!aout_squirt_out_relocs (abfd, obj_textsec (abfd))) return false; < bfd_seek (abfd, (long)(N_DRELOFF(*execp)), false); < < if (!aout_squirt_out_relocs (abfd, obj_datasec (abfd))) return false; < } --- > WRITE_HEADERS (abfd, execp); 209,220c249,282 < #define aout_openr_next_archived_file bfd_generic_openr_next_archived_file < #define aout_generic_stat_arch_elt bfd_generic_stat_arch_elt < #define aout_slurp_armap bfd_slurp_bsd_armap < #define aout_slurp_extended_name_table bfd_true < #define aout_write_armap bsd_write_armap < #define aout_truncate_arname bfd_bsd_truncate_arname < < /* We use traditional Unix core file format. */ < #define aout_core_file_failing_command trad_unix_core_file_failing_command < #define aout_core_file_failing_signal trad_unix_core_file_failing_signal < #define aout_core_file_matches_executable_p \ < trad_unix_core_file_matches_executable_p --- > #define aout_32_openr_next_archived_file bfd_generic_openr_next_archived_file > #define aout_32_generic_stat_arch_elt bfd_generic_stat_arch_elt > #define aout_32_slurp_armap bfd_slurp_bsd_armap > #define aout_32_slurp_extended_name_table bfd_true > #define aout_32_write_armap bsd_write_armap > #define aout_32_truncate_arname bfd_bsd_truncate_arname > /* #define aout_32_machine_type sunos_machine_type */ > > /* Traditional Unix core files with upage */ > #define aout_32_core_file_failing_command trad_unix_core_file_failing_command > #define aout_32_core_file_failing_signal trad_unix_core_file_failing_signal > #define aout_32_core_file_matches_executable_p trad_unix_core_file_matches_executable_p > > > #define aout_64_openr_next_archived_file bfd_generic_openr_next_archived_file > #define aout_64_generic_stat_arch_elt bfd_generic_stat_arch_elt > #define aout_64_slurp_armap bfd_slurp_bsd_armap > #define aout_64_slurp_extended_name_table bfd_true > #define aout_64_write_armap bsd_write_armap > #define aout_64_truncate_arname bfd_bsd_truncate_arname > /* #define aout_64_machine_type sunos_machine_type */ > > #define aout_64_core_file_failing_command trad_unix_core_file_failing_command > #define aout_64_core_file_failing_signal trad_unix_core_file_failing_signal > #define aout_64_core_file_matches_executable_p trad_unix_core_file_matches_executable_p > > #define aout_64_bfd_debug_info_start bfd_void > #define aout_64_bfd_debug_info_end bfd_void > #define aout_64_bfd_debug_info_accumulate bfd_void > > #define aout_32_bfd_debug_info_start bfd_void > #define aout_32_bfd_debug_info_end bfd_void > #define aout_32_bfd_debug_info_accumulate (PROTO(void,(*),(bfd*, struct sec *))) bfd_void > 222,223c284,286 < /* We replace this function */ < #define aout_write_object_contents host_aout_write_object_contents --- > /* We implement these routines ourselves, rather than using the generic > a.out versions. */ > #define aout_write_object_contents host_write_object_contents 226,240c289,304 < { < "a.out-host-big", /* name */ < bfd_target_aout_flavour_enum, < true, /* target byte order */ < true, /* target headers byte order */ < (HAS_RELOC | EXEC_P | /* object flags */ < HAS_LINENO | HAS_DEBUG | < HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), < (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ < ' ', /* ar_pad_char */ < 16, /* ar_max_namelen */ < _do_getb64, _do_putblong, _do_getbshort, _do_putbshort, /* data */ < _do_getb64, _do_putblong, _do_getbshort, _do_putbshort, /* hdrs */ < < {_bfd_dummy_target, host_aout_object_p, --- > { > "a.out-host-big", > bfd_target_aout_flavour_enum, > true, /* target byte order */ > true, /* target headers byte order */ > (HAS_RELOC | EXEC_P | /* object flags */ > HAS_LINENO | HAS_DEBUG | > HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), > (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ > ' ', /* ar_pad_char */ > 16, /* ar_max_namelen */ > 3, /* minimum alignment power */ > _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* data */ > _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs */ > > {_bfd_dummy_target, NAME(host_aout,object_p), 242c306 < {bfd_false, host_aout_mkobject, --- > {bfd_false, NAME(host_aout,mkobject), 244c308 < {bfd_false, aout_write_object_contents, /* bfd_write_contents */ --- > {bfd_false, NAME(host_aout,write_object_contents), /* bfd_write_contents */ 246,247c310,311 < < JUMP_TABLE(aout) --- > > JUMP_TABLE(JNAME(aout)) 251,265c315,330 < { < "a.out-host-little", /* name */ < bfd_target_aout_flavour_enum, < false, /* target byte order */ < false, /* target headers byte order */ < (HAS_RELOC | EXEC_P | /* object flags */ < HAS_LINENO | HAS_DEBUG | < HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), < (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ < ' ', /* ar_pad_char */ < 16, /* ar_max_namelen */ < _do_getllong, _do_putllong, _do_getlshort, _do_putlshort, /* data */ < _do_getllong, _do_putllong, _do_getlshort, _do_putlshort, /* hdrs */ < < {_bfd_dummy_target, host_aout_object_p, --- > { > "a.out-host-little", > bfd_target_aout_flavour_enum, > false, /* target byte order */ > false, /* target headers byte order */ > (HAS_RELOC | EXEC_P | /* object flags */ > HAS_LINENO | HAS_DEBUG | > HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), > (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ > ' ', /* ar_pad_char */ > 16, /* ar_max_namelen */ > 3, /* minimum alignment power */ > _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* data */ > _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs */ > > {_bfd_dummy_target, NAME(host_aout,object_p), 267c332 < {bfd_false, host_aout_mkobject, --- > {bfd_false, NAME(host_aout,mkobject), 269c334 < {bfd_false, aout_write_object_contents, /* bfd_write_contents */ --- > {bfd_false, NAME(host_aout,write_object_contents), /* bfd_write_contents */ 271,272c336,337 < < JUMP_TABLE(aout) --- > > JUMP_TABLE(JNAME(aout)) 274d338 < #endif diff -r gdb-3.98/bfd/ieee.c gdb-4.0/bfd/ieee.c 1379c1379 < /* Work out which symbol to attatch it this reloc to */ --- > /* Work out which symbol to attach it this reloc to */ diff -r gdb-3.98/bfd/libaout.h gdb-4.0/bfd/libaout.h 25c25 < /* $Id: libaout.h,v 1.10 1991/07/31 16:57:44 gnu Exp $ */ --- > /* $Id: libaout.h,v 1.11 1991/08/13 18:49:08 steve Exp $ */ 178a179,182 > if ((obj_textsec(abfd)->vma & 0xff )== EXEC_BYTES_SIZE) \ > abfd->flags |= D_PAGED; \ > else \ > abfd->flags &= ~D_PAGED; \ Only in gdb-4.0/bfd: libbfd-in.h diff -r gdb-3.98/bfd/libbfd.c gdb-4.0/bfd/libbfd.c 21c21 < /* $Id: libbfd.c,v 1.18 1991/07/31 16:57:45 gnu Exp $ */ --- > /* $Id: libbfd.c,v 1.19 1991/08/19 20:52:31 pesch Exp $ */ 132c132 < This allows someone to play with the iostream behind bfd's back. --- > This allows someone to play with the iostream behind BFD's back. 173c173 < /* For the time being, a bfd may not seek to it's end. The --- > /* For the time being, a BFD may not seek to it's end. The 276c276 < of the bfd and mangled accordingly. The mangling performs any --- > of the BFD and mangled accordingly. The mangling performs any diff -r gdb-3.98/bfd/libbfd.h gdb-4.0/bfd/libbfd.h 22c22 < /* $Id: libbfd.h,v 1.15 1991/07/31 16:57:46 gnu Exp $ */ --- > /* $Id: libbfd.h,v 1.19 1991/08/21 21:37:36 pesch Exp $ */ 182c182,184 < /* Return the log base 2 of the value supplied, rounded up. eg an arg --- > /*:libbfd.c*/ > /* *i bfd_log2 > Return the log base 2 of the value supplied, rounded up. eg an arg 185,186c187,194 < PROTO(bfd_vma, bfd_log2,(bfd_vma x)); < /* The maxiumum number of files which the cache will keep open at one --- > PROTO(bfd_vma, bfd_log2,(bfd_vma x)); > > /* > */ > > /*:cache.c*/ > /* BFD_CACHE_MAX_OPEN > The maxiumum number of files which the cache will keep open at one 191,193c199,204 < /* Zero, or a pointer to the topmost bfd on the chain. This is used by the < bfd_cache_lookup() macro in libbfd.h to determine when it can avoid a function < call. --- > /* > > bfd_last_cache > Zero, or a pointer to the topmost BFD on the chain. This is used by > the @code{bfd_cache_lookup} macro in @file{libbfd.h} to determine when > it can avoid a function call. 197,198c208,212 < /* Checks to see if the required bfd is the same as the last one looked < up. If so then it can use the iostream in the bfd with impunity, since --- > /* > > bfd_cache_lookup > Checks to see if the required BFD is the same as the last one looked > up. If so then it can use the iostream in the BFD with impunity, since 206a221 > /* 208,211c223,224 < /* Initialize a BFD by putting it on the cache LRU. < */ < PROTO(void, bfd_cache_init, (bfd *)); < /* Remove the bfd from the cache. If the attatched file is open, then close it too. --- > *i bfd_cache_init > Initialize a BFD by putting it on the cache LRU. 213,214c226,238 < PROTO(void, bfd_cache_close, (bfd *)); < /* Call the OS to open a file for this BFD. Returns the FILE * --- > PROTO(void, bfd_cache_init, (bfd *)); > > /* > > *i bfd_cache_close > Remove the BFD from the cache. If the attached file is open, then close it too. > */ > PROTO(void, bfd_cache_close, (bfd *)); > > /* > > *i bfd_open_file > Call the OS to open a file for this BFD. Returns the FILE * 220,221c244,249 < PROTO(FILE *, bfd_open_file, (bfd *)); < /* Called when the macro @code{bfd_cache_lookup} fails to find a quick --- > PROTO(FILE *, bfd_open_file, (bfd *)); > > /* > > *i bfd_cache_lookup_worker > Called when the macro @code{bfd_cache_lookup} fails to find a quick 226c254,261 < PROTO(FILE *, bfd_cache_lookup_worker, (bfd *)); --- > PROTO(FILE *, bfd_cache_lookup_worker, (bfd *)); > > /* > */ > > > /*:reloc.c*/ > Only in gdb-4.0/bfd: libcoff-in.h diff -r gdb-3.98/bfd/libcoff.h gdb-4.0/bfd/libcoff.h 21c21 < /* $Id: libcoff.h,v 1.11 1991/07/31 16:57:47 gnu Exp $ */ --- > /* $Id: libcoff.h,v 1.15 1991/08/21 21:37:37 pesch Exp $ */ 87c87 < /*THE FOLLOWING*/ --- > /*THE FOLLOWING IS EXTRACTED FROM THE SOURCE*/ 89c89 < /* The hidden information for an asymbol is: --- > /*:coffcode.h*/ 90a91,92 > /* > The hidden information for an asymbol is: 91a94 > 95,97c98,102 < /* Remembers the offset from the first symbol in the file for this < symbol. Generated by @code{coff_renumber_symbols}. < */ --- > /* > Remembers the offset from the first symbol in the file for this > symbol. Generated by @code{coff_renumber_symbols}. > */ > 100,102c105,109 < /* Should the tag field of this symbol be renumbered. < Created by @code{coff_pointerize_aux}. < */ --- > /* > Should the tag field of this symbol be renumbered. > Created by @code{coff_pointerize_aux}. > */ > 105,107c112,116 < /* Should the endidx field of this symbol be renumbered. < Created by @code{coff_pointerize_aux}. < */ --- > /* > Should the endidx field of this symbol be renumbered. > Created by @code{coff_pointerize_aux}. > */ > 110,111c119,122 < /* The container for the symbol structure as read and translated from the file. < */ --- > /* > The container for the symbol structure as read and translated from the file. > */ > 117a129 > /* 119,120c131 < /* Each canonical asymbol really looks like this: < --- > Each canonical asymbol really looks like this: 121a133 > 125,126c137,140 < /* The actual symbol which the rest of bfd works with < */ --- > /* > The actual symbol which the rest of BFD works with > */ > 129,130c143,146 < /* A pointer to the hidden information for this symbol < */ --- > /* > A pointer to the hidden information for this symbol > */ > 133,134c149,152 < /* A pointer to the linenumber information for this symbol < */ --- > /* > A pointer to the linenumber information for this symbol > */ > 136a155,159 > > /* > */ > > diff -r gdb-3.98/bfd/newsos3.c gdb-4.0/bfd/newsos3.c 123c123 < #define newsos_bfd_debug_info_accumulate bfd_void --- > #define newsos_bfd_debug_info_accumulate (PROTO(void,(*),(bfd*, struct sec *))) bfd_void diff -r gdb-3.98/bfd/oasys.c gdb-4.0/bfd/oasys.c 21c21 < /* $Id: oasys.c,v 1.27 1991/07/31 16:57:55 gnu Exp $ */ --- > /* $Id: oasys.c,v 1.29 1991/08/19 23:03:07 pesch Exp $ */ 227c227 < oasys_external_archive_header_type header_ext; --- > oasys_extarchive_header_type header_ext; 285c285 < oasys_external_module_table_type_a_type record_ext; --- > oasys_extmodule_table_type_a_type record_ext; 307c307 < oasys_external_module_table_type_b_type record_ext; --- > oasys_extmodule_table_type_b_type record_ext; 1060c1060 < /* The relent has a section attatched, so it must be section --- > /* The relent has a section attached, so it must be section 1070c1070 < /* If this symbol has a section attatched, then it --- > /* If this symbol has a section attached, then it diff -r gdb-3.98/bfd/opncls.c gdb-4.0/bfd/opncls.c 1c1 < /* opncls.c -- open and close a bfd. --- > /* opncls.c -- open and close a BFD. 21c21 < /* $Id: opncls.c,v 1.20 1991/07/31 16:57:56 gnu Exp $ */ --- > /* $Id: opncls.c,v 1.24 1991/08/21 21:55:01 steve Exp $ */ 26c26 < --- > #include "obstack.h" 33,49d32 < /** Locking < < Locking is loosely controlled by the preprocessor variable < BFD_LOCKS. I say loosely because Unix barely understands locking < -- at least in BSD it doesn't affect programs which don't < explicitly use it! That is to say it's practically useless, though < if everyone uses this library you'll be OK. < < From among the many and varied lock facilities available, (none of < which, of course, knows about any other) we use the fcntl locks, < because they're Posix. < < The reason that bfd_openr and bfd_fdopenr exist, yet only bfd_openw < exists is because of locking. When we do output, we lock the < filename file for output, then open a temporary file which does not < actually get its correct filename until closing time. This is < safest, but requires the asymmetry in read and write entry points. 51,53d33 < Perhaps, since unix has so many different kinds of locking anyway, < we should use the emacs lock scheme?... */ < 105,106c85,86 < Opens the file supplied (using fopen) with the target supplied, it < returns a pointer to the created bfd. --- > Opens the file supplied (using @code{fopen}) with the target supplied, it > returns a pointer to the created BFD. 155c135 < bfd_fdopenr is to bfd_fopenr much like fdopen is to fopen. It opens a bfd on --- > bfd_fdopenr is to bfd_fopenr much like fdopen is to fopen. It opens a BFD on 172,174d151 < #ifdef BFD_LOCKS < struct flock lock, *lockp = &lock; < #endif 181,184d157 < #ifdef BFD_LOCKS < lockp->l_type = F_RDLCK; < if (fcntl (fd, F_SETLKW, lockp) == -1) return NULL; < #endif 199,201d171 < #ifdef BFD_LOCKS < nbfd->lock = (struct flock *) (nbfd + 1); < #endif 223,225d192 < #ifdef BFD_LOCKS < memcpy (nbfd->lock, lockp, sizeof (struct flock)) < #endif 233c200 < Returns a pointer to a freshly-allocated bfd on success, or NULL. --- > Returns a pointer to a freshly-allocated BFD on success, or NULL. 238c205 < Creates a bfd, associated with file @var{filename}, using the file --- > Creates a BFD, associated with file @var{filename}, using the file 279c246 < This function closes a bfd. If the bfd was open for writing, then --- > This function closes a BFD. If the BFD was open for writing, then 284c251 < All memory attatched to the bfd's obstacks is released. --- > All memory attached to the BFD's obstacks is released. 326,327c293,294 < This routine creates a new bfd in the manner of bfd_openw, but without < opening a file. The new bfd takes the target from the target used by --- > This routine creates a new BFD in the manner of @code{bfd_openw}, but without > opening a file. The new BFD takes the target from the target used by 403c370 < bfd. --- > BFD. diff -r gdb-3.98/bfd/reloc.c gdb-4.0/bfd/reloc.c 24c24 < Bfd maintains relocations in much the same was as it maintains --- > BFD maintains relocations in much the same was as it maintains 31c31 < symbols are maintained on a per bfd basis. --- > symbols are maintained on a per BFD basis. 33c33 < All a back end has to do to fit the bfd interface is to create as many --- > All a back end has to do to fit the BFD interface is to create as many 47c47 < *node typedef arelent, Relocations, reloc handling functions, Relocations --- > @node typedef arelent, Relocations, reloc handling functions, Relocations 87c87 < The relocaction was performed, but may not be ok - presently generated --- > The relocation was performed, but may not be ok - presently generated 139c139 < the base of the section the symbol is attatched to and the value of --- > the base of the section the symbol is attached to and the value of 252c252 < describe PIC relocations, but bfd can't to that sort of thing yet. --- > describe PIC relocations, but BFD can't to that sort of thing yet. 266c266 < information that bfd needs to know to tie up a back end's data. --- > information that BFD needs to know to tie up a back end's data. 642a643,644 > > diff -r gdb-3.98/bfd/section.c gdb-4.0/bfd/section.c 23c23 < Sections are supported in bfd in @code{section.c}. --- > Sections are supported in BFD in @code{section.c}. 25,26c25,26 < The raw data contained within a bfd is maintained through the section < abstraction. A single bfd may have any number of sections, and keeps --- > The raw data contained within a BFD is maintained through the section > abstraction. A single BFD may have any number of sections, and keeps 40,41c40,41 < When a bfd is opened for reading, the section structures are created < and attatched to the bfd. --- > When a BFD is opened for reading, the section structures are created > and attached to the BFD. 47,48c47,48 < Sometimes a bfd will contain more than the 'natural' number of < sections. A back end may attatch other sections containing constructor --- > Sometimes a BFD will contain more than the 'natural' number of > sections. A back end may attach other sections containing constructor 50,51c50,51 < the sections attatched to an already open bfd. For example, the linker < creates a supernumary section @code{COMMON} for each input file's bfd --- > the sections attached to an already open BFD. For example, the linker > creates a supernumary section @code{COMMON} for each input file's BFD 65,66c65,66 < To write a new object style bfd, the various sections to be written < have to be created. They are attatched to the bfd in the same way as --- > To write a new object style BFD, the various sections to be written > have to be created. They are attached to the BFD in the same way as 73c73 < The data to be written comes from input sections attatched to the --- > The data to be written comes from input sections attached to the 122c122 < The next section in the list belonging to the bfd, or NULL. --- > The next section in the list belonging to the BFD, or NULL. 174c174 < (eg @code{__CTOR_LIST__}), attatches the symbol to it and builds a --- > (eg @code{__CTOR_LIST__}), attaches the symbol to it and builds a 181a182,190 > The section is a constuctor, and should be placed at the end of the .. > > $#define SEC_CONSTRUCTOR_TEXT 0x1100 > > $#define SEC_CONSTRUCTOR_DATA 0x2100 > > $#define SEC_CONSTRUCTOR_BSS 0x3100 > > 192a202 > 279c289 < The bfd which owns the section. --- > The BFD which owns the section. 315,316c325,326 < This function creates a new empty section called @var{name} and attatches it < to the end of the chain of sections for @var{bfd}. An attempt to --- > This function creates a new empty section called @var{name} and attaches it > to the end of the chain of sections for the BFD supplied. An attempt to 323c333 < If output has already started for this bfd. --- > If output has already started for this BFD. 380c390 < Attempts to set the attributes of the section named in the bfd --- > Attempts to set the attributes of the section named in the BFD 411,412c421,422 < Calls the provided function @var{func} for each section attatched to < the bfd @var{abfd}, passing @var{obj} as an argument. The function --- > Calls the provided function @var{func} for each section attached to > the BFD @var{abfd}, passing @var{obj} as an argument. The function 458c468 < Writing has started to the bfd, so setting the size is invalid --- > Writing has started to the BFD, so setting the size is invalid 485c495 < Sets the contents of the section @var{section} in bfd @var{abfd} to --- > Sets the contents of the section @var{section} in BFD @var{abfd} to 533c543 < This function reads data from @var{section} in bfd @var{abfd} into --- > This function reads data from @var{section} in BFD @var{abfd} into diff -r gdb-3.98/bfd/srec.c gdb-4.0/bfd/srec.c 250c250 < (void) memcpy((PTR)location, (PTR)(section->used_by_bfd) + offset, count); --- > (void) memcpy((PTR)location, (PTR)((char *)(section->used_by_bfd) + offset), count); diff -r gdb-3.98/bfd/syms.c gdb-4.0/bfd/syms.c 23,24c23,24 < *bfd* trys to maintain as much symbol information as it can when it < moves information from file to file. *bfd* passes information to --- > BFD trys to maintain as much symbol information as it can when it > moves information from file to file. BFD passes information to 32c32 < when a *bfd* is read in. On output, the coff back end can reconstruct --- > when a BFD is read in. On output, the coff back end can reconstruct 34c34 < information unique to coff which *bfd* doesn't know or understand. If a --- > information unique to coff which BFD doesn't know or understand. If a 38,39c38,39 < The symbol table of a bfd is not necessarily read in until a < canonicalize request is made. Then the bfd back end fills in a table --- > The symbol table of a BFD is not necessarily read in until a > canonicalize request is made. Then the BFD back end fills in a table 57c57 < There are two stages to reading a symbol table from a bfd; allocating --- > There are two stages to reading a symbol table from a BFD; allocating 83c83 < the bfd, and is freed when the bfd is closed. --- > the BFD, and is freed when the BFD is closed. 87,89c87,89 < Writing of a symbol table is automatic when a bfd open for writing < is closed. The application attatches a vector of pointers to pointers to symbols < to the bfd being written, and fills in the symbol count. The close and --- > Writing of a symbol table is automatic when a BFD open for writing > is closed. The application attaches a vector of pointers to pointers to symbols > to the BFD being written, and fills in the symbol count. The close and 92c92 < an 'owned' symbol; one which has come from another bfd, or one which --- > an 'owned' symbol; one which has come from another BFD, or one which 147c147 < A pointer to the bfd which owns the symbol. This information is --- > A pointer to the BFD which owns the symbol. This information is 209d208 < $#define BSF_WARNING 0x20000 229c228 < This bit is set by the target bfd part to convey this information. --- > This bit is set by the target BFD part to convey this information. 232a232,247 > Signal that the symbol is the label of constructor section. > > $#define BSF_CONSTRUCTOR 0x1000000 > > Signal that the symbol is a warning symbol. If the symbol is a warning > symbol, then the value field (I know this is tacky) will point to the > asymbol which when referenced will cause the warning. > > $#define BSF_WARNING 0x2000000 > > Signal that the symbol is indirect. The value of the symbol is a > pointer to an undefined asymbol which contains the name to use > instead. > > $#define BSF_INDIRECT 0x4000000 > 235c250 < Aointer to the section to which this symbol is relative, or 0 if the --- > A pointer to the section to which this symbol is relative, or 0 if the 263,264c278,279 < @code{asymbols} for all the symbols in the supplied bfd, including a < terminal NULL pointer. If there are no symbols in the bfd, then 0 is --- > @code{asymbols} for all the symbols in the supplied BFD, including a > terminal NULL pointer. If there are no symbols in the BFD, then 0 is 274,275c289,290 < Supplied a bfd and a pointer to an uninitialized vector of pointers. < This reads in the symbols from the bfd, and fills in the table with --- > Supplied a BFD and a pointer to an uninitialized vector of pointers. > This reads in the symbols from the BFD, and fills in the table with 290c305 < output bfd the symbols when closed. --- > output BFD the symbols when closed. 330c345 < fprintf(file," %c%c%c%c%c%c%c", --- > fprintf(file," %c%c%c%c%c%c%c%c%c%c", 336a352,354 > (type & BSF_CONSTRUCTOR) ? 'C' : ' ', > (type & BSF_WARNING) ? 'W' : ' ', > (type & BSF_INDIRECT) ? 'I' : ' ', 343c361 < This function creates a new @code{asymbol} structure for the bfd, and --- > This function creates a new @code{asymbol} structure for the BFD, and diff -r gdb-3.98/bfd/targets.c gdb-4.0/bfd/targets.c 21c21 < /* $Id: targets.c,v 1.23 1991/07/31 16:58:03 gnu Exp $ */ --- > /* $Id: targets.c,v 1.25 1991/08/22 18:27:02 pesch Exp $ */ 30c30 < target back end. All the back end provides to the root part of bfd is --- > target back end. All the back end provides to the root part of BFD is 40c40 < First a bfd is created by calling the internal routine --- > First a BFD is created by calling the internal routine 42c42 < string supplied to @code{bfd_openr} and the new bfd pointer. --- > string supplied to @code{bfd_openr} and the new BFD pointer. 50c50 < the target type. @xref{targets}. --- > the target type. @xref{bfd_target}. 60c60 < @code{bfd_open_file}, and returns the bfd. --- > @code{bfd_open_file}, and returns the BFD. 62c62 < Once the bfd has been opened and the target selected, the file format --- > Once the BFD has been opened and the target selected, the file format 64c64 < the bfd with a suggested format. The routine returns @code{true} when --- > the BFD with a suggested format. The routine returns @code{true} when 88,89c88,89 < vector. They are used in a number of macros further down in bfd.h, and < are also used when calling various routines by hand inside the bfd --- > vector. They are used in a number of macros further down in @file{bfd.h}, and > are also used when calling various routines by hand inside the BFD 96c96 < For operations which index on the bfd format --- > For operations which index on the BFD format 102c102 < "xvec" member of the struct bfd itself points here. Each module --- > "xvec" member of the struct @code{bfd} itself points here. Each module 160c160 < entry points, since they don't take bfd as first arg. Certain other handlers --- > entry points, since they don't take BFD as first arg. Certain other handlers 414,415c414,415 < and "target_defaulted" will be set in the bfd. This causes < bfd_check_format to loop over all the targets to find the one --- > and "target_defaulted" will be set in the BFD. This causes > @code{bfd_check_format} to loop over all the targets to find the one 450c450 < names of all the valid bfd targets. Do not modify the names --- > names of all the valid BFD targets. Do not modify the names diff -r gdb-3.98/bfd/trad-core.c gdb-4.0/bfd/trad-core.c 38d37 < #include 133,134c132,137 < core_datasec (abfd)->vma = TEXT_START_ADDR + (NBPG * u.u_tsize); < core_stacksec (abfd)->vma = STACK_END_ADDR - (NBPG * u.u_ssize); --- > #ifdef HOST_DATA_START_ADDR > core_datasec (abfd)->vma = HOST_DATA_START_ADDR; > #else > core_datasec (abfd)->vma = HOST_TEXT_START_ADDR + (NBPG * u.u_tsize); > #endif > core_stacksec (abfd)->vma = HOST_STACK_END_ADDR - (NBPG * u.u_ssize); Only in gdb-3.98: bfd.mips Only in gdb-4.0: config.sub diff -r gdb-3.98/configure gdb-4.0/configure 27c27 < # $Id: configure,v 1.22 1991/07/20 01:22:30 rich Exp $ --- > # $Id: configure,v 1.31 1991/08/23 04:50:57 rich Exp $ 57a58 > recursing= 62a64 > commontargets= 70c72 < -ansi | +ansi) --- > -ansi | +a*) 71a74 > clib=clib 76,79d78 < -forcesubdirs | +forcesubdirs | +forcesubdir | +forcesubdi | +forcesubd \ < | +forcesub | +forcesu | +forces | +force | +forc | +for | +fo | +f) < forcesubdirs=${arg} < ;; 85c84 < -gas | +gas | +ga | +g) --- > -gas | +g*) 88c87 < -help | +h | +help) --- > -help | +h*) 91c90 < -nfp | +nfp | +nf | +n) --- > -nfp | +nf*) 94c93 < -norecurse | +norecurse) --- > -norecurse | +no*) 97c96,99 < -rm | +rm) --- > -recursing) > recursing=true > ;; > -rm | +r*) 103c105,108 < -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*) --- > -subdirs | +f* | +su*) > subdirs=${arg} > ;; > -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=*) 105c110 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 111c116 < -template=* | +template=*) --- > -template=* | +template=* | +templat=* | +templa=* | +templ=* | +temp=* | +tem=* | +te=*) 114c119 < +verbose | +verbos | +verbo | +verb | +ver | +ve | +v) --- > -v | -verbose | +v*) 125c130 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 136d140 < echo targets=\"${targets}\" 145c149 < echo) 2>&1 --- > echo) 1>&2 156c160 < echo " +forcesubdirs configure in subdirectories. [in source directories]" ; --- > echo " +subdirs configure in subdirectories. [in source directories]" ; 167c171 < echo "Asking for more than one \"+target\" implies \"+forcesubdirs\". Any other" ; --- > echo "Asking for more than one \"+target\" implies \"+subdirs\". Any other" ; 183c187 < configdirs="libiberty bfd binutils bison gcc readline gdb ld gas gnulib ${clib} emacs prms " --- > configdirs="libiberty bfd binutils bison gcc readline ld gas gnulib ${clib} gdb make prms " 192c196 < echo "Can't find template ${template}." --- > echo '***' "Can't find template ${template}." 1>&2 213c217 < echo `pwd`/configure.in has no "per-host:" line. --- > echo '***' `pwd`/configure.in has no "per-host:" line. 1>&2 218c222 < echo `pwd`/configure.in has no "per-target:" line. --- > echo '***' `pwd`/configure.in has no "per-target:" line. 1>&2 251c255,258 < echo Rebuilt configure in `pwd` --- > > if [ -n "${verbose}" ] ; then > echo Rebuilt configure in `pwd` > fi 252a260,270 > # Now update config.sub from the template directory. > if echo "$template" | grep -s 'configure$' ; then > cp `echo "$template" | sed s/configure$/config.sub/` ./config.sub.new > # mv config.sub config.sub.old > mv config.sub.new config.sub > > if [ -n "${verbose}" ] ; then > echo Rebuilt config.sub in `pwd` > fi > fi > 277c295 < echo No configure script in `pwd`/$i --- > echo Warning: No configure script in `pwd`/$i 280c298,300 < echo Warning: directory $i is missing. --- > if [ -n "${verbose}" ] ; then > echo Warning: directory $i is missing. > fi 291c311 < echo srctrigger not set in configure.in. `pwd` not configured. --- > echo Warning: srctrigger not set in configure.in. `pwd` not configured. 301a322,326 > result=`/bin/sh ./config.sub ${host}` > host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > host=${host_cpu}-${host_vendor}-${host_os} 308d332 < 311,314c335,339 < if [ -n "${verbose}" ] ; then < echo " target=\"${target}\"" < fi < --- > result=`/bin/sh ./config.sub ${target}` > target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > target=${target_cpu}-${target_vendor}-${target_os} 325c350 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 329c354 < if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then --- > if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target- | grep -v Target-independent`" ] ; then 339c364 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 342c367 < echo "${Makefile} already exists in source directory. `pwd` not configured." --- > echo '***' "${Makefile} already exists in source directory. `pwd` not configured." 1>&2 349c374,385 < if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi --- > if [ ! -d ${targetsubdir} ] ; then > if [ -z "${commontargets}" ] ; then > mkdir ${targetsubdir} > else > if [ ! -d Target-independent ] ; then > mkdir Target-independent > fi > > ${symbolic_link} Target-independent ${targetsubdir} > fi # if target independent > fi # if no target dir yet > 356c392 < echo "Configured subdirs exist. `pwd` not configured." --- > echo '***' "Configured subdirs exist. `pwd` not configured." 1>&2 372c408 < echo "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 374c410 < echo "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 377c413 < echo \(At least ${srctrigger} is missing.\) 1>&2 --- > echo '***' \(At least ${srctrigger} is missing.\) 1>&2 391,392c427,428 < echo "${progname}: cannot create a link \"${link}\"," 1>&2 < echo "since the file \"${file}\" does not exist." 1>&2 --- > echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 > echo '***' "since the file \"${file}\" does not exist." 1>&2 402c438 < echo "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 --- > echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 405c441,444 < echo "Linked \"${link}\" to \"${srcdir}/${file}\"." --- > > if [ -n "${verbose}" ] ; then > echo "Linked \"${link}\" to \"${srcdir}/${file}\"." > fi 441c480 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 498c537,539 < echo "Created \"${Makefile}\"" in `pwd`${andusing}. --- > if [ -n "${verbose}" -o -z "${recursing}" ] ; then > echo "Created \"${Makefile}\"" in `pwd`${andusing}. > fi 517,573d557 < done # for each target < < # # Now build a Makefile for this host. < # if [ -n "${forcesubdirs}" ] ; then < # cd ${hostsubdir} < # cat > GNUmakefile << E!O!F < ## Makefile generated by configure for host ${host}. < # < #%: < # for i in ${targets} ; do \ < # $(MAKE) -C Target-\$i \$@ < # < #all clean stage1 stage2 stage3 stage4etags tags TAGS < #E!O!F < # fi < done # for each host < < # If there are subdirectories, then recurse. < < if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi < < # configdirs is not null < for configdir in ${configdirs} ; do < echo Configuring ${configdir}... < specifics= < commons= < < if [ -n "${defaulttargets}" ] ; then < for host in ${hosts} ; do < if [ -d ${configdir}.${host} ] ; then < newspecifics="${specifics} ${host}" < specifics=${newspecifics} < else < newcommons="${commons} ${host}" < commons=${newcommons} < fi # if target specific < done # for each host < < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${commons} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any common hosts < < if [ -n "${specifics}" ] ; then < for host in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${host}... < (cd ${configdir}.${host} ; < ./configure ${host} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < done # for host in specifics < fi # if there are any specifics < else 575,584c559,578 < for target in ${targets} ; do < if [ -d ${configdir}.${target} ] ; then < newspecifics="${specifics} ${target}" < specifics=${newspecifics} < else < newcommons="${commons} +target=${target}" < commons=${newcommons} < fi < < done # check for target specific dir override --- > # If there are subdirectories, then recurse. > if [ -z "${norecurse}" -a -n "${configdirs}" ] ; then > for configdir in ${configdirs} ; do > if [ -n "${verbose}" ] ; then > echo Configuring ${configdir}... > fi > > if [ -d ${configdir} ] ; then > (cd ${configdir} ; > ./configure -recursing ${host} +target=${target} \ > ${verbose} ${subdirs} ${removing} +destdir=${destdir}) \ > | sed 's/^/ /' > else > if [ -n "${verbose}" ] ; then > echo Warning: directory \"${configdir}\" is missing. > fi > fi > done > fi > done # for each target 586,589c580,589 < if [ -n "${verbose}" ] ; then < echo " "commons=\"${commons}\" < echo " "specifics=\"${specifics}\" < fi # if verbose --- > # Now build a Makefile for this host. > if [ -n "${subdirs}" -a ! -n "${removing}" ] ; then > cd ${hostsubdir} > cat > GNUmakefile << E!O!F > # Makefile generated by configure for host ${host}. > > ALL := $(shell ls -d Target-*) > > %: > $(foreach subdir,$(ALL),$(MAKE) -C $(subdir) \$@ &&) true 591,612c591,595 < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < ${commons} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any commons < < if [ -n "${specifics}" ] ; then < for target in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${target}... < (cd ${configdir}.${target} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < "+target=${target}" +destdir=${destdir}) \ < | sed 's/^/ /' < done < fi # if any specifics < fi # not default targets < done --- > all: > E!O!F > cd .. > fi > done # for each host 617a601,631 > # Revision 1.31 1991/08/23 04:50:57 rich > # Minor config polish. > # > # Revision 1.22 1991/08/23 03:31:43 rich > # Minor polish & config mapping. > # > # Revision 1.30 1991/08/22 07:15:51 rich > # Three part names, etc. > # > # Revision 1.29 1991/08/20 04:56:51 rich > # revisiting error messages > # > # Revision 1.28 1991/08/16 19:22:17 rich > # This is the commontargets change and should be considered > # experimental. > # > # Revision 1.27 1991/08/08 01:14:13 rich > # allow +f to stand in for +subdirs > # > # Revision 1.26 1991/08/07 19:21:32 rich > # +forcesubdirs -> +subdirs > # > # Revision 1.25 1991/08/07 07:05:30 rich > # Added make. > # > # Revision 1.24 1991/08/06 19:26:01 rich > # revised option parsing. > # > # Revision 1.23 1991/08/06 19:12:32 rich > # Host-level GNUmakefiles. > # diff -r gdb-3.98/configure.in gdb-4.0/configure.in 6c6 < configdirs="libiberty bfd binutils bison gcc readline gdb ld gas gnulib ${clib} emacs prms " --- > configdirs="libiberty bfd binutils bison gcc readline ld gas gnulib ${clib} gdb make prms " diff -r gdb-3.98/gdb/ChangeLog gdb-4.0/gdb/ChangeLog 0a1,280 > Fri Aug 23 17:14:25 1991 John Gilmore (gnu at cygint.cygnus.com) > > * GDB-4.0 release! > * Update README. > * Makefile.in (VERSION): Roll to 4.0. > (gdb.tar.Z): Make refcard.ps as well, for shipment. > > Fri Aug 23 14:07:09 1991 Roland H. Pesch (pesch at cygint.cygnus.com) > > * doc/gdb.texinfo: minor rewordings, crossref to ptype from print, > more on printsyms. > > * doc/Makefile, Makefile.in: generate "gdb-all.texi" rather than > "gdb-all.texinfo" > > * doc/rdl-apps.texi: renamed from rdl-apps.texinfo > > * Makefile.in, doc/Makefile, doc/.Sanitize, doc/gdb.texinfo: > reflect above name change > > * WHATS.NEW: correct pointer to refcard. > > * doc/gdb.texinfo: update New Features, Installing > > * doc/gdbint.texinfo: add short description of configure +template > > Fri Aug 23 11:46:08 1991 Roland H. Pesch (pesch at cygint.cygnus.com) > > * doc/gdb.texinfo: update, fix bugs in "Installing" appendix > > Fri Aug 23 01:02:00 1991 John Gilmore (gnu at cygint.cygnus.com) > > * Makefile.in: Add config.sub, make doc/rdl-apps.texinfo for > tar file, add dependencies for referenced doc files. > > Thu Aug 22 22:17:06 1991 Stu Grossman (grossman at cygint.cygnus.com) > > * coffread.c, symfile.c, stack.c: saberized. > > Thu Aug 22 16:20:27 1991 Roland H. Pesch (pesch at cygint.cygnus.com) > > * doc/refcard.tex: permuted Essential Commands sec > > * doc/gdb.texinfo: new C++ chapter; revised installation appendix; > new doc for > set/show symbol-reloading > default set complaints 0 > info all-registers > RET-repeat disabled after prompted long displays > processID (attach) interpretation of 2nd GDB cmdline arg > > Thu Aug 22 14:05:47 1991 Stu Grossman (grossman at cygint.cygnus.com) > > * expread.y, coffread.c, dbxread.c, target.c, mem-break.c, > cplus-dem.c, values.c, valprint.c, symfile.c, remote.c, > breakpoint.c, main.c: lint. > > Thu Aug 22 02:02:26 1991 John Gilmore (gnu at cygint.cygnus.com) > > Install new configuration scheme for GDB and friends. > > * config.sub: Translate ordinary names to three-part names. > * configure: Use three-part names internally. > * configure.in: Translate three-part names to filenames. > > * README, WHATS.NEW: Update for gdb-4.0. > * Makefile.in: Roll VERSION to 3.99. > > Wed Aug 21 18:21:09 1991 John Gilmore (gnu at cygint.cygnus.com) > > * infptrace.c (KERNEL_U_ADDR_BSD): Include a.out.gnu.h. > * i960-tdep.c, m68k-tdep.c, sparc-tdep.c, tm-i960.h, > tm-m68k.h, remote-nindy.c: Change ext_format_XXX structs > to single structures rather than arrays; when passing > their address, use &. This avoids trouble with bdead compilers. > * mcheck.c: Don't include ; just declare "void abort();" > instead. This avoids portability headaches. > * mips-tdep.c (mips_do_registers_info): Only print FP regs if > asked to. > * source.c (open_source_file): Avoid ANSI const bdeath by > skipping declaration and then casting result value. > * tm-hp300bsd.h: Clarify comment. > * utils.c (strstr): Result is const char *; ANSI bdeath. > * xm-hp300bsd.h: Define HOST_BYTE_ORDER. Redefine INT_MIN, > since system include file defines it differently from "defs.h", > though the two are equivalent for our purposes. > * tconfig/hp300bsd: Add m68k-tdep.o. > > Tue Aug 20 16:01:11 1991 John Gilmore (gnu at cygint.cygnus.com) > > * tconfig/sun*4: Remove warnings about system assembler. > > Mon Aug 19 13:44:46 1991 John Gilmore (gnu at cygint.cygnus.com) > > * mcheck.c: Avoid warning about undeclared abort fn. > * tm-sparc.h (PC_ADJUST): Avoid calling error() from this; > it causes recursive calls to error() when used in cleanups. > To do so requires that we make it a function, so we do. > * sparc-tdep.c (sparc_pc_adjust): New implem of PC_ADJUST. > * utils.c (do_cleanups): Remove the current cleanup from the > chain *before* calling it, in case error() is called from it. > The result won't be pretty, but won't be an infinite loop either. > > Mon Aug 19 00:41:04 1991 Michael Tiemann (tiemann at cygint.cygnus.com) > > * dbxread.c (read_struct_type): Grok anon structs for C++. > (vb_name, vptr_name): Null terminate these strings. > > Fri Aug 16 08:31:03 1991 John Gilmore (gnu at cygint.cygnus.com) > > Minor bug fixes from BSD Net2 gdb: > > * blockframe.c (get_prev_frame_info): If FRAME_CHAIN_COMBINE > returns 0, there is no previous frame. > * breakpoint.c (commands_command): If !from_tty, don't call > input_from_terminal_p(). > * dbxread.c (record_misc_function): Speed up slightly. > (compare_psymbols): Ditto. > * infcmd.c (do_registers_info): Take a second argument to > determine whether to print float registers. "info registers" > does not do so anymore. "info all-registers" does, now. > * mips-tdep.c, pyr-tdep.c (xxx_do_registers_info): Take second > arg and ignore it. > * tm-mips.h, tm-pyr.h (DO_REGISTERS_INFO): Pass second arg. > * inflow.c (initialize_inflow): Set tflags_ours correctly. > > Other fixes: > > * breakpoint.c (bpstat_do_actions): Use a cleanup to restore > executing_breakpoint_commands if we are interrupted by error. > * coffread.c (init_lineno): Avoid problem with zero-sized linetab > versus malloc/free. From: john@labtam.labtam.oz.au (John Carey). > * core.c (solib_add_stub, core_open): Call SOLIB_ADD inside a > catch_errors() so we can setup the frame regardless of whether > the shared libs work. > * ieee-float.c (double_to_ieee_extended): Get exponent from > right place in little-endian systems. From John Carey. > > Thu Aug 15 18:43:57 1991 John Gilmore (gnu at cygint.cygnus.com) > > * main.c: Remove unused terminating_signals and catch_termination(). > (long_options): Terminate with a zero element. > [Bugfix from Atsuo Kawaguchi .] > (gdb_readline): Make call-compatible with readline. > (init_signals): Improve comments re vfork vs. signal. > > * utils.c (prompt_for_continue): Use new gdb_readline(). > If we prompt for continuation, we don't let CR repeat the previous > command, once we get back to a prompt. It's too easy to keep > hitting CR, expecting "--more--" prompts, and have some long > command start repeating on you. > > Tue Aug 13 16:17:56 1991 John Gilmore (gnu at cygint.cygnus.com) > > * blockframe.c (frameless_look_for_prologue): Speed up by > calling SKIP_PROLOGUE_FRAMELESS_P if it's defined. > * tm-sparc.h (SKIP_PROLOGUE, SKIP_PROLOGUE_FRAMELESS_P): > Define two variants, one faster. > * sparc-tdep.c (sparc_frame_chain): Use target_read_memory > and return zero, rather than giving an error. > (setup_arbitrary_frame): Initialize the PC in the new frame. > (skip_prologue): Add a second arg saying whether we're just > checking for a frameless function or not. > > * core.c (core_open, core_close, core_xfer_memory): Move > section table pointers and bfd* into the target_ops. > (core_open): Allow errors in shared lib reading, etc. > (core_files_info): Describe shared library sections. > > * exec.c (exec_open, exec_close, exec_xfer_memory, xfer_memory, > exec_files_info, set_section_command): Move section table > pointers and bfd* into the target_ops. > (add_to_section_table): Add BFD to section table. > > * target.c (target_xfer_memory, target_info): Pass target to > xfer_memory and target_info functions. > * target.h: '' > > * gdbcore.h: Move struct section_table. > * target.h: New home of struct section_table. > > * solib.c (solib_add): New argument is the target_ops whose > section list is to be added to, if any. Reallocate the > sections in that target to add any that come from shared libs. > (throughout) so_sections renamed to sections. > (solib_xfer_memory): Deleted. > * tm-sunos.h (SOLIB_ADD): Add target argument. > (SOLIB_XFER_MEMORY): Delete. > > * core.c, exec.c, inftarg.c, remote-eb.c, remote-nindy.c, > remote-vx.c, remote.c, target.c, target.h: Remove add_syms vector > from target_ops. It's the same on all targets. Add two section > pointers to target_ops. > > * stack.c (find_relative_frame): Dump ancient algorithm for > "down", just use handy "next" pointers. > (frame_command): Don't error if there is no stack; let user > set one. > > * inflow.c (new_tty_prefork, new_tty): New prefork routine > modifies static state in the parent process; new_tty itself > runs in the child and modifies the child's file descriptors > to match the saved static state. > * infrun.c (child_create_inferior): Call new_tty_prefork, > fork, then new_tty. > > * infptrace.c (child_xfer_memory): Add ignored target arg. > * remote-eb.c (eb_xfer_inferior_memory): '' > * remote-nindy.c (nindy_xfer_inferior_memory): '' > * remote-vx.c (vx_xfer_memory): '' > * remote.c (remote_xfer_memory): ''. Rename from > remote_xfer_inferior_memory. > > * main.c (main): Only try to attach "corefile" argument if > it starts with a digit. > > * symfile.c (symbol_reloading): New "set/show" variable. > (symbol_file_add): Shorten message about symbol reading. > (add_symbol_file_command): Merge with add_syms_addr_command, > since this should work on all targets now. > (stop_whining): Default to zero, to shut up complaints > about bad symbol tables on many systems. > (free_named_symtabs): Just exit unless symbol_reloading. > > * xm-sun3os4.h, xm-sun4os4.h: Define BROKEN_LARGE_ALLOCA, > and add comment explaining shared library screw. > > * source.c: #if defined => #ifdef. > > Thu Aug 8 12:23:19 1991 John Gilmore (gnu at cygint.cygnus.com) > > * doc/gdbint.texinfo: Improve doc on porting to new OS's. > > Tue Aug 6 17:16:15 1991 Roland H. Pesch (pesch at cygint.cygnus.com) > > * doc/rdl-apps.texinfo: provide default readline-appendix finder > (doc/Makefile knows how to make one for local config) > > * Makefile.in: use doc/Makefile for doc targets > > * doc/Makefile: GDB documentation now has its own Makefile > doc/refcard.tex: renamed from "gdbrc.tex" > doc/.Sanitize: add Makefile; recognize renamed refcard.tex > doc/gdbint.texinfo: add markup in "Cleanups" chapter > > > Fri Aug 2 00:13:06 1991 John Gilmore (gnu at cygint.cygnus.com) > > * values.c (baseclass_addr): When reading target memory, use the > length of the basetype, not the upper type. We've only malloc'd > enough space for the basetype, leading to errors in free(). > > * expprint.c (print_subexp): Print UNOP_MEMVAL of an OP_LONG that > ends up as a function specially, since we know the actual type of > the pointed-to address. This (somewhat) fixes display of > expressions that include misc_function_vector names. Try `cond 1 > !strcmp("a","b")' then `i b'. > > * infrun.c: Move DO_DEFERRED_STORES from proceed() to resume(). > The child can be proceeded from inside wait_for_inferior in > evaluating breakpoint conditions, and DO_DEFERRED_STORES was > getting skipped in that case. > > * expprint.c (print_subexp): Use filtered output, since the > subroutines we call use it, otherwise the output is horribly > mangled, since output of wrappable stuff comes out late. > > * Makefile.in: Bump VERSION to 3.98.1 > > * infrun.c (child_create_process): Use execlp to find the > shell to exec our target program. This requires some fiddling > with `environ' since there is no execlpe(). > > Thu Aug 1 15:35:17 1991 Roland H. Pesch (pesch at fowanton.cygnus.com) > > * Makefile.in, doc/gdbrc.tex, doc/rc-* (new files): > Minor rearrangement of refcard permits two new make targets-- > gdbrc.dvi DVI output for refcard, using CM fonts > gdbrc.ps PostScript refcard, using PS fonts > diff -r gdb-3.98/gdb/Makefile.in gdb-4.0/gdb/Makefile.in 51,52c51,52 < BISON=bison < BISONFLAGS=-y --- > BISON=bison -y > BISONFLAGS= 135c135 < VERSION = 3.98 --- > VERSION = 4.0 188,196d187 < # Documentation source files < SFILES_DOCDIR = \ < ${srcdir}/doc/gdb.texinfo \ < ${srcdir}/doc/pretex.m4 \ < ${srcdir}/doc/none.m4 \ < ${srcdir}/doc/all.m4 \ < ${srcdir}/doc/gdbinv-m.m4 \ < ${srcdir}/doc/gdbinv-s.m4 < 237,238c228,229 < createtags munch configure configure.in \ < ChangeLog ChangeLog-3.x \ --- > createtags munch configure configure.in config.sub \ > ChangeLog ChangeLog-3.x refcard.ps \ 295c286 < $(CLIBS) --- > $(CLIBS) $(LOADLIBES) 461a453 > (cd doc; $(MAKE) $(MFLAGS) rdl-apps.texi) 462a455 > $(MAKE) $(MFLAGS) refcard.ps 490c483 < rm -f gdb.dvi rdl-apps.texinfo gdb-all* --- > cd $(srcdir)/doc; make clean 501a495,535 > STAGESTUFF=${OBS} ${TSOBS} ${NTSOBS} ${ADD_FILES} init.c init.o version.c gdb > > # Copy the object files from a particular stage into a subdirectory. > stage1: force > -mkdir stage1 > -mv -f $(STAGESTUFF) stage1 > > stage2: force > -mkdir stage2 > -mv -f $(STAGESTUFF) stage2 > > stage3: force > -mkdir stage3 > -mv -f $(STAGESTUFF) stage3 > > against=stage2 > > comparison: force > for i in $(STAGESTUFF) ; do cmp $$i $(against)/$$i ; done > > de-stage1: force > - (cd stage1 ; mv -f * ..) > - rmdir stage1 > > de-stage2: force > - (cd stage2 ; mv -f * ..) > - rmdir stage2 > > de-stage3: force > - (cd stage3 ; mv -f * ..) > - rmdir stage3 > > Makefile: $(srcdir)/Makefile.in $(srcdir)/configure > (cd $(srcdir) ; \ > ./configure +destdir=$(destdir) \ > +norecurse \ > `if [ "$(srcdir)" != "." ] ; then echo +subdirs; fi` \ > $(host) +target=$(target)) > > force: > 502a537,540 > # GDB QUICK REFERENCE (TeX dvi file, CM fonts) > refcard.dvi : $(srcdir)/doc/refcard.tex > ( cd $(srcdir)/doc; make refcard.dvi ) > mv $(srcdir)/doc/refcard.dvi . 504,507c542,555 < rdl-apps.texinfo: ${READLINE_DIR}/inc-readline.texinfo \ < ${READLINE_DIR}/inc-history.texinfo < echo "@include ${READLINE_DIR}/inc-readline.texinfo" >rdl-apps.texinfo < echo "@include ${READLINE_DIR}/inc-history.texinfo" >>rdl-apps.texinfo --- > # GDB QUICK REFERENCE (PostScript output, common PS fonts) > refcard.ps : $(srcdir)/doc/refcard.tex > ( cd $(srcdir)/doc; make refcard.ps ) > mv $(srcdir)/doc/refcard.ps . > > # GDB MANUAL: TeX dvi file > gdb.dvi : $(srcdir)/doc/gdb-all.texi $(srcdir)/doc/rdl-apps.texi > ( cd $(srcdir)/doc; make gdb.dvi ) > mv $(srcdir)/doc/gdb.dvi . > > # GDB MANUAL: info file > gdb.info: $(srcdir)/doc/gdb-all.texi > ( cd $(srcdir)/doc; make gdb.info ) > mv $(srcdir)/doc/gdb.info* . 509,527c557,560 < # Be sure to not create a bad gdb-all.texinfo if ${M4} is missing or aborts... < gdb-all.texinfo: ${SFILES_DOCDIR} < rm -f gdb-all.texinfo foobus.texinfo < ( cd $(srcdir)/doc; \ < ${M4} pretex.m4 none.m4 all.m4 gdb.texinfo ) >foobus.texinfo < mv foobus.texinfo gdb-all.texinfo < < gdb.dvi : gdb-all.texinfo rdl-apps.texinfo < TEXINPUTS=${TEXIDIR}:$$TEXINPUTS tex gdb-all.texinfo < texindex gdb-all.?? < TEXINPUTS=${TEXIDIR}:$$TEXINPUTS tex gdb-all.texinfo < mv gdb-all.dvi gdb.dvi < rm -f gdb-all.?? gdb-all.??? < < # We're using texinfo2, and older makeinfo's may not be able to < # cope with all the markup. In the meantime, we distribute the info < # files as formatted by the elisp texinfo2 code. < gdb.info: gdb-all.texinfo < ${MAKEINFO} gdb-all.texinfo --- > $(srcdir)/doc/gdb-all.texi: > (cd $(srcdir)/doc; $(MAKE) gdb-all.texi) > $(srcdir)/doc/rdl-apps.texi: > (cd $(srcdir)/doc; $(MAKE) rdl-apps.texi) diff -r gdb-3.98/gdb/README gdb-4.0/gdb/README 1,2c1,2 < README for gdb-3.98 beta release < John Gilmore 31 July 91 --- > README for gdb-4.0 release > John Gilmore 23 Aug 91 4,10c4 < This is GDB, the GNU source-level debugger, presently running under < un*x. This is a beta test version of GDB version 4, and has not been < extensively tested. It surely has some bugs, both bugs that were < present in version 3, and new bugs. If your favorite bugfix is not < yet present here, I encourage you to port it into this version and < then send the diffs to bug-gdb@prep.ai.mit.edu. < --- > This is GDB, the GNU source-level debugger, presently running under un*x. 14c8,9 < Unpacking and Installation --- > Unpacking and Installation -- quick overview > ========================== 18,19c13,14 < library into the parent directory of gdb. The idea is that a variety < of GNU tools can share a common copy of these things. --- > library into the parent directory of the gdb source files. The idea is > that a variety of GNU tools can share a common copy of these things. 21,30c16,22 < These generic files are packaged separately from GDB, in a tar file < called "bfd.ilrt-3.98.tar.Z". ("ilrt" stands for include, libiberty, < readline, and texinfo). Unpack that tar file in the same directory in < which you unpacked the gdb-3.98.tar.Z file, so that all the files in it < will sit next to the 'gdb' directory. The whole top-level directory < will look like this with `ls -F': < < Makefile.in configure* include/ texinfo/ < README.configure configure.in libiberty/ < bfd/ gdb/ readline/ --- > These generic files are packaged together with the directory containing > the source code for GDB, for now. When you unpack the gdb-4.0.tar.Z > file, you'll get a directory called `gdb-4.0', which contains: > > Makefile.in bfd/ configure.in libiberty/ > README config.sub* gdb/ readline/ > README.configure configure* include/ texinfo/ 32,33c24 < Once you have this stuff unpacked, and your current directory is here, < you can type: --- > To build GDB, you can just do: 35c26,27 < ./configure HOSTNAME --- > cd gdb-4.0 > ./configure HOSTTYPE (e.g. sun4, decstation) 36a29 > cp gdb/gdb /usr/local/bin/gdb (or wherever you want) 38c31 < and all the libraries, as well as GDB will be configured and built. --- > This will configure and build all the libraries as well as GDB. 43,46c36 < while debugging a program running on a machine of another type. You < configure it this way by specifying `./configure host -target=target'; < see below. < --- > while debugging a program running on a machine of another type. See below. 48,81d37 < More Documentation < < The GDB manual is much expanded and improved. For online browsing, < gdb/gdb.info is the main file, and there are gdb/gdb.info-1 through -6 < files that can be installed into your main `info' tree. If you want a < printed version of the manual, you can run, from the GDB source < directory, < < make gdb.dvi < < to make the TeX device-independent output file. This assumes you have < a running TeX on your system. The source for the GDB manual is in < doc/gdb.texinfo (and a few other files it includes), provided with < this distribution. The Makefile attempts to use the texinfo.tex < supplied as part of the BFD-and-libraries tar file, since the manual < uses Texinfo-2 which is not in common use yet. < < < Configuration Details (extracted from gdb.texinfo) < < GDB is distributed with a `configure' script that automates the < process of preparing GDB for installation; you can then use `make' < to build the `gdb' program. < < The `configure' script that's specific to GDB is distributed in < the main GDB source directory. However, building GDB also requires < several other directories of source common to multiple GNU programs. < These directories (GNU libraries and includes) are distributed < separately, but their `configure' scripts and `Makefile's are < designed to work together. To ensure that GDB's `Makefile' can find < all the pieces, you should make a single overall directory to hold < the directories of source for GNU libraries and includes, and you < should install the GDB source directory there too. In this < Appendix, we refer to the directory of GNU source directories as GNUSRC. 83c39,111 < At a minimum, to build GDB you need the directories --- > More Documentation > ================== > > The GDB 4.0 release includes an already-formatted reference card, ready > for printing on a PostScript printer, as `gdb-4.0/gdb/refcard.ps'. It > uses the most common PostScript fonts: the Times family, Courier, > and Symbol. If you have a PostScript printer you can print the > reference card by just sending `refcard.ps' to the printer. > > The release also includes the online Info version of the manual > already formatted: the main Info file is `gdb-4.0/gdb/gdb.info', and > it refers to subordinate files matching `gdb.info*' in the same > directory. > > If you want to make these Info files yourself from the GDB > manual's source, you need the GNU `makeinfo' program. Once you have > it, you can type > > cd gdb-4.0/gdb > make gdb.info > > to make the Info file. > > If you want to format and print copies of this manual, you need > several things: > > * TeX, the public domain typesetting program written by Donald > Knuth, must be installed on your system and available through > your execution path. > > * `gdb-4.0/texinfo': TeX macros defining the GNU Documentation > Format. > > * *A DVI output program.* TeX doesn't actually make marks on > paper; it produces output files called DVI files. If your > system has TeX installed, chances are it has a program for > printing out these files; one popular example is `dvips', which > can print DVI files on PostScript printers. > > Once you have these things, you can type > > cd gdb-4.0/gdb > make gdb.dvi > > to format the text of this manual, and print it with the usual output > method for TeX DVI files at your site. > > If you want to print the reference card, but don't have a PostScript > printer, or want to print using Computer Modern fonts instead, you can > still print it if you have TeX. Format the reference card by typing > > cd gdb-4.0/gdb > make refcard.dvi > > The GDB reference card is designed to print in landscape mode on US > "letter" size paper; that is, on a sheet 11 inches wide by 8.5 > inches high. You will need to specify this form of printing as an > option to your DVI output program. > > > Installing GDB > ============== > > GDB comes with a `configure' script that automates the process of > preparing GDB for installation; you can then use `make' to build the > `gdb' program. > > The gdb distribution includes all the source code you need for gdb > in a single directory `gdb-4.0'. That directory in turn contains: > > `gdb-4.0/configure' > Overall script for configuring GDB and all its supporting > libraries. 85c113 < `GNUSRC/gdb' --- > `gdb-4.0/gdb' 88c116 < `GNUSRC/bfd' --- > `gdb-4.0/bfd' 91c119 < `GNUSRC/include' --- > `gdb-4.0/include' 94c122 < `GNUSRC/libiberty' --- > `gdb-4.0/libiberty' 97c125 < `GNUSRC/readline' --- > `gdb-4.0/readline' 100,102c128,129 < Each of these directories has its own `configure' script. GNUSRC has < an overall `configure' script, which is distributed with the GNU < libraries and includes. --- > Each of these directories has its own `configure' script, which are > used by the overall `configure' script in `gdb-4.0'. 104,106c131,133 < `configure' is designed to be called recursively, so it is most < convenient to run `configure' from the GNUSRC directory. The < simplest way to configure and build GDB is the following: --- > It is most convenient to run `configure' from the `gdb-4.0' > directory. The simplest way to configure and build GDB is the > following: 108c135 < cd GNUSRC --- > cd gdb-4.0 112,116c139,143 < where HOST is something like `sun4' or `vax', that identifies the < platform where GDB will run. This builds the three libraries `bfd', < `readline', and `libiberty', then `gdb' itself. The configured < source files, and the binaries, are left in the corresponding source < directories. --- > where HOST is something like `sun4' or `decstation', that identifies > the platform where GDB will run. This builds the three libraries > `bfd', `readline', and `libiberty', then `gdb' itself. The > configured source files, and the binaries, are left in the > corresponding source directories. 124,125c151,152 < < Configuration Subdirectories --- > Configuration Subdirectories > ============================ 127,135c154,166 < If you build GDB for several host or target machines, and if your < `make' program handles the `VPATH' feature (GNU `make' does), it is < most convenient instead to build the different GDB configurations in < subdirectories (separate from the source). `configure' does this < for you when you simultaneously specify several configurations; but < it's a good habit even for a single configuration. You can specify < the use of subdirectories using the `+forcesubdirs' option < (abbreviated `+f'). For example, you can build GDB on a Sun 4 as < follows: --- > If you want to run GDB versions for several host or target > machines, you'll need a different gdb compiled for each combination > of host and target. `configure' is designed to make this easy by > allowing you to generate each configuration in a separate > subdirectory. If your `make' program handles the `VPATH' feature > (GNU `make' does), running `make' in each of these directories then > builds the gdb program specified there. > > `configure' creates these subdirectories for you when you > simultaneously specify several configurations; but it's a good habit > even for a single configuration. You can specify the use of > subdirectories using the `+subdirs' option (abbreviated `+sub'). > For example, you can build GDB on a Sun 4 as follows: 137,139c168,170 < cd GNUSRC < ./configure +f sun4 < cd Host-sun4/Target-sun4 --- > cd gdb-4.0 > ./configure +sub sun4 > cd Host-sparc-sun-sunos4/Target-sparc-sun-sunos4 143,152c174,187 < libraries, it creates nested directories `Host-HOST/Target-MACHINE'. < This is because GDB can be configured for cross-compiling: GDB can < run on one machine (the host) while debugging programs that run on < another machine (the target). You specify cross-debugging targets < by giving the `+target=MACHINE' option to `configure'. Specifying < only hosts still gives you two levels of subdirectory for each host, < with the same machine-name suffix on both. On the other hand, < whenever you specify both hosts and targets on the same command < line, `configure' creates all combinations of the hosts and targets you < list. --- > libraries, it creates nested directories `Host-HOST/Target-TARGET'. > (As you see in the example, the names used for HOST and TARGET may > be expanded from your `configure' argument; *note Config Names::.). > `configure' uses these two directory levels because GDB can be > configured for cross-compiling: GDB can run on one machine (the > host) while debugging programs that run on another machine (the > target). You specify cross-debugging targets by giving the > `+target=TARGET' option to `configure'. Specifying only hosts still > gives you two levels of subdirectory for each host, with the same > configuration suffix on both; that is, if you give any number of > hosts but no targets, GDB will be configured for native debugging on > each host. On the other hand, whenever you specify both hosts and > targets on the same command line, `configure' creates all > combinations of the hosts and targets you list. 157c192 < have `Host-HOST/Target-MACHINE' subdirectories, run `make' in those --- > have `Host-HOST/Target-TARGET' subdirectories, run `make' in those 161,162c196,197 < recursively, so that typing `make' in GNUSRC (or in a < `GNUSRC/Host-HOST/Target-MACHINE' subdirectory) builds all the --- > recursively, so that typing `make' in `gdb-4.0' (or in a > `gdb-4.0/Host-HOST/Target-TARGET' subdirectory) builds all the 165c200 < If you run `configure' from a directory (such as GNUSRC) that --- > If you run `configure' from a directory (such as `gdb-4.0') that 167c202 < `configure' creates the `Host-HOST/Target-MACHINE' subdirectories in --- > `configure' creates the `Host-HOST/Target-TARGET' subdirectories in 170,171c205,206 < cd GNUSRC < configure sun4 +target=vx960 --- > cd gdb-4.0 > configure sun4 +target=vxworks960 175,179c210,220 < GNUSRC/Host-sun4/Target-vx960 < GNUSRC/bfd/Host-sun4/Target-vx960 < GNUSRC/gdb/Host-sun4/Target-vx960 < GNUSRC/libiberty/Host-sun4/Target-vx960 < GNUSRC/readline/Host-sun4/Target-vx960 --- > gdb-4.0/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/bfd/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/gdb/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/libiberty/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/readline/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > > The `Makefile' in > > gdb-4.0/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > > will `cd' to the appropriate lower-level directories, for example: 181,183c222 < The `Makefile' in `GNUSRC/Host-sun4/Target-vx960' will `cd' to the < appropriate lower-level directories (such as < `GNUSRC/bfd/Host-sun4/Target-vx960'), building each in turn. --- > gdb-4.0/bfd/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks 184a224,225 > building each in turn. > 188a230,305 > Specifying Names for Hosts and Targets > ====================================== > > The specifications used for hosts and targets in the `configure' > script are based on a three-part naming scheme, but some short > predefined aliases are also supported. The full naming scheme > encodes three pieces of information in the following pattern: > > ARCHITECTURE-VENDOR-OS > > For example, you can use the alias `sun4' as a HOST argument or in > a `+target='TARGET option, but the full name of that configuration > specifies that the architecture is `sparc', the vendor is `sun', and > the operating system is `sunos4'. > > The following table shows all the architectures, hosts, and OS > prefixes that `configure' recognizes in GDB 4.0. Entries in the "OS > prefix" > column ending in a `*' may be followed by a release number. > > > ARCHITECTURE VENDOR OS prefix > ------------+-------------+------------- > | | > a29k | altos | aix* > alliant | aout | aout > arm | apollo | bout > c1 | att | bsd* > c2 | bout | coff > i386 | coff | ctix* > i860 | convergent | dynix* > i960 | convex | esix* > m68000 | dec | hpux* > m68k | encore | isc* > m88k | gould | mach* > mips | hp | newsos* > ns32k | ibm | nindy* > pyramid | intel | none > rs6000 | isi | osf* > rtpc | little | sco* > sparc | mips | sunos* > tahoe | motorola | sysv* > tron | ncr | ultrix* > vax | next | unos* > | none | v88r* > | sco | vms* > | sequent | vxworks* > | sgi | > | sony | > | sun | > | unicom | > | utek | > | wrs | > > *Warning:* Many combinations of architecture, vendor, and OS are > untested. > > The `configure' script accompanying GDB 4.0 does not provide any > query facility to list all supported host and target names or > aliases. `configure' calls the Bourne shell script `config.sub' to > map abbreviations to full names; you can read the script, if you > wish, or you can use it to test your guesses on abbreviations--for > example: > > % sh config.sub sun4 > sparc-sun-sunos4 > % sh config.sub sun3 > m68k-sun-sunos4 > % sh config.sub decstation > mips-dec-ultrix > % sh config.sub hp300bsd > m68k-hp-bsd > % sh config.sub i386v > i386-none-sysv > % sh config.sub i486v > *** No vendor: configuration `i486v' not recognized 190c307,308 < `configure' Options --- > `configure' Options > =================== 195,196c313,314 < configure [+destdir=DIR] [+forcesubdirs] [+norecur] [+rm] < [+target=MACHINE...] HOST... --- > configure [+destdir=DIR] [+subdirs] [+norecur] [+rm] > [+target=TARGET...] HOST... 199c317 < you prefer; but options introduced with `+' may be truncated. --- > you prefer; but you may abbreviate option names if you use `+'. 205d322 < 209c326 < `+forcesubdirs' --- > `+subdirs' 212c329 < Host-MACHINE/Target-MACHINE --- > Host-HOST/Target-TARGET 219c336,337 < one `+target=MACHINE' option on the `configure' command line. --- > one > `+target=TARGET' option on the `configure' command line. 226c344 < Remove the configuration specified by other arguments. --- > Remove the configuration that the other arguments specify. 228c346 < `+target=MACHINE ...' --- > `+target=TARGET ...' 230,234c348,350 < specified MACHINE. You may specify as many `+target' options < as you wish. To see a list of available targets, execute `ls < tconfig' in the GDB source directory. Without this option, GDB < is configured to debug programs that run on the same machine < (HOST) as GDB itself. --- > specified TARGET. You may specify as many `+target' options as > you wish. Without this option, GDB is configured to debug > programs that run on the same machine (HOST) as GDB itself. 235a352,354 > There is no convenient way to generate a list of all available > targets. > 238,239c357,360 < many host names as you wish. To see a list of available hosts, < execute `ls xconfig' in the GDB source directory. --- > many host names as you wish. > > There is no convenient way to generate a list of all available > hosts. 251,254c372,376 < There is an effort to produce a GDB that works with Modula-2. I am not < aware of anyone who is working on getting gdb to use the syntax of any < other language. Pascal programs which use sets, subranges, file < variables, or nested functions will not currently work. --- > Andrew Beers has produced a GDB that works with Modula-2, which will > appear in gdb-4.1. I am not aware of anyone who is working on getting > gdb to use the syntax of any other language. Pascal programs which use > sets, subranges, file variables, or nested functions will not currently > work. 301,302c423,431 < "mcheck.c", line 32, will produce a pointer conversion warning, which < can be ignored. --- > GDB can produce warnings about symbols that it does not understand. By > default, these warnings are disabled. You can enable them by executing > `set complaint 10' (which you can put in your ~/.gdbinit if you like). > I recommend doing this if you are working on a compiler, assembler, > linker, or gdb, since it will point out problems that you may be able > to fix. Warnings produced during symbol reading indicate some mismatch > between the object file and GDB's symbol reading code (in many cases, > it's a mismatch between the specs for the object file format, and what > the compiler actually outputs or the debugger actually understands). 304,312d432 < When gdb reads object files produced by the Sun bundled C compiler, < you will often get a "bad block start address patched" message. You < can shut off such messages with the command `set complaint 0' (which < you can put in your ~/.gdbinit if you like). Messages like this < during symbol reading indicate some mismatch between the object file < and GDB's symbol reading code (in this case, it's a mismatch < between the specs for the object file format, and what Sun's compiler < actually outputs). < 454a575,577 > > I strongly recommend printing out the reference card and using it. > Send reference-card suggestions to bug-gdb@prep.ai.mit.edu, just like bugs. diff -r gdb-3.98/gdb/TAGS gdb-4.0/gdb/TAGS 2,8c2,8 < blockframe.c,767 < #define INIT_FRAME_PC(206,5669 < _initialize_blockframe 659,17662 < block_for_pc 441,11923 < block_innermost_frame 638,17249 < blockvector_for_pc 387,10799 < clear_pc_function_cache(476,12674 --- > blockframe.c,768 > #define INIT_FRAME_PC(212,5863 > _initialize_blockframe 667,17890 > block_for_pc 449,12151 > block_innermost_frame 646,17477 > blockvector_for_pc 395,11027 > clear_pc_function_cache(484,12902 10,12c10,12 < find_pc_function 457,12234 < find_pc_misc_function 595,15874 < find_pc_partial_function 491,13186 --- > find_pc_function 465,12462 > find_pc_misc_function 603,16102 > find_pc_partial_function 499,13414 15c15 < get_current_block 347,9767 --- > get_current_block 355,9995 17,18c17,18 < get_frame_block 327,9204 < get_frame_function 372,10340 --- > get_frame_block 335,9432 > get_frame_function 380,10568 20,21c20,21 < get_frame_pc 303,8624 < get_frame_saved_regs 315,8848 --- > get_frame_pc 311,8852 > get_frame_saved_regs 323,9076 23c23 < get_pc_function_start 353,9839 --- > get_pc_function_start 361,10067 25c25 < get_prev_frame_info 216,6019 --- > get_prev_frame_info 222,6213 30c30 < breakpoint.c,1997 --- > breakpoint.c,2039 32,57c32,58 < _initialize_breakpoint 2265,55223 < bpstat_alloc 673,18034 < bpstat_clear 490,13520 < bpstat_clear_actions 556,14561 < bpstat_copy 511,13785 < bpstat_do_actions 575,15050 < bpstat_num 537,14203 < bpstat_print 606,15734 < bpstat_should_step 877,23326 < bpstat_stop_status 709,19011 < break_command 1351,34686 < break_command_1 1224,31574 < breakpoint_1 891,23665 < breakpoint_auto_delete 1885,46958 < breakpoint_clear_ignore_counts 2064,51244 < breakpoint_cond_eval 664,17840 < breakpoint_here_p 475,13244 < breakpoint_re_set 2015,50056 < breakpoint_re_set_one 1965,48932 < breakpoints_info 992,26203 < catch_breakpoint 1462,37181 < catch_command 1794,44784 < catch_command_1 1671,41884 < check_duplicates 1067,27810 < clear_command 1802,44905 < clear_momentary_breakpoints 1148,29714 --- > _initialize_breakpoint 2278,55563 > bpstat_alloc 686,18373 > bpstat_clear 490,13532 > bpstat_clear_actions 556,14573 > bpstat_copy 511,13797 > bpstat_do_actions 584,15264 > bpstat_num 537,14215 > bpstat_print 619,16073 > bpstat_should_step 890,23665 > bpstat_stop_status 722,19350 > break_command 1364,35025 > break_command_1 1237,31913 > breakpoint_1 904,24004 > breakpoint_auto_delete 1898,47297 > breakpoint_clear_ignore_counts 2077,51583 > breakpoint_cond_eval 677,18179 > breakpoint_here_p 475,13256 > breakpoint_re_set 2028,50395 > breakpoint_re_set_one 1978,49271 > breakpoints_info 1005,26542 > catch_breakpoint 1475,37520 > catch_command 1807,45123 > catch_command_1 1684,42223 > check_duplicates 1080,28149 > cleanup_executing_breakpoints 573,14888 > clear_command 1815,45244 > clear_momentary_breakpoints 1161,30053 60,78c61,79 < decode_line_spec_1 2238,54530 < delete_breakpoint 1896,47239 < delete_catch 1786,44647 < delete_catch_breakpoint 1473,37282 < delete_command 1939,48261 < describe_other_breakpoints 1021,26684 < disable_breakpoint 2173,53342 < disable_catch 1770,44266 < disable_catch_breakpoint 1468,37238 < disable_command 2186,53586 < enable_breakpoint 2131,52430 < enable_catch 1778,44456 < enable_catch_breakpoint 1478,37325 < enable_command 2160,53096 < enable_delete_breakpoint 2217,54143 < enable_delete_command 2227,54295 < enable_once_breakpoint 2199,53844 < enable_once_command 2209,53996 < get_catch_sals 1554,38817 --- > decode_line_spec_1 2251,54870 > delete_breakpoint 1909,47578 > delete_catch 1799,44986 > delete_catch_breakpoint 1486,37621 > delete_command 1952,48600 > describe_other_breakpoints 1034,27023 > disable_breakpoint 2186,53681 > disable_catch 1783,44605 > disable_catch_breakpoint 1481,37577 > disable_command 2199,53925 > enable_breakpoint 2144,52769 > enable_catch 1791,44795 > enable_catch_breakpoint 1491,37664 > enable_command 2173,53435 > enable_delete_breakpoint 2230,54483 > enable_delete_command 2240,54635 > enable_once_breakpoint 2212,54183 > enable_once_command 2222,54336 > get_catch_sals 1567,39156 80,88c81,89 < ignore_command 2075,51429 < insert_breakpoints 387,11300 < map_breakpoint_numbers 2100,51926 < map_catch_names 1494,37641 < mark_breakpoints_out 462,12933 < mention 1161,29945 < read_memory_nobpt 303,8970 < remove_breakpoints 433,12286 < set_breakpoint 1189,30747 --- > ignore_command 2088,51768 > insert_breakpoints 387,11312 > map_breakpoint_numbers 2113,52265 > map_catch_names 1507,37980 > mark_breakpoints_out 462,12945 > mention 1174,30284 > read_memory_nobpt 303,8982 > remove_breakpoints 433,12298 > set_breakpoint 1202,31086 90,97c91,98 < set_default_breakpoint 1050,27340 < set_ignore_count 2035,50595 < set_momentary_breakpoint 1136,29465 < set_raw_breakpoint 1095,28597 < tbreak_command 1359,34806 < until_break_command 1407,35805 < watch_command 1368,34942 < watchpoints_info 1006,26420 --- > set_default_breakpoint 1063,27679 > set_ignore_count 2048,50934 > set_momentary_breakpoint 1149,29804 > set_raw_breakpoint 1108,28936 > tbreak_command 1372,35145 > until_break_command 1420,36144 > watch_command 1381,35281 > watchpoints_info 1019,26759 126,143c127,144 < core.c,432 < _initialize_core(457,11633 < close_exec_file 205,5205 < core_close 61,1674 < core_detach 164,4335 < core_file_command 178,4607 < core_files_info 256,6326 < core_open 77,1936 < core_xfer_memory 376,9273 < get_core_registers 399,9927 < get_exec_file 244,6090 < memory_error 269,6623 < read_memory 293,7217 < read_memory_integer 321,7823 < reopen_exec_file 214,5300 < specify_exec_file_hook 194,4971 < validate_files 228,5601 < write_memory 306,7514 --- > core.c,429 > _initialize_core(444,11056 > close_exec_file 220,5509 > core_close 59,1616 > core_detach 179,4639 > core_file_command 193,4911 > core_files_info 269,6523 > core_open 92,2234 > get_core_registers 385,9336 > get_exec_file 257,6287 > memory_error 290,7052 > read_memory 314,7646 > read_memory_integer 342,8252 > reopen_exec_file 229,5604 > solib_add_stub 81,2043 > specify_exec_file_hook 209,5275 > validate_files 241,5798 > write_memory 327,7943 190,193c191,195 < infcmd.c,779 < #define DO_REGISTERS_INFO(798,19579 < _initialize_infcmd 977,24379 < attach_command 924,23148 --- > infcmd.c,828 > #define DO_REGISTERS_INFO(801,19655 > _initialize_infcmd 999,24807 > all_registers_info 915,22703 > attach_command 946,23576 195,199c197,201 < detach_command 944,23757 < static void do_registers_info 799,19639 < environment_info 640,15819 < finish_command 525,12863 < float_info 954,23944 --- > detach_command 966,24185 > do_registers_info 803,19735 > environment_info 640,15832 > finish_command 525,12876 > float_info 976,24372 203,207c205,210 < path_command 755,18443 < path_info 744,18188 < program_info 595,14727 < read_pc 771,18816 < registers_info 876,21898 --- > nofp_registers_info 922,22803 > path_command 755,18456 > path_info 744,18201 > program_info 595,14740 > read_pc 771,18829 > registers_info 883,22092 209,210c212,213 < run_stack_dummy 427,10362 < set_environment_command 660,16221 --- > run_stack_dummy 427,10375 > set_environment_command 660,16234 216,220c219,223 < unset_command 968,24176 < unset_environment_command 720,17636 < until_command 509,12503 < until_next_command 463,11526 < write_pc 777,18904 --- > unset_command 990,24604 > unset_environment_command 720,17649 > until_command 509,12516 > until_next_command 463,11539 > write_pc 777,18917 222,224c225,227 < inflow.c,367 < _initialize_inflow 456,11421 < child_mourn_inferior 410,10150 --- > inflow.c,393 > _initialize_inflow 464,11703 > child_mourn_inferior 418,10432 226,228c229,232 < generic_mourn_inferior 383,9484 < kill_command 359,8836 < new_tty 314,7914 --- > generic_mourn_inferior 391,9766 > kill_command 367,9118 > new_tty 326,8307 > new_tty_prefork 317,8113 235c239 < try_writing_regs_command 423,10512 --- > try_writing_regs_command 431,10794 237,258c241,262 < infrun.c,591 < #define IN_SIGTRAMP(171,6068 < _initialize_infrun 1698,51198 < child_attach 666,19933 < child_create_inferior 457,14010 < clear_proceed_status 309,9994 < handle_command 1459,43966 < init_wait_for_inferior 647,19458 < insert_step_breakpoint 1420,42913 < normal_stop 1335,40545 < proceed 339,10929 < remove_step_breakpoint 1428,43114 < restore_inferior_status 1637,49022 < resume 286,9478 < resume_cleanups 271,8978 < save_inferior_status 1601,47498 < sig_print_header 1436,43316 < sig_print_info 1442,43430 < signals_info 1563,46665 < start_remote 634,19229 < wait_for_inferior 722,21201 < writing_pc 429,13283 --- > infrun.c,592 > #define IN_SIGTRAMP(168,5981 > _initialize_infrun 1716,51919 > child_attach 684,20654 > child_create_inferior 454,13923 > clear_proceed_status 311,10023 > handle_command 1477,44687 > init_wait_for_inferior 665,20179 > insert_step_breakpoint 1438,43634 > normal_stop 1353,41266 > proceed 341,10958 > remove_step_breakpoint 1446,43835 > restore_inferior_status 1655,49743 > resume 283,9391 > resume_cleanups 268,8891 > save_inferior_status 1619,48219 > sig_print_header 1454,44037 > sig_print_info 1460,44151 > signals_info 1581,47386 > start_remote 652,19950 > wait_for_inferior 740,21922 > writing_pc 426,13196 260c264 < main.c,1371 --- > main.c,1341 262,266c266,270 < add_com 1439,35934 < add_com_alias 1451,36176 < add_info 1393,34949 < add_info_alias 1404,35142 < batch_mode 1970,47865 --- > add_com 1373,34238 > add_com_alias 1385,34480 > add_info 1327,33253 > add_info_alias 1338,33446 > batch_mode 1904,46169 268,273c272,276 < catch_termination 1068,26744 < cd_command 1660,40627 < command_line_input 1131,28669 < command_loop 747,18201 < command_loop_marker 739,18049 < define_command 1498,36999 --- > cd_command 1594,38931 > command_line_input 1065,26976 > command_loop 748,18240 > command_loop_marker 740,18088 > define_command 1432,35303 275,290c278,293 < do_nothing 1084,27203 < document_command 1540,38104 < dont_repeat 776,18983 < dump_me_command 1784,42917 < echo_command 1755,42470 < error_no_arg 1461,36389 < execute_command 685,16739 < float_handler 1961,47593 < free_command_lines 1375,34640 < gdb_readline 796,19615 < help_command 1469,36498 < info_command 1417,35485 < init_signals 1089,27234 < initialize_cmd_lists 1977,47947 < initialize_main 1993,48446 < input_from_terminal_p 1638,40150 --- > do_nothing 1024,25650 > document_command 1474,36408 > dont_repeat 777,19022 > dump_me_command 1718,41221 > echo_command 1689,40774 > error_no_arg 1395,34693 > execute_command 686,16778 > float_handler 1895,45897 > free_command_lines 1309,32944 > gdb_readline 794,19548 > help_command 1403,34802 > info_command 1351,33789 > init_signals 1029,25681 > initialize_cmd_lists 1911,46251 > initialize_main 1927,46750 > input_from_terminal_p 1572,38454 292,296c295,299 < noop_completer 871,21393 < print_gdb_version 1585,39022 < print_prompt 1611,39637 < pwd_command 1645,40248 < quit_command 1618,39715 --- > noop_completer 859,21061 > print_gdb_version 1519,37326 > print_prompt 1545,37941 > pwd_command 1579,38552 > quit_command 1552,38019 298c301 < read_command_lines 1320,33264 --- > read_command_lines 1254,31568 300,306c303,309 < set_history 1916,46592 < set_history_size_command 1903,46347 < set_verbose 1938,47087 < show_command 1429,35769 < show_commands 1800,43282 < show_history 1926,46830 < show_version 1599,39438 --- > set_history 1850,44896 > set_history_size_command 1837,44651 > set_verbose 1872,45391 > show_command 1363,34073 > show_commands 1734,41586 > show_history 1860,45134 > show_version 1533,37742 309,312c312,315 < source_command 1727,41970 < stop_sig 1016,25574 < symbol_completion_function 886,21985 < validate_comname 1477,36632 --- > source_command 1661,40274 > stop_sig 1004,25242 > symbol_completion_function 874,21653 > validate_comname 1411,34936 356,386c359,389 < remote.c,750 < _initialize_remote 851,19532 < dcache_alloc 755,17022 < dcache_fetch 772,17390 < dcache_flush 703,16008 < dcache_hit 720,16300 < dcache_init 813,18275 < dcache_poke 789,17754 < dcache_value 741,16685 < fromhex 233,5646 < getpkt 614,13508 < putpkt 568,12616 < readchar 531,11985 < remote_close 141,3464 < remote_detach 218,5362 < remote_fetch_registers 303,6985 < remote_fetch_word 373,8512 < remote_files_info 504,11432 < remote_open 153,3682 < remote_prepare_to_store 334,7757 < remote_read_bytes 444,10091 < remote_resume 260,6049 < remote_send 553,12362 < remote_start(133,3374 < remote_store_registers 344,7992 < remote_store_word 394,8896 < remote_timer 121,3231 < remote_wait 283,6497 < remote_write_bytes 409,9279 < remote_xfer_inferior_memory(477,10867 < tohex 248,5903 --- > remote.c,741 > _initialize_remote 853,19556 > dcache_alloc 756,17046 > dcache_fetch 773,17414 > dcache_flush 704,16032 > dcache_hit 721,16324 > dcache_init 814,18299 > dcache_poke 790,17778 > dcache_value 742,16709 > fromhex 232,5608 > getpkt 615,13532 > putpkt 569,12640 > readchar 532,12009 > remote_close 140,3426 > remote_detach 217,5324 > remote_fetch_registers 302,6947 > remote_fetch_word 372,8474 > remote_files_info 505,11456 > remote_open 152,3644 > remote_prepare_to_store 333,7719 > remote_read_bytes 443,10053 > remote_resume 259,6011 > remote_send 554,12386 > remote_start(132,3336 > remote_store_registers 343,7954 > remote_store_word 393,8858 > remote_timer 120,3193 > remote_wait 282,6459 > remote_write_bytes 408,9241 > remote_xfer_memory(477,10844 > tohex 247,5865 389,409c392,412 < _initialize_source 1138,28185 < ambiguous_line_spec 750,18338 < directory_command 183,4579 < find_source_lines 530,12883 < forget_cached_source_info 154,4093 < forward_search_command 988,24699 < get_filename_and_charpos 620,15109 < identify_source_line 651,15915 < init_source_path 174,4380 < line_info 927,23066 < list_command 762,18569 < mod_path 207,5064 < open_source_file 484,11615 < openp 394,9409 < print_source_lines 675,16571 < reverse_search_command 1060,26353 < select_source_symtab 75,2195 < show_directories 143,3812 < source_charpos_line 594,14469 < source_info 350,8001 < source_line_charpos 580,14173 --- > _initialize_source 1143,28562 > ambiguous_line_spec 755,18715 > directory_command 186,4813 > find_source_lines 535,13267 > forget_cached_source_info 157,4327 > forward_search_command 993,25076 > get_filename_and_charpos 625,15486 > identify_source_line 656,16292 > init_source_path 177,4614 > line_info 932,23443 > list_command 767,18946 > mod_path 210,5298 > open_source_file 487,11849 > openp 397,9643 > print_source_lines 680,16948 > reverse_search_command 1065,26730 > select_source_symtab 78,2429 > show_directories 146,4046 > source_charpos_line 599,14846 > source_info 353,8235 > source_line_charpos 585,14550 411,413c414,416 < stack.c,817 < _initialize_stack 1091,28477 < args_info 833,21611 --- > stack.c,818 > _initialize_stack 1108,28919 > args_info 831,21516 416,420c419,423 < catch_info 771,20093 < down_command 1027,26824 < down_silently_command 1009,26350 < find_relative_frame 891,23269 < frame_command 943,24854 --- > catch_info 769,19998 > down_command 1044,27266 > down_silently_command 1026,26792 > find_relative_frame 889,23174 > frame_command 955,25121 422,423c425,426 < get_selected_block 871,22591 < locals_info 761,19903 --- > get_selected_block 869,22496 > locals_info 759,19808 425c428 < print_block_frame_labels 599,15796 --- > print_block_frame_labels 598,15742 427c430 < print_frame_arg_vars 779,20234 --- > print_frame_arg_vars 777,20139 429,430c432,433 < print_frame_label_vars 684,17817 < print_frame_local_vars 646,16986 --- > print_frame_label_vars 682,17729 > print_frame_local_vars 644,16898 434,436c437,439 < record_selected_frame 859,22247 < return_command 1036,27028 < select_frame 844,21868 --- > record_selected_frame 857,22152 > return_command 1053,27470 > select_frame 842,21773 438,439c441,442 < up_command 996,26019 < up_silently_command 976,25519 --- > up_command 1013,26461 > up_silently_command 993,25961 509,537c512,539 < symfile.c,792 < _initialize_symfile 932,25083 < add_symbol_file_command 608,15482 < add_syms_addr_command 623,15808 < add_symtab_fns 560,14364 < cashier_psymtab 801,21143 < clear_complaints 742,18955 < clear_symtab_users_once 779,20495 < compare_misc_functions 267,6945 < compare_symbols 114,3353 < complain 716,18361 < condense_misc_bunches 298,7636 < discard_misc_bunches 281,7265 < fill_in_vptr_fieldno 683,17484 < free_named_symtabs 853,22812 < init_misc_bunches 236,6178 < load_command 598,15306 < obconcat 200,5367 < obsavestring 178,4867 < prim_record_misc_function 244,6283 < psymtab_to_symtab 355,9054 < reread_symbols 657,16651 < sort_all_symtab_syms 163,4547 < sort_block_syms 135,3974 < sort_symtab_syms 146,4223 < symbol_file_add 384,9860 < symbol_file_command 479,12367 < symfile_init 573,14688 < symfile_open 521,13522 --- > symfile.c,760 > _initialize_symfile 935,25356 > add_symbol_file_command 617,15775 > add_symtab_fns 567,14564 > cashier_psymtab 800,21311 > clear_complaints 741,19123 > clear_symtab_users_once 778,20663 > compare_misc_functions 276,7184 > compare_symbols 123,3592 > complain 715,18529 > condense_misc_bunches 307,7875 > discard_misc_bunches 290,7504 > fill_in_vptr_fieldno 681,17561 > free_named_symtabs 852,22980 > init_misc_bunches 245,6417 > load_command 605,15506 > obconcat 209,5606 > obsavestring 187,5106 > prim_record_misc_function 253,6522 > psymtab_to_symtab 364,9293 > reread_symbols 655,16728 > sort_all_symtab_syms 172,4786 > sort_block_syms 144,4213 > sort_symtab_syms 155,4462 > symbol_file_add 391,10064 > symbol_file_command 486,12567 > symfile_init 580,14888 > symfile_open 528,13722 541,546c543,548 < _initialize_utils 1224,28296 < bcmp 1143,27168 < bcopy 1137,27095 < bzero 1148,27232 < concat 464,10388 < discard_cleanups 147,3947 --- > _initialize_utils 1231,28503 > bcmp 1148,27325 > bcopy 1142,27252 > bzero 1153,27389 > concat 464,10425 > discard_cleanups 147,3984 548,562c550,564 < error 197,4998 < fatal 219,5441 < fatal_dump_core 238,5798 < fprint_symbol 1118,26737 < void fprintf_filtered 987,24134 < fprintf_filtered 1030,25176 < fputs_demangled 891,21393 < fputs_filtered 784,18550 < free_current_contents 185,4704 < getwd 1155,27295 < index 1162,27358 < init_malloc 263,6372 < init_malloc 273,6497 < insque 1190,27717 < lines_to_list 693,16157 --- > error 197,5035 > fatal 219,5478 > fatal_dump_core 238,5835 > fprint_symbol 1123,26894 > void fprintf_filtered 992,24291 > fprintf_filtered 1035,25333 > fputs_demangled 896,21550 > fputs_filtered 789,18707 > free_current_contents 185,4741 > getwd 1160,27452 > index 1167,27515 > init_malloc 263,6409 > init_malloc 273,6534 > insque 1195,27874 > lines_to_list 693,16194 564,588c566,590 < malloc_botch 267,6430 < myread 417,9429 < n_spaces 1083,26155 < parse_escape 548,12570 < perror_with_name 325,7460 < print_spaces 476,10630 < print_spaces_filtered 1106,26512 < print_sys_errmsg 356,8208 < printchar 618,13730 < printf_filtered 1049,25529 < printf_filtered 1063,25738 < prompt_for_continue 719,16787 < puts_filtered 1074,25965 < query 491,11008 < quit 381,8725 < reinitialize_more_filter 730,17022 < remque 1201,27881 < request_quit 400,9148 < restore_cleanups 170,4426 < rindex 1170,27440 < save_cleanups 160,4248 < savestring 443,9931 < set_width_command 703,16403 < strsave 457,10299 < strstr 1211,28094 --- > malloc_botch 267,6467 > myread 417,9466 > n_spaces 1088,26312 > parse_escape 548,12607 > perror_with_name 325,7497 > print_spaces 476,10667 > print_spaces_filtered 1111,26669 > print_sys_errmsg 356,8245 > printchar 618,13767 > printf_filtered 1054,25686 > printf_filtered 1068,25895 > prompt_for_continue 719,16824 > puts_filtered 1079,26122 > query 491,11045 > quit 381,8762 > reinitialize_more_filter 735,17179 > remque 1206,28038 > request_quit 400,9185 > restore_cleanups 170,4463 > rindex 1175,27597 > save_cleanups 160,4285 > savestring 443,9968 > set_width_command 703,16440 > strsave 457,10336 > strstr 1217,28277 590c592 < vfprintf_filtered 984,24068 --- > vfprintf_filtered 989,24225 592,594c594,596 < wrap_here(750,17704 < xmalloc 287,6686 < xrealloc 310,7110 --- > wrap_here(755,17861 > xmalloc 287,6723 > xrealloc 310,7147 645c647 < _initialize_valprint 1882,50635 --- > _initialize_valprint 1882,50638 652,663c654,665 < set_input_radix 1793,48822 < set_output_radix 1808,49120 < set_print 1863,50285 < set_radix 1841,49834 < show_print 1874,50513 < type_print 1228,33631 < type_print_1 1240,33862 < type_print_base 1543,42019 < type_print_derivation_info 1308,35796 < type_print_method_args 1270,34804 < type_print_varspec_prefix 1355,37032 < type_print_varspec_suffix 1438,39157 --- > set_input_radix 1793,48825 > set_output_radix 1808,49123 > set_print 1863,50288 > set_radix 1841,49837 > show_print 1874,50516 > type_print 1228,33634 > type_print_1 1240,33865 > type_print_base 1543,42022 > type_print_derivation_info 1308,35799 > type_print_method_args 1270,34807 > type_print_varspec_prefix 1355,37035 > type_print_varspec_suffix 1438,39160 669,670c671,672 < #define USE_STRUCT_CONVENTION(1511,42536 < _initialize_values 1583,44620 --- > #define USE_STRUCT_CONVENTION(1510,42510 > _initialize_values 1582,44594 674,675c676,677 < baseclass_addr 1142,31691 < check_stub_method 1235,34237 --- > baseclass_addr 1141,31656 > check_stub_method 1234,34206 681c683 < modify_field 1366,37974 --- > modify_field 1365,37943 686c688 < set_return_value 1553,43886 --- > set_return_value 1552,43860 690c692 < unpack_field_as_long 1336,37070 --- > unpack_field_as_long 1335,37039 693c695 < using_struct_return 1528,43249 --- > using_struct_return 1527,43223 697c699 < value_being_returned 1479,41564 --- > value_being_returned 1478,41538 702,704c704,706 < value_from_double 1437,40090 < value_from_long 1401,39040 < value_from_vtable_info 1055,29181 --- > value_from_double 1436,40064 > value_from_long 1400,39014 > value_from_vtable_info 1054,29146 709c711 < value_static_field 1080,29958 --- > value_static_field 1079,29923 719c721 < _initialize_expread 1982,46790 --- > _initialize_expread 1983,46805 722c724 < copy_name 1641,38969 --- > copy_name 1642,38984 740c742 < length_of_subexp 1675,39873 --- > length_of_subexp 1676,39888 742,743c744,745 < parse_c_1 1882,44577 < parse_c_expression 1928,45734 --- > parse_c_1 1883,44592 > parse_c_expression 1929,45749 745,750c747,752 < pop_type 1965,46534 < pop_type_int 1973,46652 < prefixify_expression 1655,39305 < prefixify_subexp 1761,41505 < push_type 1939,45943 < push_type_int 1952,46237 --- > pop_type 1966,46549 > pop_type_int 1974,46667 > prefixify_expression 1656,39320 > prefixify_subexp 1762,41520 > push_type 1940,45958 > push_type_int 1953,46252 763c765 < yyerror 1631,38795 --- > yyerror 1632,38810 777,780c779,782 < do_arg 744,15466 < do_args 787,16294 < do_type 419,9975 < get_count 387,9459 --- > do_arg 741,15424 > do_args 784,16252 > do_type 416,9933 > get_count 384,9417 783,795c785,797 < munge_function_name 852,17564 < remember_type 758,15716 < string_append 970,19856 < string_appendn 997,20238 < string_appends 984,20058 < string_clear 956,19719 < string_delete 938,19505 < string_empty 963,19783 < string_init 949,19640 < string_need 915,19128 < string_prepend 1010,20412 < string_prependn 1031,20715 < string_prepends 1021,20574 --- > munge_function_name 849,17522 > remember_type 755,15674 > string_append 967,19814 > string_appendn 994,20196 > string_appends 981,20016 > string_clear 953,19677 > string_delete 935,19463 > string_empty 960,19741 > string_init 946,19598 > string_need 912,19086 > string_prepend 1007,20370 > string_prependn 1028,20673 > string_prepends 1018,20532 804,825c806,827 < _initialize_targets 525,13755 < add_target 93,2823 < cleanup_target 259,6653 < default_terminal_info 171,4621 < ignore 132,4046 < kill_or_be_killed 213,5643 < maybe_kill_then_attach 237,6161 < maybe_kill_then_create_inferior 246,6320 < nomemory 138,4087 < noprocess 155,4369 < nosymbol 162,4471 < pop_target 385,10357 < push_target 325,9053 < target_command 83,2626 < target_info 472,12570 < target_preopen 505,13250 < target_read_memory 404,11052 < target_write_memory 413,11215 < target_xfer_memory 422,11380 < tcomplain 148,4252 < unpush_target 362,9957 < upstack_create_inferior 185,5010 --- > _initialize_targets 520,13581 > add_target 92,2778 > cleanup_target 254,6493 > default_terminal_info 170,4576 > ignore 131,4001 > kill_or_be_killed 212,5598 > maybe_kill_then_attach 232,6001 > maybe_kill_then_create_inferior 241,6160 > nomemory 137,4042 > noprocess 154,4324 > nosymbol 161,4426 > pop_target 379,10159 > push_target 319,8855 > target_command 82,2581 > target_info 467,12395 > target_preopen 500,13076 > target_read_memory 398,10854 > target_write_memory 407,11017 > target_xfer_memory 416,11182 > tcomplain 147,4207 > unpush_target 356,9759 > upstack_create_inferior 184,4965 828,835c830,837 < _initialize_inftarg 192,5445 < child_detach 82,2704 < child_files_info 153,4319 < child_open 161,4482 < child_prepare_to_store 116,3572 < child_wait 52,1882 < host_convert_from_virtual 142,4101 < host_convert_to_virtual 129,3835 --- > _initialize_inftarg 193,5429 > child_detach 82,2679 > child_files_info 153,4294 > child_open 161,4457 > child_prepare_to_store 116,3547 > child_wait 52,1857 > host_convert_from_virtual 142,4076 > host_convert_to_virtual 129,3810 838,842c840,844 < #define ADD_PSYMBOL_TO_LIST(1628,48859 < ADD_PSYMBOL_TO_PLIST(1589,47645 < #define IGNORE_SYMBOL(170,5889 < #define MAX_OF_TYPE(5061,147094 < #define MIN_OF_TYPE(5062,147149 --- > #define ADD_PSYMBOL_TO_LIST(1632,48954 > ADD_PSYMBOL_TO_PLIST(1593,47740 > #define IGNORE_SYMBOL(170,5899 > #define MAX_OF_TYPE(5073,147353 > #define MIN_OF_TYPE(5074,147408 844,845c846,847 < #define STAB_REG_TO_REGNUM(181,6212 < #define SWAP_SYMBOL(1467,44121 --- > #define STAB_REG_TO_REGNUM(181,6222 > #define SWAP_SYMBOL(1471,44216 847,904c849,906 < _initialize_dbxread 5391,156816 < add_bincl_to_list 1535,46303 < add_new_header_file 567,18171 < add_old_header_file 538,17153 < add_symbol_to_list 731,22482 < add_this_object_header_file 518,16526 < add_undefined_type 3676,110385 < cleanup_undefined_types 3692,110828 < compare_psymbols 2402,71653 < copy_pending 5344,155498 < dbx_alloc_type 678,21369 < dbx_create_type 660,20811 < dbx_lookup_type 606,19277 < dbx_new_init 1335,39705 < dbx_psymtab_to_symtab 2584,76984 < dbx_symfile_init 1370,40890 < dbx_symfile_read 1268,37621 < define_symbol 3276,97683 < end_psymtab 2426,72367 < end_symtab 1101,32814 < error_type 3761,112788 < explicit_lookup_type 710,21950 < fill_symbuf 1455,43816 < find_corresponding_bincl_psymtab 1559,47002 < finish_block 805,24197 < fix_common_block 5366,156052 < free_and_init_header_files 485,15580 < free_bincl_list 1576,47388 < hashname 2945,87809 < init_bincl_list 1524,46050 < init_psymbol_list 1500,45178 < make_blockvector 910,27195 < new_object_header_files 507,16254 < next_symbol_text 1487,44858 < pop_subfile 1217,36278 < process_one_symbol 2969,88164 < process_symbol_pair 2761,81977 < psymtab_to_symtab_1 2516,75219 < push_subfile 1203,35928 < read_args 5302,154443 < read_array_type 4786,140477 < read_dbx_symtab 1642,49532 < read_enum_type 4865,142490 < read_huge_number 4961,145431 < read_number 5262,153669 < read_ofile_symtab 2795,83026 < read_range_type 5065,147223 < read_struct_type 4146,122783 < read_type 3790,113491 < read_type_number 3251,97032 < really_free_pendings 761,23254 < record_line 967,28994 < record_misc_function 1234,36542 < scan_file_globals 2706,80568 < start_psymtab 2358,70534 < start_subfile 1037,30863 < start_symtab 998,29781 < virtual_context 4104,121669 --- > _initialize_dbxread 5403,157075 > add_bincl_to_list 1539,46398 > add_new_header_file 567,18181 > add_old_header_file 538,17163 > add_symbol_to_list 731,22492 > add_this_object_header_file 518,16536 > add_undefined_type 3685,110571 > cleanup_undefined_types 3701,111014 > compare_psymbols 2406,71748 > copy_pending 5356,155757 > dbx_alloc_type 678,21379 > dbx_create_type 660,20821 > dbx_lookup_type 606,19287 > dbx_new_init 1339,39800 > dbx_psymtab_to_symtab 2591,77140 > dbx_symfile_init 1374,40985 > dbx_symfile_read 1272,37716 > define_symbol 3285,97869 > end_psymtab 2433,72523 > end_symtab 1101,32824 > error_type 3770,112974 > explicit_lookup_type 710,21960 > fill_symbuf 1459,43911 > find_corresponding_bincl_psymtab 1563,47097 > finish_block 805,24207 > fix_common_block 5378,156311 > free_and_init_header_files 485,15590 > free_bincl_list 1580,47483 > hashname 2953,87980 > init_bincl_list 1528,46145 > init_psymbol_list 1504,45273 > make_blockvector 910,27205 > new_object_header_files 507,16264 > next_symbol_text 1491,44953 > pop_subfile 1217,36288 > process_one_symbol 2977,88335 > process_symbol_pair 2769,82148 > psymtab_to_symtab_1 2523,75375 > push_subfile 1203,35938 > read_args 5314,154702 > read_array_type 4798,140732 > read_dbx_symtab 1646,49627 > read_enum_type 4877,142745 > read_huge_number 4973,145690 > read_number 5274,153928 > read_ofile_symtab 2803,83197 > read_range_type 5077,147482 > read_struct_type 4155,122969 > read_type 3799,113677 > read_type_number 3259,97203 > really_free_pendings 761,23264 > record_line 967,29004 > record_misc_function 1234,36552 > scan_file_globals 2713,80724 > start_psymtab 2362,70629 > start_subfile 1037,30873 > start_symtab 998,29791 > virtual_context 4113,121855 907c909 < #define L_LNNO32(1335,36793 --- > #define L_LNNO32(1340,36841 909c911 < _initialize_coffread 2034,55089 --- > _initialize_coffread 2040,55154 913c915 < coff_new_init 767,22130 --- > coff_new_init 768,22145 915c917 < coff_symfile_read 693,19947 --- > coff_symfile_read 694,19962 917,919c919,921 < decode_base_type 1722,47091 < decode_function_type 1707,46746 < decode_type 1639,45108 --- > decode_base_type 1727,47141 > decode_function_type 1712,46796 > decode_type 1644,45156 921c923 < enter_linenos 1339,36849 --- > enter_linenos 1344,36897 924,929c926,931 < free_stringtab 1240,34700 < getfilename 1268,35200 < getsymname 1248,34796 < hashname 1373,37777 < init_lineno 1312,36379 < init_stringtab 1199,33735 --- > free_stringtab 1241,34715 > getfilename 1269,35215 > getsymname 1249,34811 > hashname 1378,37825 > init_lineno 1313,36394 > init_stringtab 1200,33750 931,938c933,940 < patch_opaque_types 1421,38937 < patch_type 1394,38057 < process_coff_symbol 1485,40682 < read_coff_symtab 791,22827 < read_enum_type 1933,52205 < read_file_hdr 1098,31393 < read_one_sym 1161,32604 < read_struct_type 1837,49710 --- > patch_opaque_types 1426,38985 > patch_type 1399,38105 > process_coff_symbol 1490,40730 > read_coff_symtab 792,22842 > read_enum_type 1939,52270 > read_file_hdr 1099,31408 > read_one_sym 1162,32619 > read_struct_type 1842,49760 946c948 < ieee_test 131,4258 --- > ieee_test 131,4252 1143,1154c1145,1155 < exec.c,286 < _initialize_exec(386,10682 < add_to_section_table 174,4693 < build_section_table 193,5254 < exec_close 66,1700 < exec_file_command 76,1820 < exec_files_info 313,8637 < exec_xfer_memory 286,7853 < file_command 158,4269 < else if 303,8370 < set_section_command 326,8946 < xfer_memory 232,6474 --- > exec.c,259 > _initialize_exec(373,10360 > add_to_section_table 175,4664 > build_section_table 195,5252 > exec_close 61,1534 > exec_file_command 76,1779 > exec_files_info 300,8296 > file_command 159,4240 > else if 290,8029 > set_section_command 313,8613 > xfer_memory 234,6473 1247,1265c1248,1266 < #define BITMASK(116,3808 < #define EXTRACT_FIELD(117,3870 < #define MEMA_OFFSET(123,4163 < #define MEM_SRCDST(122,4109 < #define NEXT_PROLOGUE_INSN(131,4523 < #define REG_SRC1(119,3948 < #define REG_SRC2(120,4001 < #define REG_SRCDST(121,4055 < _initialize_i960_tdep 643,21423 < check_host(46,1537 < examine_prologue 135,4657 < frame_args_address 394,13658 < frame_find_saved_regs 324,11123 < frame_struct_result_address 425,14534 < leafproc_return 464,15941 < pop_frame 535,18033 < print_fault(590,19872 < saved_pc_after_call 519,17713 < skip_prologue 301,10401 --- > #define BITMASK(116,3802 > #define EXTRACT_FIELD(117,3864 > #define MEMA_OFFSET(123,4157 > #define MEM_SRCDST(122,4103 > #define NEXT_PROLOGUE_INSN(131,4517 > #define REG_SRC1(119,3942 > #define REG_SRC2(120,3995 > #define REG_SRCDST(121,4049 > _initialize_i960_tdep 643,21417 > check_host(46,1531 > examine_prologue 135,4651 > frame_args_address 394,13652 > frame_find_saved_regs 324,11117 > frame_struct_result_address 425,14528 > leafproc_return 464,15935 > pop_frame 535,18027 > print_fault(590,19866 > saved_pc_after_call 519,17707 > skip_prologue 301,10395 1268,1270c1269,1271 < #define CANNOT_STORE_REGISTER(249,6018 < _initialize_kernel_u_addr 166,3922 < void _initialize_kernel_u_addr 194,4676 --- > #define CANNOT_STORE_REGISTER(250,6065 > _initialize_kernel_u_addr 167,3969 > void _initialize_kernel_u_addr 195,4723 1274c1275 < child_xfer_memory 327,8189 --- > child_xfer_memory 328,8236 1276,1277c1277,1278 < fetch_inferior_registers 237,5752 < fetch_register 215,5202 --- > fetch_inferior_registers 238,5799 > fetch_register 216,5249 1280,1281c1281,1282 < #define offsetof(203,4854 < store_inferior_registers 257,6241 --- > #define offsetof(204,4901 > store_inferior_registers 258,6288 1338c1339 < mips-tdep.c,937 --- > mips-tdep.c,930 1357,1358c1358,1359 < isa_NAN(624,20643 < mips_do_registers_info(583,19706 --- > isa_NAN(631,20824 > mips_do_registers_info 585,19756 1360c1361 < mips_frame_num_args(604,20197 --- > mips_frame_num_args(611,20378 1363c1364 < static mips_print_register(539,18424 --- > mips_print_register(540,18431 1366c1367 < CORE_ADDR mips_skip_prologue(647,21266 --- > CORE_ADDR mips_skip_prologue(654,21447 1464,1466c1465,1467 < CORE_ADDR frame_args_addr 107,3452 < CORE_ADDR frame_locals_address 82,2608 < pyr_do_registers_info 51,1798 --- > CORE_ADDR frame_args_addr 109,3509 > CORE_ADDR frame_locals_address 84,2665 > pyr_do_registers_info 52,1831 1475,1585c1476,1586 < _initialize_remote_eb 936,23188 < int damn_b 289,6803 < eb_close 405,9526 < eb_detach 433,10254 < eb_fetch_register 697,16844 < eb_fetch_registers 603,14276 < eb_files_info 805,19776 < eb_open 307,7212 < eb_prepare_to_store 785,19380 < eb_read_inferior_memory(839,20594 < eb_resume 444,10485 < eb_start 240,5918 < eb_store_register 756,18450 < eb_store_registers 717,17242 < eb_timer 214,5225 < eb_wait 485,11395 < eb_write_inferior_memory 814,20023 < eb_xfer_inferior_memory 792,19499 < expect 98,2749 < expect_prompt 135,3639 < get_hex_byte 174,4550 < get_hex_digit 148,4023 < get_hex_regs 187,4801 < get_reg_name 577,13414 < readchar 67,2130 < < remote-nindy.c,750 < _initialize_nindy 961,25625 < cleanup(183,5926 < dcache_alloc 713,19261 < dcache_fetch 735,19735 < dcache_flush 657,17984 < dcache_hit 674,18281 < dcache_init 789,21076 < dcache_poke 756,20269 < dcache_value 696,18696 < nindy_before_main_loop 895,23713 < nindy_close 198,6217 < nindy_create_inferior 803,21355 < nindy_detach 251,7408 < nindy_fetch_registers(478,12834 < nindy_fetch_word 550,15164 < nindy_files_info 261,7554 < nindy_kill 867,22862 < nindy_load(279,8236 < nindy_mourn_inferior 881,23191 < nindy_open 215,6594 < nindy_prepare_to_store(508,13767 < nindy_resume 340,9462 < nindy_store_registers(514,13837 < nindy_store_word 560,15337 < nindy_wait(363,10000 < nindy_xfer_inferior_memory(576,15829 < non_dle(323,9192 < reset_command(853,22583 < restore_tty(165,5648 < < remote-vx.c,1115 < _initialize_vx 1785,48527 < add_symbol_stub 1350,37272 < find_white_space 616,17508 < net_break 139,4306 < net_check_for_fp 1158,32018 < net_clnt_call 1695,45950 < net_connect 1174,32408 < net_get_boot_file 1097,30373 < net_get_symbols 1113,30809 < net_load 96,2931 < net_ptrace_clnt_call 1074,29737 < net_quit 661,18344 < net_step 1041,29059 < net_wait 643,17942 < parse_args 561,16152 < skip_white_space 603,17219 < sleep_ms 1213,33589 < symbol_stub 1341,37143 < vx_attach 1465,40440 < vx_call_function 193,5688 < vx_call_function 396,11746 < vx_close 1715,46335 < vx_convert_from_virtual 1666,45360 < vx_convert_to_virtual 1631,44635 < vx_create_inferior 495,14423 < vx_detach 1538,42309 < vx_files_info 950,26899 < vx_insert_breakpoint 168,5014 < vx_kill 1576,43226 < vx_load_command 1009,28228 < vx_lookup_symbol 1132,31374 < vx_mourn_inferior 999,28035 < vx_open 1367,37702 < vx_prepare_to_store 796,22312 < vx_proc_close 1611,44098 < vx_proc_open 1730,46626 < vx_read_register 683,18769 < vx_remove_breakpoint 177,5164 < vx_resume 969,27272 < vx_run_files_info 958,27060 < vx_wait 1241,34472 < vx_write_register 807,22586 < vx_xfer_memory 902,25591 < < solib.c,225 < _initialize_solib(339,9501 < clear_solib(322,9195 < struct so_list *find_solib(124,3793 < void solib_add(244,7228 < solib_address(305,8842 < static void solib_info(282,8235 < solib_map_sections(62,1722 < solib_xfer_memory 224,6781 --- > _initialize_remote_eb 937,23214 > int damn_b 288,6765 > eb_close 404,9488 > eb_detach 432,10216 > eb_fetch_register 696,16806 > eb_fetch_registers 602,14238 > eb_files_info 805,19793 > eb_open 306,7174 > eb_prepare_to_store 784,19342 > eb_read_inferior_memory(839,20611 > eb_resume 443,10447 > eb_start 239,5880 > eb_store_register 755,18412 > eb_store_registers 716,17204 > eb_timer 213,5187 > eb_wait 484,11357 > eb_write_inferior_memory 814,20040 > eb_xfer_inferior_memory 791,19461 > expect 97,2711 > expect_prompt 134,3601 > get_hex_byte 173,4512 > get_hex_digit 147,3985 > get_hex_regs 186,4763 > get_reg_name 576,13376 > readchar 66,2092 > > remote-nindy.c,749 > _initialize_nindy 962,25652 > cleanup(182,5886 > dcache_alloc 713,19279 > dcache_fetch 735,19753 > dcache_flush 657,18002 > dcache_hit 674,18299 > dcache_init 789,21094 > dcache_poke 756,20287 > dcache_value 696,18714 > nindy_before_main_loop 895,23731 > nindy_close 197,6177 > nindy_create_inferior 803,21373 > nindy_detach 250,7368 > nindy_fetch_registers(477,12794 > nindy_fetch_word 549,15126 > nindy_files_info 260,7514 > nindy_kill 867,22880 > nindy_load(278,8196 > nindy_mourn_inferior 881,23209 > nindy_open 214,6554 > nindy_prepare_to_store(507,13728 > nindy_resume 339,9422 > nindy_store_registers(513,13798 > nindy_store_word 559,15299 > nindy_wait(362,9960 > nindy_xfer_inferior_memory(575,15791 > non_dle(322,9152 > reset_command(853,22601 > restore_tty(164,5608 > > remote-vx.c,1116 > _initialize_vx 1788,48579 > add_symbol_stub 1351,37306 > find_white_space 615,17470 > net_break 138,4268 > net_check_for_fp 1159,32052 > net_clnt_call 1696,45984 > net_connect 1175,32442 > net_get_boot_file 1098,30407 > net_get_symbols 1114,30843 > net_load 95,2893 > net_ptrace_clnt_call 1075,29771 > net_quit 660,18306 > net_step 1042,29093 > net_wait 642,17904 > parse_args 560,16114 > skip_white_space 602,17181 > sleep_ms 1214,33623 > symbol_stub 1342,37177 > vx_attach 1466,40474 > vx_call_function 192,5650 > vx_call_function 395,11708 > vx_close 1716,46369 > vx_convert_from_virtual 1667,45394 > vx_convert_to_virtual 1632,44669 > vx_create_inferior 494,14385 > vx_detach 1539,42343 > vx_files_info 951,26933 > vx_insert_breakpoint 167,4976 > vx_kill 1577,43260 > vx_load_command 1010,28262 > vx_lookup_symbol 1133,31408 > vx_mourn_inferior 1000,28069 > vx_open 1368,37736 > vx_prepare_to_store 795,22274 > vx_proc_close 1612,44132 > vx_proc_open 1731,46660 > vx_read_register 682,18731 > vx_remove_breakpoint 176,5126 > vx_resume 970,27306 > vx_run_files_info 959,27094 > vx_wait 1242,34506 > vx_write_register 806,22548 > vx_xfer_memory 901,25553 > > solib.c,226 > _initialize_solib(359,10174 > clear_solib(337,9776 > struct so_list *find_solib(124,3775 > sharedlibrary_command 353,10071 > solib_add 221,6607 > solib_address(320,9423 > static void solib_info(297,8816 > solib_map_sections(62,1716 1592,1597c1593,1598 < sparc-tdep.c,346 < do_restore_insn 271,7927 < do_save_insn 227,6645 < frame_saved_pc 151,4131 < isannulled 380,11032 < setup_arbitrary_frame 180,5050 --- > sparc-tdep.c,373 > do_restore_insn 275,8025 > do_save_insn 231,6743 > frame_saved_pc 155,4196 > isannulled 391,11434 > setup_arbitrary_frame 184,5115 1599,1600c1600,1601 < skip_prologue 292,8524 < sparc_extract_struct_value_address 137,3857 --- > skip_prologue 302,8867 > sparc_extract_struct_value_address 141,3922 1602,1604c1603,1606 < sparc_frame_find_saved_regs 443,12937 < sparc_pop_frame 556,17200 < sparc_push_dummy_frame 519,15774 --- > sparc_frame_find_saved_regs 454,13339 > sparc_pc_adjust(622,19484 > sparc_pop_frame 567,17602 > sparc_push_dummy_frame 530,16176 2021,2047c2023,2048 < target.h,999 < #define target_add_syms(315,11963 < #define target_attach(166,6434 < #define target_call_function(325,12370 < #define target_close(161,6310 < #define target_convert_from_virtual(222,8639 < #define target_convert_to_virtual(216,8423 < #define target_create_inferior(345,13356 < #define target_detach(176,6911 < #define target_fetch_registers(194,7567 < #define target_files_info(243,9379 < #define target_insert_breakpoint(252,9726 < #define target_kill(301,11394 < #define target_load(308,11658 < #define target_lookup_symbol(336,12953 < #define target_mourn_inferior(350,13532 < #define target_open(150,5783 < #define target_prepare_to_store(210,8244 < #define target_remove_breakpoint(260,10047 < #define target_resume(183,7196 < #define target_store_registers(201,7863 < #define target_terminal_inferior(272,10453 < #define target_terminal_info(296,11240 < #define target_terminal_init(266,10258 < #define target_terminal_ours(290,11079 < #define target_terminal_ours_for_output(283,10844 < #define target_wait(189,7428 --- > target.h,964 > #define target_attach(171,6557 > #define target_call_function(323,12194 > #define target_close(166,6433 > #define target_convert_from_virtual(227,8762 > #define target_convert_to_virtual(221,8546 > #define target_create_inferior(343,13180 > #define target_detach(181,7034 > #define target_fetch_registers(199,7690 > #define target_files_info(248,9502 > #define target_insert_breakpoint(257,9863 > #define target_kill(306,11531 > #define target_load(313,11795 > #define target_lookup_symbol(334,12777 > #define target_mourn_inferior(348,13356 > #define target_open(155,5906 > #define target_prepare_to_store(215,8367 > #define target_remove_breakpoint(265,10184 > #define target_resume(188,7319 > #define target_store_registers(206,7986 > #define target_terminal_inferior(277,10590 > #define target_terminal_info(301,11377 > #define target_terminal_init(271,10395 > #define target_terminal_ours(295,11216 > #define target_terminal_ours_for_output(288,10981 > #define target_wait(194,7551 2062,2073c2063,2074 < #define EXTRACT_RETURN_VALUE(272,9337 < #define EXTRACT_STRUCT_VALUE_ADDRESS(289,9932 < #define FRAMELESS_FUNCTION_INVOCATION(322,11177 < #define FRAME_ARGS_ADDRESS(327,11358 < #define FRAME_CHAIN(307,10633 < #define FRAME_CHAIN_COMBINE(315,10885 < #define FRAME_CHAIN_VALID(312,10770 < #define FRAME_FIND_SAVED_REGS(352,12236 < #define FRAME_FIND_SAVED_REGS(420,15910 < #define FRAME_LOCALS_ADDRESS(329,11404 < #define FRAME_NUM_ARGS(337,11692 < #define FRAME_SAVED_PC(325,11281 --- > #define EXTRACT_RETURN_VALUE(272,9356 > #define EXTRACT_STRUCT_VALUE_ADDRESS(289,9951 > #define FRAMELESS_FUNCTION_INVOCATION(322,11196 > #define FRAME_ARGS_ADDRESS(327,11377 > #define FRAME_CHAIN(307,10652 > #define FRAME_CHAIN_COMBINE(315,10904 > #define FRAME_CHAIN_VALID(312,10789 > #define FRAME_FIND_SAVED_REGS(352,12255 > #define FRAME_FIND_SAVED_REGS(420,15929 > #define FRAME_LOCALS_ADDRESS(329,11423 > #define FRAME_NUM_ARGS(337,11711 > #define FRAME_SAVED_PC(325,11300 2076c2077 < #define REGISTER_BYTE(190,6450 --- > #define REGISTER_BYTE(190,6469 2078,2082c2079,2083 < #define REGISTER_CONVERTIBLE(213,7068 < #define REGISTER_CONVERT_TO_RAW(168,5610 < #define REGISTER_CONVERT_TO_RAW(223,7380 < #define REGISTER_CONVERT_TO_VIRTUAL(157,5285 < #define REGISTER_CONVERT_TO_VIRTUAL(218,7202 --- > #define REGISTER_CONVERTIBLE(213,7087 > #define REGISTER_CONVERT_TO_RAW(168,5618 > #define REGISTER_CONVERT_TO_RAW(223,7399 > #define REGISTER_CONVERT_TO_VIRTUAL(157,5282 > #define REGISTER_CONVERT_TO_VIRTUAL(218,7221 2084c2085 < #define REGISTER_RAW_SIZE(195,6615 --- > #define REGISTER_RAW_SIZE(195,6634 2086,2088c2087,2089 < #define REGISTER_VIRTUAL_SIZE(200,6770 < #define REGISTER_VIRTUAL_TYPE(181,6104 < #define REGISTER_VIRTUAL_TYPE(228,7545 --- > #define REGISTER_VIRTUAL_SIZE(200,6789 > #define REGISTER_VIRTUAL_TYPE(181,6123 > #define REGISTER_VIRTUAL_TYPE(228,7564 2091,2092c2092,2093 < #define STORE_RETURN_VALUE(281,9622 < #define STORE_STRUCT_RETURN(263,8972 --- > #define STORE_RETURN_VALUE(281,9641 > #define STORE_STRUCT_RETURN(263,8991 2097,2108c2098,2109 < #define EXTRACT_RETURN_VALUE(231,8433 < #define EXTRACT_STRUCT_VALUE_ADDRESS(244,9030 < #define FRAMELESS_FUNCTION_INVOCATION(310,11678 < #define FRAME_ARGS_ADDRESS(326,12335 < #define FRAME_ARGS_ADDRESS_CORRECT(334,12695 < #define FRAME_CHAIN(293,10992 < #define FRAME_CHAIN_COMBINE(296,11082 < #define FRAME_FIND_SAVED_REGS(349,13140 < #define FRAME_LOCALS_ADDRESS(336,12764 < #define FRAME_NUM_ARGS(341,12913 < #define FRAME_SAVED_PC(319,12034 < #define INIT_EXTRA_FRAME_INFO(288,10800 --- > #define EXTRACT_RETURN_VALUE(231,8451 > #define EXTRACT_STRUCT_VALUE_ADDRESS(244,9048 > #define FRAMELESS_FUNCTION_INVOCATION(310,11696 > #define FRAME_ARGS_ADDRESS(326,12353 > #define FRAME_ARGS_ADDRESS_CORRECT(334,12713 > #define FRAME_CHAIN(293,11010 > #define FRAME_CHAIN_COMBINE(296,11100 > #define FRAME_FIND_SAVED_REGS(349,13158 > #define FRAME_LOCALS_ADDRESS(336,12782 > #define FRAME_NUM_ARGS(341,12931 > #define FRAME_SAVED_PC(319,12052 > #define INIT_EXTRA_FRAME_INFO(288,10818 2110c2111 < #define PRINT_RANDOM_SIGNAL(357,13413 --- > #define PRINT_RANDOM_SIGNAL(357,13431 2113c2114 < #define REGISTER_CONVERT_TO_RAW(189,6793 --- > #define REGISTER_CONVERT_TO_RAW(189,6802 2118c2119 < #define REGISTER_VIRTUAL_TYPE(203,7169 --- > #define REGISTER_VIRTUAL_TYPE(203,7187 2121,2123c2122,2124 < #define STORE_RETURN_VALUE(252,9349 < #define STORE_STRUCT_RETURN(258,9605 < #define USE_STRUCT_CONVENTION(222,8056 --- > #define STORE_RETURN_VALUE(252,9367 > #define STORE_STRUCT_RETURN(258,9623 > #define USE_STRUCT_CONVENTION(222,8074 2125,2126c2126,2127 < tm-sunos.h,102 < #define DISABLE_UNSETTABLE_BREAK(27,1101 --- > tm-sunos.h,68 > #define DISABLE_UNSETTABLE_BREAK(26,1010 2128d2128 < #define SOLIB_XFER_MEMORY(23,910 2342,2343c2342,2343 < #define FIX_CALL_DUMMY(136,5059 < #define IN_SIGTRAMP(43,1579 --- > #define FIX_CALL_DUMMY(136,5065 > #define IN_SIGTRAMP(43,1585 2414,2426c2414,2426 < #define EXTRACT_RETURN_VALUE(211,7069 < #define EXTRACT_STRUCT_VALUE_ADDRESS(224,7708 < #define FIX_CALL_DUMMY(333,11686 < #define FRAMELESS_FUNCTION_INVOCATION(258,8917 < #define FRAME_ARGS_ADDRESS(264,9069 < #define FRAME_CHAIN(243,8367 < #define FRAME_CHAIN_COMBINE(248,8556 < #define FRAME_CHAIN_VALID(245,8439 < #define FRAME_FIND_SAVED_REGS(283,9747 < #define FRAME_LOCALS_ADDRESS(266,9113 < #define FRAME_NUM_ARGS(271,9250 < #define FRAME_SAVED_PC(262,9009 < #define INIT_EXTRA_FRAME_INFO(363,12968 --- > #define EXTRACT_RETURN_VALUE(211,7077 > #define EXTRACT_STRUCT_VALUE_ADDRESS(224,7716 > #define FIX_CALL_DUMMY(333,11694 > #define FRAMELESS_FUNCTION_INVOCATION(258,8925 > #define FRAME_ARGS_ADDRESS(264,9077 > #define FRAME_CHAIN(243,8375 > #define FRAME_CHAIN_COMBINE(248,8564 > #define FRAME_CHAIN_VALID(245,8447 > #define FRAME_FIND_SAVED_REGS(283,9755 > #define FRAME_LOCALS_ADDRESS(266,9121 > #define FRAME_NUM_ARGS(271,9258 > #define FRAME_SAVED_PC(262,9017 > #define INIT_EXTRA_FRAME_INFO(363,12976 2429,2438c2429,2438 < #define MK_OP(305,10496 < #define PUSH_ARGUMENTS(294,10120 < #define REGISTER_BYTE(160,5546 < #define REGISTER_CONVERTIBLE(183,6153 < #define REGISTER_CONVERT_TO_RAW(194,6468 < #define REGISTER_CONVERT_TO_VIRTUAL(188,6287 < #define REGISTER_RAW_SIZE(165,5705 < #define REGISTER_U_ADDR(139,4709 < #define REGISTER_VIRTUAL_SIZE(170,5855 < #define REGISTER_VIRTUAL_TYPE(200,6636 --- > #define MK_OP(305,10504 > #define PUSH_ARGUMENTS(294,10128 > #define REGISTER_BYTE(160,5554 > #define REGISTER_CONVERTIBLE(183,6161 > #define REGISTER_CONVERT_TO_RAW(194,6476 > #define REGISTER_CONVERT_TO_VIRTUAL(188,6295 > #define REGISTER_RAW_SIZE(165,5713 > #define REGISTER_U_ADDR(139,4717 > #define REGISTER_VIRTUAL_SIZE(170,5863 > #define REGISTER_VIRTUAL_TYPE(200,6644 2441,2443c2441,2443 < #define STORE_RETURN_VALUE(217,7340 < #define STORE_STRUCT_RETURN(204,6822 < #define USE_STRUCT_CONVENTION(227,7827 --- > #define STORE_RETURN_VALUE(217,7348 > #define STORE_STRUCT_RETURN(204,6830 > #define USE_STRUCT_CONVENTION(227,7835 2517,2530c2517,2530 < #define EXTRACT_RETURN_VALUE(270,9967 < #define EXTRACT_STRUCT_VALUE_ADDRESS(284,10569 < #define FIX_CALL_DUMMY(524,19830 < #define FRAME_ARGS_ADDRESS(361,13333 < #define FRAME_ARGS_ADDRESS(370,13539 < #define FRAME_CHAIN(324,11896 < #define FRAME_CHAIN_COMBINE(332,12143 < #define FRAME_CHAIN_VALID(327,11983 < #define FRAME_FIND_SAVED_REGS(410,15141 < #define FRAME_LOCALS_ADDRESS(364,13389 < #define FRAME_LOCALS_ADDRESS(373,13633 < #define FRAME_NUM_ARGS(381,13800 < #define FRAME_SAVED_PC(349,12790 < #define INIT_EXTRA_FRAME_INFO(296,10853 --- > #define EXTRACT_RETURN_VALUE(270,9975 > #define EXTRACT_STRUCT_VALUE_ADDRESS(284,10577 > #define FIX_CALL_DUMMY(524,19838 > #define FRAME_ARGS_ADDRESS(361,13341 > #define FRAME_ARGS_ADDRESS(370,13547 > #define FRAME_CHAIN(324,11904 > #define FRAME_CHAIN_COMBINE(332,12151 > #define FRAME_CHAIN_VALID(327,11991 > #define FRAME_FIND_SAVED_REGS(410,15149 > #define FRAME_LOCALS_ADDRESS(364,13397 > #define FRAME_LOCALS_ADDRESS(373,13641 > #define FRAME_NUM_ARGS(381,13808 > #define FRAME_SAVED_PC(349,12798 > #define INIT_EXTRA_FRAME_INFO(296,10861 2532,2539c2532,2539 < #define REGISTER_BYTE(210,8086 < #define REGISTER_CONVERTIBLE(233,8707 < #define REGISTER_CONVERT_TO_RAW(244,9022 < #define REGISTER_CONVERT_TO_VIRTUAL(238,8841 < #define REGISTER_IN_WINDOW_P(204,7927 < #define REGISTER_RAW_SIZE(215,8252 < #define REGISTER_VIRTUAL_SIZE(220,8409 < #define REGISTER_VIRTUAL_TYPE(250,9190 --- > #define REGISTER_BYTE(210,8094 > #define REGISTER_CONVERTIBLE(233,8715 > #define REGISTER_CONVERT_TO_RAW(244,9030 > #define REGISTER_CONVERT_TO_VIRTUAL(238,8849 > #define REGISTER_IN_WINDOW_P(204,7935 > #define REGISTER_RAW_SIZE(215,8260 > #define REGISTER_VIRTUAL_SIZE(220,8417 > #define REGISTER_VIRTUAL_TYPE(250,9198 2543,2544c2543,2544 < #define STORE_RETURN_VALUE(277,10231 < #define STORE_STRUCT_RETURN(259,9498 --- > #define STORE_RETURN_VALUE(277,10239 > #define STORE_STRUCT_RETURN(259,9506 2546,2573c2546,2573 < tm-sparc.h,1286 < #define ABOUT_TO_RETURN(113,4189 < #define CANNOT_STORE_REGISTER(245,8936 < #define EXTRACT_RETURN_VALUE(257,9399 < #define EXTRACT_STRUCT_VALUE_ADDRESS(288,10874 < #define FIX_CALL_DUMMY(556,21079 < #define FRAMELESS_FUNCTION_INVOCATION(355,13341 < #define FRAME_ARGS_ADDRESS(364,13629 < #define FRAME_CHAIN(342,12836 < #define FRAME_CHAIN_COMBINE(348,13049 < #define FRAME_CHAIN_VALID(345,12932 < #define FRAME_FIND_SAVED_REGS(385,14341 < #define FRAME_LOCALS_ADDRESS(368,13728 < #define FRAME_NUM_ARGS(375,13986 < #define FRAME_SAVED_PC(360,13489 < #define FRAME_STRUCT_ARGS_ADDRESS(366,13675 < #define INIT_EXTRA_FRAME_INFO(335,12622 < #define INVALID_FLOAT(118,4344 < #define PC_ADJUST(82,3266 < #define PRINT_REGISTER_HOOK(579,21916 < #define REGISTER_BYTE(181,7094 < #define REGISTER_CONVERTIBLE(221,8229 < #define REGISTER_CONVERT_TO_RAW(232,8548 < #define REGISTER_CONVERT_TO_VIRTUAL(226,8365 < #define REGISTER_IN_WINDOW_P(193,7555 < #define REGISTER_RAW_SIZE(201,7765 < #define REGISTER_VIRTUAL_SIZE(208,7929 < #define REGISTER_VIRTUAL_TYPE(238,8718 --- > tm-sparc.h,1330 > #define ABOUT_TO_RETURN(118,4468 > #define CANNOT_STORE_REGISTER(250,9215 > #define EXTRACT_RETURN_VALUE(262,9678 > #define EXTRACT_STRUCT_VALUE_ADDRESS(293,11153 > #define FIX_CALL_DUMMY(561,21358 > #define FRAMELESS_FUNCTION_INVOCATION(360,13620 > #define FRAME_ARGS_ADDRESS(369,13908 > #define FRAME_CHAIN(347,13115 > #define FRAME_CHAIN_COMBINE(353,13328 > #define FRAME_CHAIN_VALID(350,13211 > #define FRAME_FIND_SAVED_REGS(390,14620 > #define FRAME_LOCALS_ADDRESS(373,14007 > #define FRAME_NUM_ARGS(380,14265 > #define FRAME_SAVED_PC(365,13768 > #define FRAME_STRUCT_ARGS_ADDRESS(371,13954 > #define INIT_EXTRA_FRAME_INFO(340,12901 > #define INVALID_FLOAT(123,4623 > #define PC_ADJUST(87,3569 > #define PRINT_REGISTER_HOOK(584,22197 > #define REGISTER_BYTE(186,7373 > #define REGISTER_CONVERTIBLE(226,8508 > #define REGISTER_CONVERT_TO_RAW(237,8827 > #define REGISTER_CONVERT_TO_VIRTUAL(231,8644 > #define REGISTER_IN_WINDOW_P(198,7834 > #define REGISTER_RAW_SIZE(206,8044 > #define REGISTER_VIRTUAL_SIZE(213,8208 > #define REGISTER_VIRTUAL_TYPE(243,8997 2575,2579c2575,2580 < #define SAVED_PC_AFTER_CALL(85,3369 < #define SKIP_PROLOGUE(69,2787 < #define STACK_ALIGN(97,3674 < #define STORE_RETURN_VALUE(271,10017 < #define STORE_STRUCT_RETURN(250,9133 --- > #define SAVED_PC_AFTER_CALL(90,3648 > #define SKIP_PROLOGUE(72,3013 > #define SKIP_PROLOGUE_FRAMELESS_P(74,3075 > #define STACK_ALIGN(102,3953 > #define STORE_RETURN_VALUE(276,10296 > #define STORE_STRUCT_RETURN(255,9412 2767,2768c2768,2769 < #define INIT_STACK(83,2971 < #define REGISTER_U_ADDR(40,1448 --- > #define INIT_STACK(88,3157 > #define REGISTER_U_ADDR(45,1634 2916,2920c2917,2921 < DEFUN(checkhdr,45,1533 < DEFUN(freehook,52,1693 < DEFUN(mallochook,63,1892 < DEFUN(mcheck,101,2762 < DEFUN(reallochook,80,2243 --- > DEFUN(checkhdr,46,1548 > DEFUN(freehook,53,1708 > DEFUN(mallochook,64,1907 > DEFUN(mcheck,102,2777 > DEFUN(reallochook,81,2258 diff -r gdb-3.98/gdb/WHATS.NEW gdb-4.0/gdb/WHATS.NEW 5,6c5 < Wide output is wrapped at good places to make the output more < readable. --- > Wide output is wrapped at good places to make the output more readable. 12,14c11,14 < remote system. It also supports debugging of realtime processes < running under VxWorks, using SunRPC Remote Procedure Calls over TCP/IP < to talk to a debugger stub on the target system. --- > remote system. Serial stubs for the m68k and i386 are provided. Gdb > also supports debugging of realtime processes running under VxWorks, > using SunRPC Remote Procedure Calls over TCP/IP to talk to a debugger > stub on the target system. 22c22,23 < There is now a GDB reference card in "gdbrc.tex". --- > There is now a GDB reference card in "doc/refcard.tex". (Make targets > refcard.dvi and refcard.ps are available to format it). diff -r gdb-3.98/gdb/blockframe.c gdb-4.0/gdb/blockframe.c 193a194,198 > #ifdef SKIP_PROLOGUE_FRAMELESS_P > /* This is faster, since only care whether there *is* a prologue, > not how long it is. */ > SKIP_PROLOGUE_FRAMELESS_P (after_prologue); > #else 194a200 > #endif 277a284,285 > if (address == 0) > return 0; diff -r gdb-3.98/gdb/breakpoint.c gdb-4.0/gdb/breakpoint.c 284c284 < if (input_from_terminal_p ()) --- > if (from_tty && input_from_terminal_p ()) 569a570,578 > /* Stub for cleaning up our state if we error-out of a breakpoint command */ > /* ARGSUSED */ > static void > cleanup_executing_breakpoints (ignore) > int ignore; > { > executing_breakpoint_commands = 0; > } > 578a588,591 > struct cleanup *old_chain; > > executing_breakpoint_commands = 1; > old_chain = make_cleanup (cleanup_executing_breakpoints, 0); 583d595 < executing_breakpoint_commands = 1; 602a615 > discard_cleanups (old_chain); 2207c2220 < /* ARGSUED */ --- > /* ARGSUSED */ diff -r gdb-3.98/gdb/coffread.c gdb-4.0/gdb/coffread.c 691a692 > /* ARGSUSED */ 1318a1320,1325 > linetab_offset = offset; > linetab_size = size; > > if (size == 0) > return 0; > 1328,1329d1334 < linetab_offset = offset; < linetab_size = size; 1695c1700 < type = coff_alloc_type (aux->x_sym.x_tagndx); --- > type = coff_alloc_type (aux->x_sym.x_tagndx.l); 1931a1937 > /* ARGSUSED */ Only in gdb-4.0/gdb: config.sub diff -r gdb-3.98/gdb/configure gdb-4.0/gdb/configure 27c27 < # $Id: configure,v 1.22 1991/07/20 01:22:30 rich Exp $ --- > # $Id: configure,v 1.31 1991/08/23 04:50:57 rich Exp $ 57a58 > recursing= 62a64 > commontargets= 70c72 < -ansi | +ansi) --- > -ansi | +a*) 71a74 > clib=clib 76,79d78 < -forcesubdirs | +forcesubdirs | +forcesubdir | +forcesubdi | +forcesubd \ < | +forcesub | +forcesu | +forces | +force | +forc | +for | +fo | +f) < forcesubdirs=${arg} < ;; 85c84 < -gas | +gas | +ga | +g) --- > -gas | +g*) 88c87 < -help | +h | +help) --- > -help | +h*) 91c90 < -nfp | +nfp | +nf | +n) --- > -nfp | +nf*) 94c93 < -norecurse | +norecurse) --- > -norecurse | +no*) 97c96,99 < -rm | +rm) --- > -recursing) > recursing=true > ;; > -rm | +r*) 103c105,108 < -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*) --- > -subdirs | +f* | +su*) > subdirs=${arg} > ;; > -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=*) 105c110 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 111c116 < -template=* | +template=*) --- > -template=* | +template=* | +templat=* | +templa=* | +templ=* | +temp=* | +tem=* | +te=*) 114c119 < +verbose | +verbos | +verbo | +verb | +ver | +ve | +v) --- > -v | -verbose | +v*) 125c130 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 136d140 < echo targets=\"${targets}\" 145c149 < echo) 2>&1 --- > echo) 1>&2 156c160 < echo " +forcesubdirs configure in subdirectories. [in source directories]" ; --- > echo " +subdirs configure in subdirectories. [in source directories]" ; 167c171 < echo "Asking for more than one \"+target\" implies \"+forcesubdirs\". Any other" ; --- > echo "Asking for more than one \"+target\" implies \"+subdirs\". Any other" ; 186c190 < echo "Can't find template ${template}." --- > echo '***' "Can't find template ${template}." 1>&2 207c211 < echo `pwd`/configure.in has no "per-host:" line. --- > echo '***' `pwd`/configure.in has no "per-host:" line. 1>&2 212c216 < echo `pwd`/configure.in has no "per-target:" line. --- > echo '***' `pwd`/configure.in has no "per-target:" line. 1>&2 245c249,252 < echo Rebuilt configure in `pwd` --- > > if [ -n "${verbose}" ] ; then > echo Rebuilt configure in `pwd` > fi 246a254,264 > # Now update config.sub from the template directory. > if echo "$template" | grep -s 'configure$' ; then > cp `echo "$template" | sed s/configure$/config.sub/` ./config.sub.new > # mv config.sub config.sub.old > mv config.sub.new config.sub > > if [ -n "${verbose}" ] ; then > echo Rebuilt config.sub in `pwd` > fi > fi > 271c289 < echo No configure script in `pwd`/$i --- > echo Warning: No configure script in `pwd`/$i 274c292,294 < echo Warning: directory $i is missing. --- > if [ -n "${verbose}" ] ; then > echo Warning: directory $i is missing. > fi 285c305 < echo srctrigger not set in configure.in. `pwd` not configured. --- > echo Warning: srctrigger not set in configure.in. `pwd` not configured. 295a316,320 > result=`/bin/sh ./config.sub ${host}` > host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > host=${host_cpu}-${host_vendor}-${host_os} 300,301c325,422 < if [ ! -f xconfig/${host} ]; then < echo "No such host ${host}" --- > # map host info into gdb names. > > case "${host_cpu}" in > > m68k) > case "${host_vendor}" in > att) gdb_host=3b1 ;; > altos) > case "${host_os}" in > gas) gdb_host=altosgas ;; > *) gdb_host=altos ;; > esac > ;; > hp) > case ${host_os} in > hpux) gdb_host=hp300hpux ;; > bsd) gdb_host=hp300bsd ;; > esac > ;; > > isi) gdb_host=isi ;; > sony) gdb_host=news ;; > sun) > case "${host_os}" in > sunos3) gdb_host=sun3os3 ;; > sunos4) gdb_host=sun3os4 ;; > *) gdb_host=sun3 ;; > esac > ;; > esac > ;; > > m68000) > case "${host_vendor}" in > sun) > case "${host_os}" in > sunos3) gdb_host=sun2os3 ;; > sunos4) gdb_host=sun2os4 ;; > *) gdb_host=sun2 ;; > esac > esac > ;; > > sparc) > case "${host_os}" in > sunos3) gdb_host=sun4os3 ;; > sunos4) gdb_host=sun4os4 ;; > *) gdb_host=sun4 ;; > esac > ;; > > m68030) > case "${host_vendor}" in > sony) gdb_host=news1000 ;; > esac > ;; > > mips) > case "${host_vendor}" in > sony) gdb_host=bigmips ;; > dec) gdb_host=dec3100 ;; > little) gdb_host=littlemips ;; > esac > ;; > > i386) > case "${host_vendor}" in > sun) gdb_host=sun386 ;; > sco) gdb_host=i386sco ;; > sequent) gdb_host=symmetry ;; > *) > case "${host_os}" in > sysv) gdb_host=i386v ;; > sysv32) gdb_host=i386v32 ;; > esac > ;; > esac > ;; > > c1 | c2) gdb_host=convex ;; > > ns32k) > case "${host_vendor}" in > umax) gdb_host=umax ;; > esac > ;; > > arm | vax | m88k | merlin | none | np1 | pn | pyramid | tahoe) gdb_host=${host_cpu} ;; > > ### unhandled hosts > #altosgas > #i386v-g > #i386v32-g > > esac > > if [ ! -f xconfig/${gdb_host} ]; then > echo '***' "Gdb does not support host ${host}" 1>&2 306c427 < hostfile=`awk '$1 == "XM_FILE=" { print $2 }' hostfile=`awk '$1 == "XM_FILE=" { print $2 }' result=`/bin/sh ./config.sub ${target}` > target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > target=${target_cpu}-${target_vendor}-${target_os} 321,322c442,548 < if [ ! -f tconfig/${target} ]; then < echo "No such target ${target}" --- > case "${target_cpu}" in > > m68k) > case "${target_vendor}" in > att) gdb_target=3b1 ;; > altos) gdb_target=altos ;; > hp) > case "${target_os}" in > bsd) gdb_target=hp300bsd ;; > hpux) gdb_target=hp300hpux ;; > esac > ;; > sun) > case "${target_os}" in > sunos3) gdb_target=sun3os3 ;; > sunos4) gdb_target=sun3os4 ;; > *) gdb_target=sun3 ;; > esac > ;; > wrs) gdb_target=vxworks68 ;; > isi) gdb_target=isi ;; > sony) gdb_target=news ;; > esac > ;; > > m68000) > case "${target_vendor}" in > sun) > case "${target_os}" in > sunos3) gdb_target=sun2os3 ;; > sunos4) gdb_target=sun2os4 ;; > *) gdb_target=sun2 ;; > esac > esac > ;; > > m68030) > case "${target_vendor}" in > sony) gdb_target=news1000 ;; > esac > ;; > > none | tahoe | vax | np1 | pn | np1 | pn | pyramid | merlin | m88k) > gdb_target=${target_cpu} ;; > a29k) gdb_target=am29k ;; > arm) gdb_target=${target_cpu} ;; > > mips) > case "${target_vendor}" in > sony) gdb_target=bigmips ;; > dec) gdb_target=dec3100 ;; > little) gdb_target=littlemips ;; > esac > ;; > > c1 | c2) gdb_target=convex ;; > > sparc) > case "${target_vendor}" in > sun) > case "${target_os}" in > sunos3) gdb_target=sun4os3 ;; > sunos4) gdb_target=sun4os4 ;; > *) gdb_target=sun4 ;; > esac > ;; > esac > ;; > > > i386) > case "${target_vendor}" in > sco) gdb_target=i386sco ;; > sun) gdb_target=sun386 ;; > sequent) gdb_target=symmetry ;; > coff) gdb_target=i386v ;; > aout) gdb_target=i386v ;; > *) > case "${target_os}" in > sysv) gdb_target=i386v ;; > sysv32) gdb_target=i386v32 ;; > esac > esac > ;; > > i960) > case "${target_vendor}" in > bout | wrs) gdb_target=vxworks960 ;; > coff | intel) gdb_target=nindy960 ;; > esac > ;; > > ns32k) > case "${target_vendor}" in > utek) gdb_target=umax ;; > esac > ;; > > ### unhandled targets > # altosgas > # i386v-g > # i386v32-g > > esac > > if [ ! -f tconfig/${gdb_target} ]; then > echo '***' "Gdb does not support target ${target}" 1>&2 327c553 < cat xconfig/${host} tconfig/${target} | awk '$1 == "#msg" { --- > cat xconfig/${gdb_host} tconfig/${gdb_target} | awk '$1 == "#msg" { 332c558 < targetfile=`awk '$1 == "TM_FILE=" { print $2 }' targetfile=`awk '$1 == "TM_FILE=" { print $2 }' host_makefile_frag=xconfig/${gdb_host} > target_makefile_frag=tconfig/${gdb_target} 361c587 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 365c591 < if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then --- > if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target- | grep -v Target-independent`" ] ; then 375c601 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 378c604 < echo "${Makefile} already exists in source directory. `pwd` not configured." --- > echo '***' "${Makefile} already exists in source directory. `pwd` not configured." 1>&2 385c611,622 < if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi --- > if [ ! -d ${targetsubdir} ] ; then > if [ -z "${commontargets}" ] ; then > mkdir ${targetsubdir} > else > if [ ! -d Target-independent ] ; then > mkdir Target-independent > fi > > ${symbolic_link} Target-independent ${targetsubdir} > fi # if target independent > fi # if no target dir yet > 392c629 < echo "Configured subdirs exist. `pwd` not configured." --- > echo '***' "Configured subdirs exist. `pwd` not configured." 1>&2 408c645 < echo "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 410c647 < echo "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 413c650 < echo \(At least ${srctrigger} is missing.\) 1>&2 --- > echo '***' \(At least ${srctrigger} is missing.\) 1>&2 427,428c664,665 < echo "${progname}: cannot create a link \"${link}\"," 1>&2 < echo "since the file \"${file}\" does not exist." 1>&2 --- > echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 > echo '***' "since the file \"${file}\" does not exist." 1>&2 438c675 < echo "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 --- > echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 441c678,681 < echo "Linked \"${link}\" to \"${srcdir}/${file}\"." --- > > if [ -n "${verbose}" ] ; then > echo "Linked \"${link}\" to \"${srcdir}/${file}\"." > fi 477c717 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 534c774,776 < echo "Created \"${Makefile}\"" in `pwd`${andusing}. --- > if [ -n "${verbose}" -o -z "${recursing}" ] ; then > echo "Created \"${Makefile}\"" in `pwd`${andusing}. > fi 562d803 < done # for each target 564,629c805,824 < # # Now build a Makefile for this host. < # if [ -n "${forcesubdirs}" ] ; then < # cd ${hostsubdir} < # cat > GNUmakefile << E!O!F < ## Makefile generated by configure for host ${host}. < # < #%: < # for i in ${targets} ; do \ < # $(MAKE) -C Target-\$i \$@ < # < #all clean stage1 stage2 stage3 stage4etags tags TAGS < #E!O!F < # fi < done # for each host < < # If there are subdirectories, then recurse. < < if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi < < # configdirs is not null < for configdir in ${configdirs} ; do < echo Configuring ${configdir}... < specifics= < commons= < < if [ -n "${defaulttargets}" ] ; then < for host in ${hosts} ; do < if [ -d ${configdir}.${host} ] ; then < newspecifics="${specifics} ${host}" < specifics=${newspecifics} < else < newcommons="${commons} ${host}" < commons=${newcommons} < fi # if target specific < done # for each host < < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${commons} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any common hosts < < if [ -n "${specifics}" ] ; then < for host in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${host}... < (cd ${configdir}.${host} ; < ./configure ${host} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < done # for host in specifics < fi # if there are any specifics < else < < for target in ${targets} ; do < if [ -d ${configdir}.${target} ] ; then < newspecifics="${specifics} ${target}" < specifics=${newspecifics} < else < newcommons="${commons} +target=${target}" < commons=${newcommons} < fi < < done # check for target specific dir override --- > # If there are subdirectories, then recurse. > if [ -z "${norecurse}" -a -n "${configdirs}" ] ; then > for configdir in ${configdirs} ; do > if [ -n "${verbose}" ] ; then > echo Configuring ${configdir}... > fi > > if [ -d ${configdir} ] ; then > (cd ${configdir} ; > ./configure -recursing ${host} +target=${target} \ > ${verbose} ${subdirs} ${removing} +destdir=${destdir}) \ > | sed 's/^/ /' > else > if [ -n "${verbose}" ] ; then > echo Warning: directory \"${configdir}\" is missing. > fi > fi > done > fi > done # for each target 631,634c826,835 < if [ -n "${verbose}" ] ; then < echo " "commons=\"${commons}\" < echo " "specifics=\"${specifics}\" < fi # if verbose --- > # Now build a Makefile for this host. > if [ -n "${subdirs}" -a ! -n "${removing}" ] ; then > cd ${hostsubdir} > cat > GNUmakefile << E!O!F > # Makefile generated by configure for host ${host}. > > ALL := $(shell ls -d Target-*) > > %: > $(foreach subdir,$(ALL),$(MAKE) -C $(subdir) \$@ &&) true 636,657c837,841 < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < ${commons} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any commons < < if [ -n "${specifics}" ] ; then < for target in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${target}... < (cd ${configdir}.${target} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < "+target=${target}" +destdir=${destdir}) \ < | sed 's/^/ /' < done < fi # if any specifics < fi # not default targets < done --- > all: > E!O!F > cd .. > fi > done # for each host 662a847,877 > # Revision 1.31 1991/08/23 04:50:57 rich > # Minor config polish. > # > # Revision 1.22 1991/08/23 03:31:43 rich > # Minor polish & config mapping. > # > # Revision 1.30 1991/08/22 07:15:51 rich > # Three part names, etc. > # > # Revision 1.29 1991/08/20 04:56:51 rich > # revisiting error messages > # > # Revision 1.28 1991/08/16 19:22:17 rich > # This is the commontargets change and should be considered > # experimental. > # > # Revision 1.27 1991/08/08 01:14:13 rich > # allow +f to stand in for +subdirs > # > # Revision 1.26 1991/08/07 19:21:32 rich > # +forcesubdirs -> +subdirs > # > # Revision 1.25 1991/08/07 07:05:30 rich > # Added make. > # > # Revision 1.24 1991/08/06 19:26:01 rich > # revised option parsing. > # > # Revision 1.23 1991/08/06 19:12:32 rich > # Host-level GNUmakefiles. > # diff -r gdb-3.98/gdb/configure.in gdb-4.0/gdb/configure.in 6,7c6,103 < if [ ! -f xconfig/${host} ]; then < echo "No such host ${host}" --- > # map host info into gdb names. > > case "${host_cpu}" in > > m68k) > case "${host_vendor}" in > att) gdb_host=3b1 ;; > altos) > case "${host_os}" in > gas) gdb_host=altosgas ;; > *) gdb_host=altos ;; > esac > ;; > hp) > case ${host_os} in > hpux) gdb_host=hp300hpux ;; > bsd) gdb_host=hp300bsd ;; > esac > ;; > > isi) gdb_host=isi ;; > sony) gdb_host=news ;; > sun) > case "${host_os}" in > sunos3) gdb_host=sun3os3 ;; > sunos4) gdb_host=sun3os4 ;; > *) gdb_host=sun3 ;; > esac > ;; > esac > ;; > > m68000) > case "${host_vendor}" in > sun) > case "${host_os}" in > sunos3) gdb_host=sun2os3 ;; > sunos4) gdb_host=sun2os4 ;; > *) gdb_host=sun2 ;; > esac > esac > ;; > > sparc) > case "${host_os}" in > sunos3) gdb_host=sun4os3 ;; > sunos4) gdb_host=sun4os4 ;; > *) gdb_host=sun4 ;; > esac > ;; > > m68030) > case "${host_vendor}" in > sony) gdb_host=news1000 ;; > esac > ;; > > mips) > case "${host_vendor}" in > sony) gdb_host=bigmips ;; > dec) gdb_host=dec3100 ;; > little) gdb_host=littlemips ;; > esac > ;; > > i386) > case "${host_vendor}" in > sun) gdb_host=sun386 ;; > sco) gdb_host=i386sco ;; > sequent) gdb_host=symmetry ;; > *) > case "${host_os}" in > sysv) gdb_host=i386v ;; > sysv32) gdb_host=i386v32 ;; > esac > ;; > esac > ;; > > c1 | c2) gdb_host=convex ;; > > ns32k) > case "${host_vendor}" in > umax) gdb_host=umax ;; > esac > ;; > > arm | vax | m88k | merlin | none | np1 | pn | pyramid | tahoe) gdb_host=${host_cpu} ;; > > ### unhandled hosts > #altosgas > #i386v-g > #i386v32-g > > esac > > if [ ! -f xconfig/${gdb_host} ]; then > echo '***' "Gdb does not support host ${host}" 1>&2 12c108 < hostfile=`awk '$1 == "XM_FILE=" { print $2 }' hostfile=`awk '$1 == "XM_FILE=" { print $2 }' case "${target_cpu}" in > > m68k) > case "${target_vendor}" in > att) gdb_target=3b1 ;; > altos) gdb_target=altos ;; > hp) > case "${target_os}" in > bsd) gdb_target=hp300bsd ;; > hpux) gdb_target=hp300hpux ;; > esac > ;; > sun) > case "${target_os}" in > sunos3) gdb_target=sun3os3 ;; > sunos4) gdb_target=sun3os4 ;; > *) gdb_target=sun3 ;; > esac > ;; > wrs) gdb_target=vxworks68 ;; > isi) gdb_target=isi ;; > sony) gdb_target=news ;; > esac > ;; > > m68000) > case "${target_vendor}" in > sun) > case "${target_os}" in > sunos3) gdb_target=sun2os3 ;; > sunos4) gdb_target=sun2os4 ;; > *) gdb_target=sun2 ;; > esac > esac > ;; > > m68030) > case "${target_vendor}" in > sony) gdb_target=news1000 ;; > esac > ;; > > none | tahoe | vax | np1 | pn | np1 | pn | pyramid | merlin | m88k) > gdb_target=${target_cpu} ;; > a29k) gdb_target=am29k ;; > arm) gdb_target=${target_cpu} ;; > > mips) > case "${target_vendor}" in > sony) gdb_target=bigmips ;; > dec) gdb_target=dec3100 ;; > little) gdb_target=littlemips ;; > esac > ;; > > c1 | c2) gdb_target=convex ;; > > sparc) > case "${target_vendor}" in > sun) > case "${target_os}" in > sunos3) gdb_target=sun4os3 ;; > sunos4) gdb_target=sun4os4 ;; > *) gdb_target=sun4 ;; > esac > ;; > esac > ;; > > > i386) > case "${target_vendor}" in > sco) gdb_target=i386sco ;; > sun) gdb_target=sun386 ;; > sequent) gdb_target=symmetry ;; > coff) gdb_target=i386v ;; > aout) gdb_target=i386v ;; > *) > case "${target_os}" in > sysv) gdb_target=i386v ;; > sysv32) gdb_target=i386v32 ;; > esac > esac > ;; > > i960) > case "${target_vendor}" in > bout | wrs) gdb_target=vxworks960 ;; > coff | intel) gdb_target=nindy960 ;; > esac > ;; > > ns32k) > case "${target_vendor}" in > utek) gdb_target=umax ;; > esac > ;; > > ### unhandled targets > # altosgas > # i386v-g > # i386v32-g > > esac > > if [ ! -f tconfig/${gdb_target} ]; then > echo '***' "Gdb does not support target ${target}" 1>&2 22c223 < cat xconfig/${host} tconfig/${target} | awk '$1 == "#msg" { --- > cat xconfig/${gdb_host} tconfig/${gdb_target} | awk '$1 == "#msg" { 27c228 < targetfile=`awk '$1 == "TM_FILE=" { print $2 }' targetfile=`awk '$1 == "TM_FILE=" { print $2 }' host_makefile_frag=xconfig/${gdb_host} > target_makefile_frag=tconfig/${gdb_target} diff -r gdb-3.98/gdb/core.c gdb-4.0/gdb/core.c 46,47d45 < struct section_table *core_sections, *core_sections_end; < 70a69,73 > if (core_ops.sections) { > free (core_ops.sections); > core_ops.sections = NULL; > core_ops.sections_end = NULL; > } 73a77,88 > #ifdef SOLIB_ADD > /* Stub function for catch_errors around shared library hacking. */ > > int > solib_add_stub (from_tty) > int from_tty; > { > SOLIB_ADD (NULL, from_tty, &core_ops); > return 0; > } > #endif /* SOLIB_ADD */ > 126c141,142 < if (build_section_table (core_bfd, &core_sections, &core_sections_end)) --- > if (build_section_table (core_bfd, &core_ops.sections, > &core_ops.sections_end)) 131c147 < make_cleanup (unpush_target, &core_ops); --- > discard_cleanups (old_chain); 145c161,162 < /* Add symbols for any shared libraries that were in use */ --- > > /* Add symbols and section mappings for any shared libraries */ 147c164 < SOLIB_ADD (NULL, from_tty); --- > (void) catch_errors (solib_add_stub, from_tty, (char *)0); 159,160d175 < < discard_cleanups (old_chain); 223,225c238 < print a warning if they don't go together. < This should really check that the core file came < from that exec file, but I don't know how to do it. */ --- > print a warning if they don't go together. */ 256c269,270 < core_files_info () --- > core_files_info (t) > struct target_ops *t; 262,265c276,286 < for (p = core_sections; p < core_sections_end; p++) < printf("\tcore file from 0x%08x to 0x%08x is %s\n", < p->addr, p->endaddr, < bfd_section_name (core_bfd, p->sec_ptr)); --- > for (p = t->sections; p < t->sections_end; p++) > if (p->bfd == core_bfd) > printf("\tcore file from 0x%08x to 0x%08x is %s\n", > p->addr, p->endaddr, > bfd_section_name (p->bfd, p->sec_ptr)); > else { > printf("\tshared lib from 0x%08x to 0x%08x is %s in %s\n", > p->addr, p->endaddr, > bfd_section_name (p->bfd, p->sec_ptr), > bfd_get_filename (p->bfd)); > } 357,391d377 < /* Read or write the core file. < < Args are address within core file, address within gdb address-space, < length, and a flag indicating whether to read or write. < < Result is a length: < < 0: We cannot handle this address and length. < > 0: We have handled N bytes starting at this address. < (If N == length, we did it all.) We might be able < to handle more bytes beyond this length, but no < promises. < < 0: We cannot handle this address, but if somebody < else handles (-N) bytes, we can start from there. < < The actual work is done by xfer_memory in exec.c, which we share < in common with exec_xfer_memory(). */ < < static int < core_xfer_memory (memaddr, myaddr, len, write) < CORE_ADDR memaddr; < char *myaddr; < int len; < int write; < { < int res; < res = xfer_memory (memaddr, myaddr, len, write, < core_bfd, core_sections, core_sections_end); < #ifdef SOLIB_XFER_MEMORY < if (res == 0) < res = SOLIB_XFER_MEMORY (memaddr, myaddr, len, write); < #endif < return res; < } < 446c432 < core_xfer_memory, core_files_info, --- > xfer_memory, core_files_info, 449c435 < 0, 0, 0, 0, 0, /* kill, load, add_syms, call fn, lookup sym */ --- > 0, 0, 0, 0, /* kill, load, call fn, lookup sym */ 452a439 > 0, 0, /* section pointers */ diff -r gdb-3.98/gdb/cplus-dem.c gdb-4.0/gdb/cplus-dem.c 252,253c252 < int n = (strlen (type) - 3)*2 + 3 + 2 + 1; < char *tem = (char *) xmalloc (n); --- > char *tem = (char *) xmalloc ((strlen (type) - 3)*2 + 3 + 2 + 1); 263,264c262 < int n = strlen (type) + 2; < char *tem = (char *) xmalloc (n); --- > char *tem = (char *) xmalloc (strlen (type) + 2); 273,274c271 < int n = strlen (type + 4) + 14 + 1; < char *tem = (char *) xmalloc (n); --- > char *tem = (char *) xmalloc (strlen (type + 4) + 14 + 1); diff -r gdb-3.98/gdb/dbxread.c gdb-4.0/gdb/dbxread.c 163,164c163,164 < static const char vptr_name[] = { '_','v','p','t','r',CPLUS_MARKER }; < static const char vb_name[] = { '_','v','b',CPLUS_MARKER }; --- > static const char vptr_name[] = { '_','v','p','t','r',CPLUS_MARKER,'\0' }; > static const char vb_name[] = { '_','v','b',CPLUS_MARKER,'\0' }; 1239,1246c1239 < enum misc_function_type misc_type = < (type == (N_TEXT | N_EXT) ? mf_text : < (type == (N_DATA | N_EXT) < || type == (N_DATA) < || type == (N_SETV | N_EXT) < ) ? mf_data : < type == (N_BSS | N_EXT) ? mf_bss : < type == (N_ABS | N_EXT) ? mf_abs : mf_unknown); --- > enum misc_function_type misc_type; 1247a1241,1251 > switch (type &~ N_EXT) { > case N_TEXT: misc_type = mf_text; break; > case N_DATA: misc_type = mf_data; break; > case N_BSS: misc_type = mf_bss; break; > case N_ABS: misc_type = mf_abs; break; > #ifdef N_SETV > case N_SETV: misc_type = mf_data; break; > #endif > default: misc_type = mf_unknown; break; > } > 2409,2410c2413,2417 < return (st1[0] - st2[0] ? st1[0] - st2[0] : < strcmp (st1 + 1, st2 + 1)); --- > if (st1[0] - st2[0]) > return st1[0] - st2[0]; > if (st1[1] - st2[1]) > return st1[1] - st2[1]; > return strcmp (st1 + 1, st2 + 1); 2759a2767 > /* ARGSUSED */ 3274a3283 > /* ARGSUSED */ 3599,3603c3608,3612 < int i; < for (i = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; i >= 0; i--) < if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), i) == 0) < TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), i) = < type_name_no_tag (TYPE_BASECLASS (SYMBOL_TYPE (sym), i)); --- > int j; > for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--) > if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0) > TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) = > type_name_no_tag (TYPE_BASECLASS (SYMBOL_TYPE (sym), j)); 4359a4369,4371 > /* GNU C++ anonymous type. */ > else if (*p == '_') > break; 4934,4936c4946,4948 < struct symbol *sym = syms->symbol[j]; < SYMBOL_TYPE (sym) = type; < TYPE_FIELD_NAME (type, n) = SYMBOL_NAME (sym); --- > struct symbol *xsym = syms->symbol[j]; > SYMBOL_TYPE (xsym) = type; > TYPE_FIELD_NAME (type, n) = SYMBOL_NAME (xsym); 4938c4950 < TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (sym); --- > TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym); diff -r gdb-3.98/gdb/depend gdb-4.0/gdb/depend 4c4,5 < am29k-pinsn.o : am29k-pinsn.c defs.h target.h am29k-opcode.h --- > am29k-pinsn.o : am29k-pinsn.c defs.h target.h ${srcdir}/../include/bfd.h \ > ${srcdir}/../include/ansidecl.h ${srcdir}/../include/obstack.h am29k-opcode.h 45c46 < gdbcore.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h ${srcdir}/../bfd/libaout.h \ --- > ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h gdbcore.h ${srcdir}/../bfd/libaout.h \ 49c50 < expression.h target.h frame.h --- > expression.h target.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h frame.h 51,52c52,53 < breakpoint.h value.h symtab.h target.h gdbcmd.h command.h gdbcore.h \ < ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h --- > breakpoint.h value.h symtab.h target.h ${srcdir}/../include/bfd.h \ > ${srcdir}/../include/ansidecl.h gdbcmd.h command.h gdbcore.h 86c87 < target.h --- > target.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h 88,89c89,90 < inferior.h breakpoint.h value.h symtab.h target.h gdbcore.h \ < ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h --- > inferior.h breakpoint.h value.h symtab.h target.h ${srcdir}/../include/bfd.h \ > ${srcdir}/../include/ansidecl.h gdbcore.h 95,96c96,97 < inferior.h breakpoint.h value.h symtab.h target.h ${srcdir}/../include/wait.h \ < gdbcore.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h ieee-float.h --- > inferior.h breakpoint.h value.h symtab.h target.h ${srcdir}/../include/bfd.h \ > ${srcdir}/../include/ansidecl.h ${srcdir}/../include/wait.h gdbcore.h ieee-float.h 109,110c110,112 < ${srcdir}/../include/getopt.h ${srcdir}/../readline/readline.h ${srcdir}/../readline/keymaps.h \ < ${srcdir}/../readline/chardefs.h ${srcdir}/../readline/history.h --- > ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h ${srcdir}/../include/getopt.h \ > ${srcdir}/../readline/readline.h ${srcdir}/../readline/keymaps.h ${srcdir}/../readline/chardefs.h \ > ${srcdir}/../readline/history.h 147c149 < terminal.h target.h --- > terminal.h target.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h 149,150c151,152 < frame.h inferior.h breakpoint.h value.h symtab.h target.h gdbcore.h \ < ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h command.h ieee-float.h \ --- > frame.h inferior.h breakpoint.h value.h symtab.h target.h \ > ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h gdbcore.h command.h ieee-float.h \ 155c157 < gdbcore.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h command.h symfile.h \ --- > ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h gdbcore.h command.h symfile.h \ 159,160c161,162 < inferior.h breakpoint.h value.h symtab.h target.h ${srcdir}/../include/wait.h \ < terminal.h --- > inferior.h breakpoint.h value.h symtab.h target.h ${srcdir}/../include/bfd.h \ > ${srcdir}/../include/ansidecl.h ${srcdir}/../include/wait.h terminal.h 172,173c174,175 < inferior.h breakpoint.h value.h symtab.h signame.h target.h ieee-float.h \ < gdbcore.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h --- > inferior.h breakpoint.h value.h symtab.h signame.h target.h \ > ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h ieee-float.h gdbcore.h 175,176c177,178 < breakpoint.h value.h symtab.h frame.h param.h target.h gdbcore.h \ < ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h --- > breakpoint.h value.h symtab.h frame.h param.h target.h ${srcdir}/../include/bfd.h \ > ${srcdir}/../include/ansidecl.h gdbcore.h 200,202c202,205 < target.o : target.c defs.h target.h gdbcmd.h command.h symtab.h inferior.h \ < breakpoint.h value.h frame.h param.h tm.h config.status param-no-tm.h xm.h config.status \ < ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h symfile.h --- > target.o : target.c defs.h target.h ${srcdir}/../include/bfd.h \ > ${srcdir}/../include/ansidecl.h ${srcdir}/../include/obstack.h gdbcmd.h command.h symtab.h \ > inferior.h breakpoint.h value.h frame.h param.h tm.h config.status param-no-tm.h xm.h config.status \ > symfile.h 211c214 < symtab.h expression.h target.h --- > symtab.h expression.h target.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h Only in gdb-4.0/gdb/doc: Makefile Only in gdb-3.98/gdb/doc: gdb-all.aux Only in gdb-3.98/gdb/doc: gdb-all.cp Only in gdb-3.98/gdb/doc: gdb-all.dvi Only in gdb-3.98/gdb/doc: gdb-all.fn Only in gdb-3.98/gdb/doc: gdb-all.ky Only in gdb-3.98/gdb/doc: gdb-all.log Only in gdb-3.98/gdb/doc: gdb-all.pg Only in gdb-4.0/gdb/doc: gdb-all.texi Only in gdb-3.98/gdb/doc: gdb-all.texinfo Only in gdb-3.98/gdb/doc: gdb-all.toc Only in gdb-3.98/gdb/doc: gdb-all.tp Only in gdb-3.98/gdb/doc: gdb-all.vr diff -r gdb-3.98/gdb/doc/gdb.texinfo gdb-4.0/gdb/doc/gdb.texinfo 1c1 < _dnl__ -*-Texinfo-*- --- > _dnl__ -*-Texinfo-*- 5c5 < @c $Id: gdb.texinfo,v 2.45 1991/08/01 00:02:27 pesch Exp $ --- > @c $Id: gdb.texinfo,v 2.53 1991/08/24 00:43:23 pesch Exp $ 28c28 < \xdef\manvers{\$Revision: 2.45 $} % For use in headers, footers too --- > \xdef\manvers{\$Revision: 2.53 $} % For use in headers, footers too 33c33 < @c Wed Jul 31 12:06:29 1991 John Gilmore (gnu at cygint.cygnus.com) --- > @c Thu Aug 22 14:05:47 1991 Stu Grossman (grossman at cygint.cygnus.com) 125,146c125,147 < * Summary:: Summary of _GDBN__ < * New Features:: New Features in _GDBN__ version 4.0 < * Sample Session:: A Sample _GDBN__ Session < * Invocation:: Getting In and Out of _GDBN__ < * Commands:: < * Running:: Running Programs Under _GDBN__ < * Stopping:: Stopping and Continuing < * Stack:: Examining the Stack < * Source:: Examining Source Files < * Data:: Examining Data < * Symbols:: Examining the Symbol Table < * Altering:: Altering Execution < * _GDBN__ Files:: < * Targets:: Specifying a Debugging Target < * Controlling _GDBN__:: Controlling _GDBN__ < * Sequences:: Canned Sequences of Commands < * Emacs:: Using _GDBN__ under GNU Emacs < * _GDBN__ Bugs:: Reporting Bugs in _GDBN__ < * Renamed Commands:: < * Installing _GDBN__:: Installing _GDBN__ < * Copying:: GNU GENERAL PUBLIC LICENSE < * Index:: Index --- > * Summary:: Summary of _GDBN__ > * New Features:: New Features in _GDBN__ version 4.0 > * Sample Session:: A Sample _GDBN__ Session > * Invocation:: Getting In and Out of _GDBN__ > * Commands:: > * Running:: Running Programs Under _GDBN__ > * Stopping:: Stopping and Continuing > * Stack:: Examining the Stack > * Source:: Examining Source Files > * Data:: Examining Data > * Cplusplus:: C++ and _GDBN__ > * Symbols:: Examining the Symbol Table > * Altering:: Altering Execution > * _GDBN__ Files:: > * Targets:: Specifying a Debugging Target > * Controlling _GDBN__:: Controlling _GDBN__ > * Sequences:: Canned Sequences of Commands > * Emacs:: Using _GDBN__ under GNU Emacs > * _GDBN__ Bugs:: Reporting Bugs in _GDBN__ > * Renamed Commands:: > * Installing _GDBN__:: Installing _GDBN__ > * Copying:: GNU GENERAL PUBLIC LICENSE > * Index:: Index 151,152c152,153 < * Free Software:: Free Software < * Contributors:: Contributors to _GDBN__ --- > * Free Software:: Free Software > * Contributors:: Contributors to _GDBN__ 156,158c157,159 < * Starting _GDBN__:: Starting _GDBN__ < * Leaving _GDBN__:: Leaving _GDBN__ < * Shell Commands:: Shell Commands --- > * Starting _GDBN__:: Starting _GDBN__ > * Leaving _GDBN__:: Leaving _GDBN__ > * Shell Commands:: Shell Commands 162,163c163,164 < * File Options:: Choosing Files < * Mode Options:: Choosing Modes --- > * File Options:: Choosing Files > * Mode Options:: Choosing Modes 167,168c168,169 < * Command Syntax:: Command Syntax < * Help:: Getting Help --- > * Command Syntax:: Command Syntax > * Help:: Getting Help 172,179c173,180 < * Compilation:: Compiling for Debugging < * Starting:: Starting your Program < * Arguments:: Your Program's Arguments < * Environment:: Your Program's Environment < * Working Directory:: Your Program's Working Directory < * Input/Output:: Your Program's Input and Output < * Attach:: Debugging an Already-Running Process < * Kill Process:: Killing the Child Process --- > * Compilation:: Compiling for Debugging > * Starting:: Starting your Program > * Arguments:: Your Program's Arguments > * Environment:: Your Program's Environment > * Working Directory:: Your Program's Working Directory > * Input/Output:: Your Program's Input and Output > * Attach:: Debugging an Already-Running Process > * Kill Process:: Killing the Child Process 183,185c184,186 < * Breakpoints:: Breakpoints, Watchpoints, and Exceptions < * Continuing and Stepping:: Resuming Execution < * Signals:: Signals --- > * Breakpoints:: Breakpoints, Watchpoints, and Exceptions > * Continuing and Stepping:: Resuming Execution > * Signals:: Signals 189,197c190,198 < * Set Breaks:: Setting Breakpoints < * Set Watchpoints:: Setting Watchpoints < * Exception Handling:: Breakpoints and Exceptions < * Delete Breaks:: Deleting Breakpoints < * Disabling:: Disabling Breakpoints < * Conditions:: Break Conditions < * Break Commands:: Breakpoint Command Lists < * Breakpoint Menus:: Breakpoint Menus < * Error in Breakpoints:: --- > * Set Breaks:: Setting Breakpoints > * Set Watchpoints:: Setting Watchpoints > * Exception Handling:: Breakpoints and Exceptions > * Delete Breaks:: Deleting Breakpoints > * Disabling:: Disabling Breakpoints > * Conditions:: Break Conditions > * Break Commands:: Breakpoint Command Lists > * Breakpoint Menus:: Breakpoint Menus > * Error in Breakpoints:: 201,204c202,205 < * Frames:: Stack Frames < * Backtrace:: Backtraces < * Selection:: Selecting a Frame < * Frame Info:: Information on a Frame --- > * Frames:: Stack Frames > * Backtrace:: Backtraces > * Selection:: Selecting a Frame > * Frame Info:: Information on a Frame 208,211c209,212 < * List:: Printing Source Lines < * Search:: Searching Source Files < * Source Path:: Specifying Source Directories < * Machine Code:: Source and Machine Code --- > * List:: Printing Source Lines > * Search:: Searching Source Files > * Source Path:: Specifying Source Directories > * Machine Code:: Source and Machine Code 215,225c216,226 < * Expressions:: Expressions < * Variables:: Program Variables < * Arrays:: Artificial Arrays < * Output formats:: Output formats < * Memory:: Examining Memory < * Auto Display:: Automatic Display < * Print Settings:: Print Settings < * Value History:: Value History < * Convenience Vars:: Convenience Variables < * Registers:: Registers < * Floating Point Hardware:: Floating Point Hardware --- > * Expressions:: Expressions > * Variables:: Program Variables > * Arrays:: Artificial Arrays > * Output formats:: Output formats > * Memory:: Examining Memory > * Auto Display:: Automatic Display > * Print Settings:: Print Settings > * Value History:: Value History > * Convenience Vars:: Convenience Variables > * Registers:: Registers > * Floating Point Hardware:: Floating Point Hardware 229,233c230,234 < * Assignment:: Assignment to Variables < * Jumping:: Continuing at a Different Address < * Signaling:: Giving the Program a Signal < * Returning:: Returning from a Function < * Calling:: Calling your Program's Functions --- > * Assignment:: Assignment to Variables > * Jumping:: Continuing at a Different Address > * Signaling:: Giving the Program a Signal > * Returning:: Returning from a Function > * Calling:: Calling your Program's Functions 237,238c238,239 < * Files:: Commands to Specify Files < * Symbol Errors:: Errors Reading Symbol Files --- > * Files:: Commands to Specify Files > * Symbol Errors:: Errors Reading Symbol Files 242,244c243,245 < * Active Targets:: Active Targets < * Target Commands:: Commands for Managing Targets < * Remote:: Remote Debugging --- > * Active Targets:: Active Targets > * Target Commands:: Commands for Managing Targets > * Remote:: Remote Debugging 248,250c249,251 < * i960-Nindy Remote:: < * EB29K Remote:: < * VxWorks Remote:: --- > * i960-Nindy Remote:: > * EB29K Remote:: > * VxWorks Remote:: 254,256c255,257 < * Nindy Startup:: Startup with Nindy < * Nindy Options:: Options for Nindy < * Nindy reset:: Nindy Reset Command --- > * Nindy Startup:: Startup with Nindy > * Nindy Options:: Options for Nindy > * Nindy reset:: Nindy Reset Command 260,262c261,263 < * Comms (EB29K):: Communications Setup < * gdb-EB29K:: EB29K cross-debugging < * Remote Log:: Remote Log --- > * Comms (EB29K):: Communications Setup > * gdb-EB29K:: EB29K cross-debugging > * Remote Log:: Remote Log 266,268c267,269 < * VxWorks connection:: Connecting to VxWorks < * VxWorks download:: VxWorks Download < * VxWorks attach:: Running Tasks --- > * VxWorks connection:: Connecting to VxWorks > * VxWorks download:: VxWorks Download > * VxWorks attach:: Running Tasks 272,277c273,278 < * Prompt:: Prompt < * Editing:: Command Editing < * History:: Command History < * Screen Size:: Screen Size < * Numbers:: Numbers < * Messages/Warnings:: Optional Warnings and Messages --- > * Prompt:: Prompt > * Editing:: Command Editing > * History:: Command History > * Screen Size:: Screen Size > * Numbers:: Numbers > * Messages/Warnings:: Optional Warnings and Messages 281,283c282,284 < * Define:: User-Defined Commands < * Command Files:: Command Files < * Output:: Commands for Controlled Output --- > * Define:: User-Defined Commands > * Command Files:: Command Files > * Output:: Commands for Controlled Output 287,288c288,289 < * Bug Criteria:: Have You Found a Bug? < * Bug Reporting:: How to Report Bugs --- > * Bug Criteria:: Have You Found a Bug? > * Bug Reporting:: How to Report Bugs 316c317 < _GDBN__ can be used to debug programs written in C and C++. Pascal support --- > You can use _GDBN__ to debug programs written in C and C++. Modula-2 support 321,322c322,323 < * Free Software:: Free Software < * Contributors:: Contributors to GDB --- > * Free Software:: Free Software > * Contributors:: Contributors to GDB 361,365c362,366 < particularly thank those who shepherded GDB through major releases: < John Gilmore (release 4.0); Jim Kingdon (releases 3.9, 3.5, 3.4, 3.3); < and Randy Smith (releases 3.2, 3.1, 3.0). As major maintainer of GDB < for some period, each contributed significantly to the structure, < stability, and capabilities of the entire debugger. --- > particularly thank those who shepherded GDB through major releases: John > Gilmore (release 4.0; happy birthday, John!); Jim Kingdon (releases > 3.9, 3.5, 3.4, 3.3); and Randy Smith (releases 3.2, 3.1, 3.0). As major > maintainer of GDB for some period, each contributed significantly to the > structure, stability, and capabilities of the entire debugger. 415,418c416,423 < a serial port, realtime systems over a TCP/IP connection, etc. < Internally, _GDBN__ now uses a function vector to mediate access to < different targets; if you need to add your own support for a remote < protocol, this makes it much easier. --- > a serial port, realtime systems over a TCP/IP connection, etc. The > command @code{load} can download programs into a remote system. Serial > stubs are available for Motorola 680x0 and Intel 80386 remote systems; > _GDBN__ also supports debugging realtime processes running under > VxWorks, using SunRPC Remote Procedure Calls over TCP/IP to talk to a > debugger stub on the target system. Internally, _GDBN__ now uses a > function vector to mediate access to different targets; if you need to > add your own support for a remote protocol, this makes it much easier. 425a431,434 > @item Wide Output > Commands that issue wide output now insert newlines at places designed > to make the output more readable. > 427c436 < _GDBN__ uses a new scheme called the Binary File Descriptor (BFD) --- > _GDBN__ uses a new library called the Binary File Descriptor (BFD) 435c444 < @item Configuration --- > @item Configuration and Ports 439c448,449 < cross-debugger. --- > cross-debugger. @xref{Installing _GDBN__} for details on how to > configure and on what architectures are now available. 449,452c459,464 < @item Source Language < _GDBN__ now has limited support for C++ exception handling: _GDBN__ can < break when an exception is raised, before the stack is peeled back to < the exception handler's context. --- > @item C++ > _GDBN__ now supports C++ multiple inheritance (if used with a GCC > version 2 compiler), and also has limited support for C++ exception > handling, with the commands @code{catch} and @code{info catch}: _GDBN__ > can break when an exception is raised, before the stack is peeled back > to the exception handler's context. 461,467d472 < @item Ports < _GDBN__ has been ported to the following new architectures: AT&T 3b1, < Acorn RISC machine, HP300 running HPUX, big- and little-endian MIPS < machines, Motorola 88k, Sun 386i, and Sun 3 running SunOS 4. In < addition, the following are supported as targets only: AMD 29k, Intel < 960, and Wind River's VxWorks. < 469c474,480 < _GDBN__ 4.0 supports SunOS shared libraries. --- > _GDBN__ 4.0 can debug programs and core files that use SunOS shared > libraries. You can load symbols from a shared library with the command > @code{sharedlibrary} (@pxref{Files}). > > @item Reference Card > _GDBN__ 4.0 has a reference card; @xref{Formatting Manual} for > instructions on printing it. 738,740c749,751 < * Starting _GDBN__:: Starting _GDBN__ < * Leaving _GDBN__:: Leaving _GDBN__ < * Shell Commands:: Shell Commands --- > * Starting _GDBN__:: Starting _GDBN__ > * Leaving _GDBN__:: Leaving _GDBN__ > * Shell Commands:: Shell Commands 760a772,780 > You can, instead, specify a process ID as a second argument, if you want > to debug a running process: > @example > _GDBP__ program 1234 > @end example > @noindent > would attach _GDBN__ to process @code{1234} (unless you also have a file > named @file{1234}; _GDBN__ does check for a core file first). > 776,777c796,797 < * File Options:: Choosing Files < * Mode Options:: Choosing Modes --- > * File Options:: Choosing Files > * Mode Options:: Choosing Modes 942,943c962,963 < * Command Syntax:: Command Syntax < * Help:: Getting Help --- > * Command Syntax:: Command Syntax > * Help:: Getting Help 975a996,1001 > _GDBN__ can also use @key{RET} in another way: to partition lengthy > output, in a way similar to the common utility @code{more} > (@pxref{Screen Size}). Since it's easy to press one @key{RET} too many > in this situation, _GDBN__ disables command repetition after any command > that generates this sort of display. > 1104,1111c1130,1137 < * Compilation:: Compiling for Debugging < * Starting:: Starting your Program < * Arguments:: Your Program's Arguments < * Environment:: Your Program's Environment < * Working Directory:: Your Program's Working Directory < * Input/Output:: Your Program's Input and Output < * Attach:: Debugging an Already-Running Process < * Kill Process:: Killing the Child Process --- > * Compilation:: Compiling for Debugging > * Starting:: Starting your Program > * Arguments:: Your Program's Arguments > * Environment:: Your Program's Environment > * Working Directory:: Your Program's Working Directory > * Input/Output:: Your Program's Input and Output > * Attach:: Debugging an Already-Running Process > * Kill Process:: Killing the Child Process 1514,1516c1540,1542 < * Breakpoints:: Breakpoints, Watchpoints, and Exceptions < * Continuing and Stepping:: Resuming Execution < * Signals:: Signals --- > * Breakpoints:: Breakpoints, Watchpoints, and Exceptions > * Continuing and Stepping:: Resuming Execution > * Signals:: Signals 1547,1555c1573,1581 < * Set Breaks:: Setting Breakpoints < * Set Watchpoints:: Setting Watchpoints < * Exception Handling:: Breakpoints and Exceptions < * Delete Breaks:: Deleting Breakpoints < * Disabling:: Disabling Breakpoints < * Conditions:: Break Conditions < * Break Commands:: Breakpoint Command Lists < * Breakpoint Menus:: Breakpoint Menus < * Error in Breakpoints:: --- > * Set Breaks:: Setting Breakpoints > * Set Watchpoints:: Setting Watchpoints > * Exception Handling:: Breakpoints and Exceptions > * Delete Breaks:: Deleting Breakpoints > * Disabling:: Disabling Breakpoints > * Conditions:: Break Conditions > * Break Commands:: Breakpoint Command Lists > * Breakpoint Menus:: Breakpoint Menus > * Error in Breakpoints:: 1634d1659 < @c FIXME: 2nd sentence below C++ only? 1636,1637c1661 < @var{regex}. This is useful for setting breakpoints on overloaded < functions that are not members of any special classes. This command --- > @var{regex}. This command 1642a1667,1670 > When debugging C++ programs, @code{rbreak} is useful for setting > breakpoints on overloaded functions that are not members of any special > classes. > 1689,1690c1717,1718 < Some languages, such as GNU C++, implement exception handling. _GDBN__ < can be used to examine what caused the program to raise an exception --- > Some languages, such as GNU C++, implement exception handling. You can > use _GDBN__ to examine what caused the program to raise an exception, 1731c1759 < knowledge of the implementation. In the case of GNU C++ exceptions are --- > knowledge of the implementation. In the case of GNU C++, exceptions are 1736c1764 < /* ADDR is where the exception identifier is stored. --- > /* @var{addr} is where the exception identifier is stored. 2077,2078c2105,2106 < @cindex C++ overloading < @cindex symbol overloading --- > @cindex overloading > @cindex symbol overloading 2252c2280 < 206 expand_input(); --- > 206 expand_input(); 2254c2282 < 195 for ( ; argc > 0; NEXTARG) @{ --- > 195 for ( ; argc > 0; NEXTARG) @{ 2420,2423c2448,2451 < * Frames:: Stack Frames < * Backtrace:: Backtraces < * Selection:: Selecting a Frame < * Frame Info:: Information on a Frame --- > * Frames:: Stack Frames > * Backtrace:: Backtraces > * Selection:: Selecting a Frame > * Frame Info:: Information on a Frame 2682,2685c2710,2713 < * List:: Printing Source Lines < * Search:: Searching Source Files < * Source Path:: Specifying Source Directories < * Machine Code:: Source and Machine Code --- > * List:: Printing Source Lines > * Search:: Searching Source Files > * Source Path:: Specifying Source Directories > * Machine Code:: Source and Machine Code 2940,2947c2968,2975 < 0x63e4 : ble 0x63f8 < 0x63e8 : sethi %hi(0x4c00), %o0 < 0x63ec : ld [%i1+4], %o0 < 0x63f0 : b 0x63fc < 0x63f4 : ld [%o0+4], %o0 < 0x63f8 : or %o0, 0x1a4, %o0 < 0x63fc : call 0x9288 < 0x6400 : nop --- > 0x63e4 : ble 0x63f8 > 0x63e8 : sethi %hi(0x4c00), %o0 > 0x63ec : ld [%i1+4], %o0 > 0x63f0 : b 0x63fc > 0x63f4 : ld [%o0+4], %o0 > 0x63f8 : or %o0, 0x1a4, %o0 > 0x63fc : call 0x9288 > 0x6400 : nop 2953c2981 < @node Data, Symbols, Source, Top --- > @node Data, Cplusplus, Source, Top 2965,2966c2993,2994 < evaluates and prints the value of any valid expression of the language < the program is written in (for now, C or C++). You type --- > evaluates and prints the value of an expression of the language your > program is written in (for now, C or C++). You type 2973c3001 < where @var{exp} is any valid expression (in the source language), and --- > where @var{exp} is an expression (in the source language), and 2980a3009,3012 > If you're interested in information about types, or about how the fields > of a struct or class are declared, use the @code{ptype @var{exp}} > command rather than @code{print}. @xref{Symbols}. > 2982,2992c3014,3024 < * Expressions:: Expressions < * Variables:: Program Variables < * Arrays:: Artificial Arrays < * Output formats:: Output formats < * Memory:: Examining Memory < * Auto Display:: Automatic Display < * Print Settings:: Print Settings < * Value History:: Value History < * Convenience Vars:: Convenience Variables < * Registers:: Registers < * Floating Point Hardware:: Floating Point Hardware --- > * Expressions:: Expressions > * Variables:: Program Variables > * Arrays:: Artificial Arrays > * Output formats:: Output formats > * Memory:: Examining Memory > * Auto Display:: Automatic Display > * Print Settings:: Print Settings > * Value History:: Value History > * Convenience Vars:: Convenience Variables > * Registers:: Registers > * Floating Point Hardware:: Floating Point Hardware 3004,3007c3036 < by preprocessor @code{#define} commands, or C++ expressions involving < @samp{::}, the name resolution operator. < @c FIXME: actually C++ a::b works except in obscure circumstances where it < @c FIXME...can conflict with GDB's own name scope resolution. --- > by preprocessor @code{#define} commands. 3476c3505 < 530 if (lquote != def_lquote) --- > 530 if (lquote != def_lquote) 3486c3515 < 530 if (lquote != def_lquote) --- > 530 if (lquote != def_lquote) 3812c3841 < Machine register contents can be referred to in expressions as variables --- > You can refer to machine register contents, in expressions, as variables 3820c3849,3856 < Print the names and values of all registers (in the selected stack frame). --- > Print the names and values of all registers except floating-point > registers (in the selected stack frame). > > @item info all-registers > @kindex info all-registers > @cindex floating point registers > Print the names and values of all registers, including floating-point > registers. 3911c3947,4073 < @node Symbols, Altering, Data, Top --- > @node Cplusplus, Symbols, Data, Top > @chapter C++ and _GDBN__ > > @cindex C++ > @kindex g++ > @cindex GNU C++ > _GDBN__ includes facilities to let you debug C++ programs naturally and > easily. The GNU C++ compiler and _GDBN__ implement the support for these > facilities together. Therefore, to debug your C++ code most > effectively, you must compile your C++ programs with the GNU C++ > compiler, @code{g++}. > > @menu > * Cplusplus expressions:: C++ Expressions > * Cplusplus commands:: _GDBN__ Commands for C++ > @end menu > > @node Cplusplus expressions, Cplusplus commands, Cplusplus, Cplusplus > @section C++ Expressions > > @cindex expressions in C++ > Since C++ is closely related to C, all the facilities for evaluating C > expressions (@pxref{Expressions}) continue to work in C++. _GDBN__'s > expression handling also has the following extensions to interpret a > significant subset of C++ expressions: > > @enumerate > > @cindex member functions > @item > Member function calls are allowed; you can use expressions like > @example > count = aml->GetOriginal(x, y) > @end example > > @kindex this > @cindex namespace in C++ > @item > While a member function is active (in the selected stack frame), your > expressions have the same namespace available as the member function; > that is, _GDBN__ allows implicit references to the class instance > pointer @code{this} following the same rules as C++. > > @cindex call overloaded functions > @cindex type conversions in C++ > @item > You can call overloaded functions; _GDBN__ will resolve the function > call to the right definition, with one restriction---you must use > arguments of the type required by the function that you want to call. > _GDBN__ will not perform conversions requiring constructors or > user-defined type operators. > > @cindex reference declarations > @item > _GDBN__ understands variables declared as C++ references; you can use them in > expressions just as you do in C++ source---they are automatically > dereferenced. > > In the parameter list shown when _GDBN__ displays a frame, the values of > reference variables are not displayed (unlike other variables); this > avoids clutter, since references are often used for large structures. > The @emph{address} of a reference variable is always shown, unless > you've specified @samp{set print address off}. > > > @item > _GDBN__ supports the C++ name resolution operator @code{::}---your > expressions can use it just as expressions in your program do. _GDBN__ > also allows resolving name scope by reference to source files, in both C > and C++ debugging; @pxref{Variables}. > > @end enumerate > > @node Cplusplus commands, , Cplusplus expressions, Cplusplus > @section _GDBN__ Commands for C++ > > @cindex commands for C++ > Some _GDBN__ commands are particularly useful with C++, and some are > designed specifically for use with C++. Here is a summary: > > @table @code > @cindex break in overloaded functions > @item @r{breakpoint menus} > When you want a breakpoint in a function whose name is overloaded, > _GDBN__'s breakpoint menus help you specify which function definition > you want. @xref{Breakpoint Menus}. > > @cindex overloading in C++ > @item rbreak @var{regex} > Setting breakpoints using regular expressions is helpful for setting > breakpoints on overloaded functions that are not members of any special > classes. > @xref{Set Breaks}. > > @cindex C++ exception handling > @item catch @var{exceptions} > @itemx info catch > Debug C++ exception handling using these commands. @xref{Exception Handling}. > > @cindex inheritance > @item ptype @var{typename} > Print inheritance relationships as well as other information for type > @var{typename}. > @xref{Symbols}. > > @cindex C++ symbol display > @item set print demangle > @itemx show print demangle > @itemx set print asm-demangle > @itemx show print asm-demangle > Control whether C++ symbols display in their source form, both when > displaying code as C++ source and when displaying disassemblies. > @xref{Print Settings}. > > @item set print object > @itemx show print object > Choose whether to print derived (actual) or declared types of objects. > @xref{Print Settings}. > > @item set print vtbl > @itemx show print vtbl > Control the format for printing virtual function tables. > @xref{Print Settings}. > > @end table > > @node Symbols, Altering, Cplusplus, Top 3993,3996c4155,4156 < debugging information, organized into two lists: those for which symbols < have been read in, and those for which symbols will be read in on < demand. < @c FIXME: above passive AND awkward! --- > debugging information, organized into two lists: files whose symbols > have already been read, and files whose symbols will be read when needed. 4036,4037c4196,4202 < Write a complete dump of the debugger's symbol data into the < file @var{filename}. --- > Write a dump of debugging symbol data into the file > @var{filename}. Only symbols with debugging data are included. _GDBN__ > includes all the symbols it already knows about: that is, @var{filename} > reflects symbols for only those files whose symbols _GDBN__ has read. > You can find out which files these are using the command @code{info > files}. The description of @code{symbol-file} describes how _GDBN__ > reads symbols; both commands are described under @ref{Files}. 4054,4058c4219,4223 < * Assignment:: Assignment to Variables < * Jumping:: Continuing at a Different Address < * Signaling:: Giving the Program a Signal < * Returning:: Returning from a Function < * Calling:: Calling your Program's Functions --- > * Assignment:: Assignment to Variables > * Jumping:: Continuing at a Different Address > * Signaling:: Giving the Program a Signal > * Returning:: Returning from a Function > * Calling:: Calling your Program's Functions 4248,4249c4413,4414 < * Files:: Commands to Specify Files < * Symbol Errors:: Errors Reading Symbol Files --- > * Files:: Commands to Specify Files > * Symbol Errors:: Errors Reading Symbol Files 4385c4550 < from the file @var{filename}. You would use this command when that file --- > from the file @var{filename}. You would use this command when @var{filename} 4448c4613 < While a symbol file is being read, _GDBN__ will occasionally encounter --- > While reading a symbol file, _GDBN__ will occasionally encounter 4450,4454c4615,4622 < compiler output. By default, it prints one message about each such < type of problem, no matter how many times the problem occurs. You can < ask it to print more messages, to see how many times the problems occur, < or can shut the messages off entirely, with the @code{set < complaints} command (@xref{Messages/Warnings}). --- > compiler output. By default, _GDBN__ does not notify you of such > problems, since they're relatively common and primarily of interest to > people debugging compilers. If you are interested in seeing information > about ill-constructed symbol tables, you can either ask _GDBN__ to print > only one message about each such type of problem, no matter how many > times the problem occurs; or you can ask _GDBN__ to print more messages, > to see how many times the problems occur, with the @code{set complaints} > command (@xref{Messages/Warnings}). 4491,4499d4658 < @c @item{encountered DBX-style class variable debugging information. < @c You seem to have compiled your program with "g++ -g0" instead of "g++ -g". < @c Therefore _GDBN__ will not know about your class variables} < @c < @c This error indicates that the symbol information produced for a C++ < @c program includes zero-size fields, which indicated static fields in < @c a previous release of the G++ compiler. This message is probably < @c obsolete. < @c 4557,4559c4716,4718 < * Active Targets:: Active Targets < * Target Commands:: Commands for Managing Targets < * Remote:: Remote Debugging --- > * Active Targets:: Active Targets > * Target Commands:: Commands for Managing Targets > * Remote:: Remote Debugging 4738,4743c4897,4902 < * Prompt:: Prompt < * Editing:: Command Editing < * History:: Command History < * Screen Size:: Screen Size < * Numbers:: Numbers < * Messages/Warnings:: Optional Warnings and Messages --- > * Prompt:: Prompt > * Editing:: Command Editing > * History:: Command History > * Screen Size:: Screen Size > * Numbers:: Numbers > * Messages/Warnings:: Optional Warnings and Messages 4957c5116 < @node Messages/Warnings, , Numbers, Controlling _GDBN__ --- > @node Messages/Warnings, , Numbers, Controlling _GDBN__ 4988,4991c5147,5149 < By default, if _GDBN__ encounters bugs in the symbol table of an object file, < it prints a single message about each type of problem it finds, then < shuts up (@pxref{Symbol Errors}). You can suppress these messages, or allow more than one such < message to be printed if you want to see how frequent the problems are. --- > By default, if _GDBN__ encounters bugs in the symbol table of an object > file, it is silent; but if you are debugging a compiler, you may find > this information useful (@pxref{Symbol Errors}). 5033a5192,5219 > @c FIXME this doesn't really belong here. But where *does* it belong? > @cindex reloading symbols > Some systems allow individual object files that make up your program to > be replaced without stopping and restarting your program. > _if__(_VXWORKS__) > For example, in VxWorks you can simply recompile a defective object file > and keep on running. > _fi__(_VXWORKS__) > If you're running on one of these systems, you can allow _GDBN__ to > reload the symbols for automatically relinked modules:@refill > @table @code > @kindex set symbol-reloading > @item set symbol-reloading on > Replace symbol definitions for the corresponding source file when an > object file with a particular name is seen again. > > @item set symbol-reloading off > Don't replace symbol definitions when re-encountering object files of > the same name. This is the default state; if you're not running on a > system that permits automatically relinking modules, you should leave > @code{symbol-reloading} off, since otherwise _GDBN__ may discard symbols > when linking large programs, that may contain several modules (from > different directories or libraries) with the same name. > > @item show symbol-reloading > Show the current @code{on} or @code{off} setting. > @end table > 5042,5044c5228,5230 < * Define:: User-Defined Commands < * Command Files:: Command Files < * Output:: Commands for Controlled Output --- > * Define:: User-Defined Commands > * Command Files:: Command Files > * Output:: Commands for Controlled Output 5392,5393c5578,5579 < * Bug Criteria:: Have You Found a Bug? < * Bug Reporting:: How to Report Bugs --- > * Bug Criteria:: Have You Found a Bug? > * Bug Reporting:: How to Report Bugs 5597c5783 < @include rdl-apps.texinfo --- > @include rdl-apps.texi 5716,5718c5902,5904 < _GDBN__ is distributed with a @code{configure} script that automates the < process of preparing _GDBN__ for installation; you can then use < @code{make} to build the @code{_GDBP__} program. --- > _GDBN__ comes with a @code{configure} script that automates the process > of preparing _GDBN__ for installation; you can then use @code{make} to > build the @code{_GDBP__} program. 5720,5732c5906,5909 < The @code{configure} script that's specific to _GDBN__ is distributed in < the main _GDBN__ source directory. However, building _GDBN__ also < requires several other directories of source common to multiple @sc{gnu} < programs. These directories (@sc{gnu} libraries and includes) are < distributed separately, but their @code{configure} scripts and < @code{Makefile}s are designed to work together. To ensure that < _GDBN__'s @code{Makefile} can find all the pieces, you should make a < single overall directory to hold the directories of source for @sc{gnu} < libraries and includes, and you should install the _GDBN__ source < directory there too. In this Appendix, we refer to the directory of < @sc{gnu} source directories as @var{gnusrc}. < < At a minimum, to build _GDBN__ you need the directories --- > The _GDBP__ distribution includes all the source code you need for > _GDBP__ in a single directory @file{gdb-4.0}. That directory in turn > contains: > 5734c5911,5914 < @item @var{gnusrc}/gdb --- > @item gdb-4.0/configure > Overall script for configuring _GDBN__ and all its supporting libraries. > > @item gdb-4.0/gdb 5737c5917 < @item @var{gnusrc}/bfd --- > @item gdb-4.0/bfd 5740,5741c5920,5921 < @item @var{gnusrc}/include < @sc{gnu} include files --- > @item gdb-4.0/include > GNU include files 5743c5923 < @item @var{gnusrc}/libiberty --- > @item gdb-4.0/libiberty 5746,5747c5926,5927 < @item @var{gnusrc}/readline < source for the @sc{gnu} command-line interface --- > @item gdb-4.0/readline > source for the GNU command-line interface 5750,5756c5930,5935 < Each of these directories has its own @code{configure} script. < @var{gnusrc} has an overall @code{configure} script, which is < distributed with the @sc{gnu} libraries and includes. < < @code{configure} is designed to be called recursively, so it is most < convenient to run @code{configure} from the @var{gnusrc} directory. < The simplest way to configure and build _GDBN__ is the following: --- > Each of these directories has its own @code{configure} script, which are > used by the overall @code{configure} script in @file{gdb-4.0}. > > It is most convenient to run @code{configure} from the @file{gdb-4.0} > directory. The simplest way to configure and build _GDBN__ is the > following: 5758c5937 < cd @var{gnusrc} --- > cd gdb-4.0 5763c5942 < where @var{host} is something like @samp{sun4} or @samp{vax}, that --- > where @var{host} is something like @samp{sun4} or @samp{decstation}, that 5776,5778c5955,5958 < * Subdirectories:: Configuration subdirectories < * configure Options:: Summary of options for configure < * Formatting Manual:: How to format and print this manual --- > * Subdirectories:: Configuration subdirectories > * Config Names:: Specifying names for hosts and targets > * configure Options:: Summary of options for configure > * Formatting Manual:: How to format and print _GDBN__ documentation 5782c5962 < @node Subdirectories, configure Options, Installing _GDBN__, Installing _GDBN__ --- > @node Subdirectories, Config Names, Installing _GDBN__, Installing _GDBN__ 5784,5792c5964,5976 < If you build _GDBN__ for several host or target machines, and if < your @code{make} program handles the @samp{VPATH} feature < (@sc{gnu} @code{make} does), it is most convenient instead to build < the different _GDBN__ configurations in subdirectories (separate from < the source). @code{configure} does this for you when you simultaneously < specify several configurations; but it's a good habit even for a single < configuration. You can specify the use of subdirectories using the < @samp{+forcesubdirs} option (abbreviated @samp{+f}). For example, you < can build _GDBN__ on a Sun 4 as follows: --- > If you want to run _GDBN__ versions for several host or target machines, > you'll need a different _GDBP__ compiled for each combination of host > and target. @code{configure} is designed to make this easy by allowing > you to generate each configuration in a separate subdirectory. If your > @code{make} program handles the @samp{VPATH} feature (GNU @code{make} > does), running @code{make} in each of these directories then builds the > _GDBP__ program specified there. > > @code{configure} creates these subdirectories for you when you > simultaneously specify several configurations; but it's a good habit > even for a single configuration. You can specify the use of > subdirectories using the @samp{+subdirs} option (abbreviated > @samp{+sub}). For example, you can build _GDBN__ on a Sun 4 as follows: 5796,5798c5980,5982 < cd @var{gnusrc} < ./configure +f sun4 < cd Host-sun4/Target-sun4 --- > cd gdb-4.0 > ./configure +sub sun4 > cd Host-sparc-sun-sunos4/Target-sparc-sun-sunos4 5805,5814c5989,6002 < @file{Host-@var{host}/Target-@var{machine}}. This is because _GDBN__ < can be configured for cross-compiling: _GDBN__ can run on one machine < (the host) while debugging programs that run on another machine (the < target). You specify cross-debugging targets by giving the < @samp{+target=@var{machine}} option to @code{configure}. Specifying < only hosts still gives you two levels of subdirectory for each host, < with the same machine-name suffix on both. On the other hand, whenever < you specify both hosts and targets on the same command line, < @code{configure} creates all combinations of the hosts and targets you < list.@refill --- > @file{Host-@var{host}/Target-@var{target}}. (As you see in the example, > the names used for @var{host} and @var{target} may be expanded from your > @code{configure} argument; @pxref{Config Names}). @code{configure} uses > these two directory levels because _GDBN__ can be configured for > cross-compiling: _GDBN__ can run on one machine (the host) while > debugging programs that run on another machine (the target). You > specify cross-debugging targets by giving the > @samp{+target=@var{target}} option to @code{configure}. Specifying only > hosts still gives you two levels of subdirectory for each host, with the > same configuration suffix on both; that is, if you give any number of > hosts but no targets, _GDBN__ will be configured for native debugging on > each host. On the other hand, whenever you specify both hosts and > targets on the same command line, @code{configure} creates all > combinations of the hosts and targets you list.@refill 5819c6007 < If you have @file{Host-@var{host}/Target-@var{machine}} subdirectories, --- > If you have @file{Host-@var{host}/Target-@var{target}} subdirectories, 5823,5824c6011,6012 < runs recursively, so that typing @code{make} in @var{gnusrc} (or in a < @file{@var{gnusrc}/Host-@var{host}/Target-@var{machine}} subdirectory) --- > runs recursively, so that typing @code{make} in @file{gdb-4.0} (or in a > @file{gdb-4.0/Host-@var{host}/Target-@var{target}} subdirectory) 5827c6015 < If you run @code{configure} from a directory (such as @var{gnusrc}) that --- > If you run @code{configure} from a directory (such as @file{gdb-4.0}) that 5829c6017 < @code{configure} creates the @file{Host-@var{host}/Target-@var{machine}} --- > @code{configure} creates the @file{Host-@var{host}/Target-@var{target}} 5833,5834c6021,6022 < cd @var{gnusrc} < configure sun4 +target=vx960 --- > cd gdb-4.0 > configure sun4 +target=vxworks960 5838,5849c6026,6044 < @example < @var{gnusrc}/Host-sun4/Target-vx960 < @var{gnusrc}/bfd/Host-sun4/Target-vx960 < @var{gnusrc}/gdb/Host-sun4/Target-vx960 < @var{gnusrc}/libiberty/Host-sun4/Target-vx960 < @var{gnusrc}/readline/Host-sun4/Target-vx960 < @end example < @noindent < The @code{Makefile} in @file{@var{gnusrc}/Host-sun4/Target-vx960} < will @code{cd} to the appropriate lower-level directories < (such as @file{@var{gnusrc}/bfd/Host-sun4/Target-vx960}), building each < in turn. --- > @smallexample > gdb-4.0/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/bfd/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/gdb/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/libiberty/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/readline/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > @end smallexample > @noindent > The @code{Makefile} in > @smallexample > gdb-4.0/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > @end smallexample > @noindent > will @code{cd} to the appropriate lower-level directories, for example: > @smallexample > gdb-4.0/bfd/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > @end smallexample > @noindent > building each in turn. 5855c6050,6177 < @node configure Options, Formatting Manual, Subdirectories, Installing _GDBN__ --- > @node Config Names, configure Options, Subdirectories, Installing _GDBN__ > @section Specifying Names for Hosts and Targets > > The specifications used for hosts and targets in the @code{configure} > script are based on a three-part naming scheme, but some short predefined > aliases are also supported. The full naming scheme encodes three pieces > of information in the following pattern: > @example > @var{architecture}-@var{vendor}-@var{os} > @end example > > For example, you can use the alias @code{sun4} as a @var{host} argument > or in a @code{+target=}@var{target} option, but the full name of that > configuration specifies that the architecture is @samp{sparc}, the > vendor is @samp{sun}, and the operating system is @samp{sunos4}. > > @iftex > @c I know this is ugly, but @group is useless except in examples now... > @c (using texinfo 2.52 or so) > @page > @end iftex > > The following table shows all the architectures, hosts, and OS prefixes > that @code{configure} recognizes in _GDBN__ 4.0. Entries in the ``OS > prefix'' column ending in a @samp{*} may be followed by a release number. > > @ifinfo > @example > > ARCHITECTURE VENDOR OS prefix > ------------+-------------+------------- > | | > a29k | altos | aix* > alliant | aout | aout > arm | apollo | bout > c1 | att | bsd* > c2 | bout | coff > i386 | coff | ctix* > i860 | convergent | dynix* > i960 | convex | esix* > m68000 | dec | hpux* > m68k | encore | isc* > m88k | gould | mach* > mips | hp | newsos* > ns32k | ibm | nindy* > pyramid | intel | none > rs6000 | isi | osf* > rtpc | little | sco* > sparc | mips | sunos* > tahoe | motorola | sysv* > tron | ncr | ultrix* > vax | next | unos* > | none | v88r* > | sco | vms* > | sequent | vxworks* > | sgi | > | sony | > | sun | > | unicom | > | utek | > | wrs | > > @end example > @end ifinfo > @tex > \vskip \parskip\vskip \baselineskip > \halign{\hskip\parindent\tt #\hfil &\qquad#&\tt #\hfil &\qquad#&\tt #\hfil\cr > {\bf Architecture} &&{\bf Vendor} &&{\bf OS prefix}\cr > \noalign{\hrule} > \cr > a29k &&altos &&aix*\cr > alliant &&aout &&aout\cr > arm &&apollo &&bout\cr > c1 &&att &&bsd*\cr > c2 &&bout &&coff\cr > i386 &&coff &&ctix*\cr > i860 &&convergent &&dynix*\cr > i960 &&convex &&esix*\cr > m68000 &&dec &&hpux*\cr > m68k &&encore &&isc*\cr > m88k &&gould &&mach*\cr > mips &&hp &&newsos*\cr > ns32k &&ibm &&nindy*\cr > pyramid &&intel &&none\cr > rs6000 &&isi &&osf*\cr > rtpc &&little &&sco*\cr > sparc &&mips &&sunos*\cr > tahoe &&motorola &&sysv*\cr > tron &&ncr &&ultrix*\cr > vax &&next &&unos*\cr > &&none &&v88r*\cr > &&sco &&vms*\cr > &&sequent &&vxworks*\cr > &&sgi \cr > &&sony \cr > &&sun \cr > &&unicom \cr > &&utek \cr > &&wrs \cr > } > @end tex > @quotation > @emph{Warning:} Many combinations of architecture, vendor, and OS are > untested. > @end quotation > > The @code{configure} script accompanying _GDBN__ 4.0 does not provide > any query facility to list all supported host and target names or > aliases. @code{configure} calls the Bourne shell script > @code{config.sub} to map abbreviations to full names; you can read the > script, if you wish, or you can use it to test your guesses on > abbreviations---for example: > @example > % sh config.sub sun4 > sparc-sun-sunos4 > % sh config.sub sun3 > m68k-sun-sunos4 > % sh config.sub decstation > mips-dec-ultrix > % sh config.sub hp300bsd > m68k-hp-bsd > % sh config.sub i386v > i386-none-sysv > % sh config.sub i486v > *** No vendor: configuration `i486v' not recognized > @end example > > @node configure Options, Formatting Manual, Config Names, Installing _GDBN__ 5862,5863c6184,6185 < configure @r{[}+destdir=@var{dir}@r{]} @r{[}+forcesubdirs@r{]} @r{[}+norecur@r{]} @r{[}+rm@r{]} < @r{[}+target=@var{machine}@dots{}@r{]} @var{host}@dots{} --- > configure @r{[}+destdir=@var{dir}@r{]} @r{[}+subdirs@r{]} @r{[}+norecur@r{]} @r{[}+rm@r{]} > @r{[}+target=@var{target}@dots{}@r{]} @var{host}@dots{} 5867c6189,6190 < @samp{+} if you prefer; but options introduced with @samp{+} may be truncated. --- > @samp{+} if you prefer; but you may abbreviate option names if you use > @samp{+}. 5877c6200 < @item +forcesubdirs --- > @item +subdirs 5880c6203 < Host-@var{machine}/Target-@var{machine} --- > Host-@var{host}/Target-@var{target} 5887c6210 < more than one @var{host} or more than one @samp{+target=@var{machine}} --- > more than one @var{host} or more than one @samp{+target=@var{target}} 5895c6218 < Remove the configuration specified by other arguments. --- > Remove the configuration that the other arguments specify. 5897c6220 < @item +target=@var{machine} @dots{} --- > @item +target=@var{target} @dots{} 5899,5903c6222,6226 < @var{machine}. You may specify as many @samp{+target} options as you < wish. To see a list of available targets, execute @samp{ls tconfig} in < the _GDBN__ source directory. Without this option, _GDBN__ is < configured to debug programs that run on the same machine (@var{host}) < as _GDBN__ itself. --- > @var{target}. You may specify as many @samp{+target} options as you > wish. Without this option, _GDBN__ is configured to debug programs that > run on the same machine (@var{host}) as _GDBN__ itself. > > There is no convenient way to generate a list of all available targets. 5907,5908c6230,6232 < many host names as you wish. To see a list of available hosts, execute < @samp{ls xconfig} in the _GDBN__ source directory. --- > many host names as you wish. > > There is no convenient way to generate a list of all available hosts. 5913c6237 < configuring other @sc{gnu} tools recursively; but these are the only --- > configuring other GNU tools recursively; but these are the only 5919,5920c6243,6250 < To format the _GDBN__ manual as an Info file, you need the @sc{gnu} < @code{makeinfo} program. Once you have it, you can type --- > The _GDBN__ 4.0 release includes the Info version of this manual already > formatted: the main Info file is @file{gdb-4.0/gdb/gdb.info}, and it > refers to subordinate files matching @samp{gdb.info*} in the same > directory. > > If you want to make these Info files yourself from the _GDBN__ manual's > source, you need the GNU @code{makeinfo} program. Once you have it, you > can type 5922c6252 < cd @var{gnusrc}/gdb --- > cd gdb-4.0/gdb 5936c6266 < @file{@var{gnusrc}/texinfo}: @TeX{} macros defining the @sc{gnu} --- > @file{gdb-4.0/texinfo}: @TeX{} macros defining the GNU 5948c6278 < cd @var{gnusrc}/gdb --- > cd gdb-4.0/gdb 5953a6284,6307 > > @cindex _GDBN__ reference card > @cindex reference card > You might also want hard copy of the _GDBN__ reference card. The > _GDBN__ 4.0 release includes an already-formatted reference card, ready > for printing on a PostScript printer, as @file{gdb-4.0/gdb/refcard.ps}. > It uses the most common PostScript fonts: the Times family, Courier, and > Symbol. If you have a PostScript printer you can print the reference > card by just sending @file{refcard.ps} to the printer. > > If you have some other kind of printer, or want to print using Computer > Modern fonts instead, you can still print the reference card if you have > @TeX{}. Format the reference card by typing > @example > cd gdb-4.0/gdb > make refcard.dvi > @end example > @noindent > > The _GDBN__ reference card is designed to print in landscape mode on US > ``letter'' size paper; that is, on a sheet 11 inches wide by 8.5 inches > high. You will need to specify this form of printing as an option to > your @sc{dvi} output program. > diff -r gdb-3.98/gdb/doc/gdbint.texinfo gdb-4.0/gdb/doc/gdbint.texinfo 2,3c2,3 < @setfilename gdb-internals < @c $Id: gdbint.texinfo,v 1.11 1991/07/22 18:19:17 pesch Exp $ --- > @setfilename gdbint.info > @c $Id: gdbint.texinfo,v 1.16 1991/08/24 00:43:28 pesch Exp $ 26c26 < @setchapternewpage odd --- > @setchapternewpage off 36c36 < \xdef\manvers{\$Revision: 1.11 $} % For use in headers, footers too --- > \xdef\manvers{\$Revision: 1.16 $} % For use in headers, footers too 60a61,64 > * Host:: Adding a New Host > * Target:: Adding a New Target > * Config:: Extending @code{configure} > * BFD support for GDB:: How BFD and GDB interface 70c74 < later. When your code does something (like malloc some memory, or open --- > later. When your code does something (like @code{malloc} some memory, or open 82,88c86,91 < @item old_chain = make_cleanup (function, arg); < This makes a cleanup which will cause FUNCTION to be called with ARG < (a char *) later. The result, OLD_CHAIN, is a handle that can be < passed to do_cleanups or discard_cleanups later. Unless you are < going to call do_cleanups or discard_cleanups yourself, < you can ignore the result from make_cleanup. < --- > @item @var{old_chain} = make_cleanup (@var{function}, @var{arg}); > Make a cleanup which will cause @var{function} to be called with @var{arg} > (a @code{char *}) later. The result, @var{old_chain}, is a handle that can be > passed to @code{do_cleanups} or @code{discard_cleanups} later. Unless you are > going to call @code{do_cleanups} or @code{discard_cleanups} yourself, > you can ignore the result from @code{make_cleanup}. 90,93c93,103 < @item do_cleanups (old_chain); < Performs all cleanups done since make_cleanup returned OLD_CHAIN. < E.g.: make_cleanup (a, 0); old = make_cleanup (b, 0); do_cleanups (old); < will call b() but will not call a(). The cleanup that calls a() will remain --- > > @item do_cleanups (@var{old_chain}); > Perform all cleanups done since @code{make_cleanup} returned @var{old_chain}. > E.g.: > @example > make_cleanup (a, 0); > old = make_cleanup (b, 0); > do_cleanups (old); > @end example > @noindent > will call @code{b()} but will not call @code{a()}. The cleanup that calls @code{a()} will remain 96,97c106,107 < @item discard_cleanups (old_chain); < Same as do_cleanups except that it just removes the cleanups from the --- > @item discard_cleanups (@var{old_chain}); > Same as @code{do_cleanups} except that it just removes the cleanups from the 112,113c122,123 < Output that goes through printf_filtered or fputs_filtered or < fputs_demangled needs only to have calls to wrap_here() added --- > Output that goes through @code{printf_filtered} or @code{fputs_filtered} or > @code{fputs_demangled} needs only to have calls to @code{wrap_here} added 117,120c127,130 < The argument to wrap_here() is an indentation string which is printed < ONLY if the line breaks there. This argument is saved away and used < later. It must remain valid until the next call to wrap_here() or < until a newline has been printed through the *_filtered functions. --- > The argument to @code{wrap_here} is an indentation string which is printed > @emph{only} if the line breaks there. This argument is saved away and used > later. It must remain valid until the next call to @code{wrap_here} or > until a newline has been printed through the @code{*_filtered} functions. 172c182 < @node New Architectures, Host versus Target, README, Top --- > @node New Architectures, Host, README, Top 182c192,196 < = }@dots{}. You can also define XXXXXX in there. --- > = }@dots{}. The header file that defines the host system should be > called xm-@var{ARCH}.h, and should be specified as the value of @samp{XM_FILE=} > in @file{xconfig/@var{ARCH}}. > You can also define @samp{CC}, @samp{REGEX} and @samp{REGEX1}, > @samp{SYSV_DEFINE}, @samp{XM_CFLAGS}, etc in there; see @file{Makefile.in}. 217,219c231,237 < Files needed when the target system is an @var{ARCH} are listed in the file < @file{tconfig/@var{ARCH}}, in the @code{Makefile} macro @samp{TDEPFILES = }@dots{}. You can also < define XXXXXX in there. --- > Object files needed when the target system is an @var{ARCH} are listed in > the file @file{tconfig/@var{ARCH}}, in the Makefile macro @samp{TDEPFILES > = }@dots{}. The header file that defines the target system should be > called tm-@var{ARCH}.h, and should be specified as the value of @samp{TM_FILE} > in @file{tconfig/@var{ARCH}}. > You can also define @samp{TM_CFLAGS}, @samp{TM_CLIBS}, and @samp{TM_CDEPS} > in there; see @file{Makefile.in}. 233c251,469 < @node Host versus Target, Symbol Reading, New Architectures, Top --- > @node Host, Target, New Architectures, Top > @chapter Adding a New Host > > There are two halves to making GDB work on a new machine. First, > you have to make it host on the new machine (compile there, handle > that machine's terminals properly, etc). If you will be cross-debugging > to some other kind of system, you are done. > > (If you want to use GDB to debug programs that run on the new machine, > you have to get it to understand the machine's object files, symbol > files, and interfaces to processes. @pxref{Target}.) > > Most of the work in making GDB compile on a new machine is in specifying > the configuration of the machine. This is done in a dizzying variety > of header files and configuration scripts, which we hope to make more > sensible soon. Let's say your new host is called an XXX (e.g. sun4), > and its full three-part configuration name is XARCH-XVEND-XOS (e.g. > sparc-sun-sunos4). In particular: > > At the top level, edit @file{config.sub} and add XARCH, XVEND, and > XOS to the lists of supported architectures, vendors, and operating systems > near the bottom of the file. Also, add XXX as an alias that maps to > XARCH-XVEND-XOS. You can test your changes by running > > @example > ./config.sub XXX > @end example > @noindent > and > @example > ./config.sub XARCH-XVEND-XOS > @end example > @noindent > which should both respond with XARCH-XVEND-XOS and no error messages. > > Then edit @file{include/sysdep.h}. Add a new #define for XXX_SYS, with > a numeric value not already in use. Add a new section that says > > @example > #if HOST_SYS==XXX_SYS > #include > #endif > @end example > > Now create a new file @file{include/sys/h-XXX.h}. Examine the other > h-*.h files as templates, and create one that brings in the right include > files for your system, and defines any host-specific macros needed by > GDB. > > Now, go to the bfd directory and edit @file{bfd/configure.in}. Add shell > script code to recognize your XARCH-XVEND-XOS configuration, and set > bfd_host to XXX when you recognize it. Now create a file > @file{bfd/config/hmake-XXX}, which includes the line: > > @example > HDEFINES=-DHOST_SYS=XXX_SYS > @end example > > (If you have the binutils in the same tree, you'll have to do the same > thing to in the binutils directory as you've done in the bfd directory.) > > It's likely that the libiberty and readline directories won't need any > changes for your configuration, but if they do, you can change the > @file{configure.in} file there to recognize your system and map to an > hmake-XXX file. Then add @file{hmake-XXX} to the @file{config/} subdirectory, > to set any makefile variables you need. The only current options > in there are things like -DSYSV. > > Aha! Now to configure GDB itself! Modify @file{gdb/configure.in} to > recognize your system and set gdb_host to XXX. Add a file > @file{gdb/xconfig/XXX} which specifies XDEPFILES=(whatever is needed), > and XM_FILE= xm-XXX.h. Create @file{gdb/xm-XXX.h} with the appropriate > #define's for your system (crib from existing xm-*.h files). > If your machine needs custom support routines, you can put them in > a file @file{gdb/XXX-xdep.c}, and add XXX-xdep.o to the XDEPFILES= > line. If not, you can use the generic routines for ptrace support > (infptrace.o) and core files (coredep.o). These can be customized > in various ways by macros defined in your @file{xm-XXX.h} file. > > Now, from the top level (above bfd, gdb, etc), run: > > @example > ./configure -template=./configure > @end example > > This will rebuild all your configure scripts, using the new > configure.in files that you modified. (You can also run this command > at any subdirectory level.) You are now ready to try configuring > GDB to compile for your system. Do: > > @example > ./configure XXX +target=vxworks960 > @end example > > This will configure your system to cross-compile for VxWorks on > the Intel 960, which is probably not what you really want, but it's > a test case that works at this stage. (You haven't set up to be > able to debug programs that run @emph{on} XXX yet.) > > If this succeeds, you can try building it all with: > > @example > make > @end example > > Good luck! Comments and suggestions about this section are particularly > welcome; send them to bug-gdb@@prep.ai.mit.edu. > > When hosting GDB on a new operating system, to make it possible > to debug core files, you will need to either > write specific code for parsing your OS's core files, or customize > bfd/trad-core.c. First, use whatever #include files your machine uses > to define the struct of registers that is accessible (possibly in the > upage) in a core file (rather than ), and an include > file that defines whatever header exists on a core file (e.g. the > u-area or a "struct core"). Then modify @samp{trad_unix_core_file_p} > to use these values to set up the section information for the data > segment, stack segment, any other segments in the core file (perhaps > shared library contents or control information), "registers" segment, > and if there are two discontiguous sets of registers (e.g. integer and > float), the "reg2" segment. This section information basically > delimits areas in the core file in a standard way, which the > section-reading routines in BFD know how to seek around in. > > Then back in GDB, you need a matching routine called fetch_core_registers. > If you can use the generic one, it's in core-dep.c; if not, it's in > your foobar-xdep.c file. It will be passed a char pointer > to the entire "registers" segment, its length, and a zero; or a char > pointer to the entire "regs2" segment, its length, and a 2. The > routine should suck out the supplied register values and install them into > gdb's "registers" array. (@xref{New Architectures} > for more info about this.) > > @node Target, Config, Host, Top > @chapter Adding a New Target > > When adding support for a new target machine, there are various areas > of support that might need change, or might be OK. > > If you are using an existing object file format (a.out or COFF), > there is probably little to be done. See @file{bfd/doc/bfd.texinfo} > for more information on writing new a.out or COFF versions. > > If you need to add a new object file format, you are beyond the scope > of this document right now. Look at the structure of the a.out > and COFF support, build a transfer vector (xvec) for your new format, > and start populating it with routines. Add it to the list in > @file{bfd/targets.c}. > > If you are adding a new existing CPU chip (e.g. m68k family), you'll > need to define an XARCH-opcode.h file, a tm-XARCH.h file that gives > the basic layout of the chip (registers, stack, etc), probably > an XARCH-tdep.c file that has support routines for tm-XARCH.h, etc. > > If you are adding a new operating system for an existing CPU chip, > add a tm-XOS.h file that describes the operating system facilities > that are unusual (extra symbol table info; the breakpoint > instruction needed; etc). Then write a @file{tm-XARCH-XOS.h} > that just #include's tm-XARCH.h and tm-XOS.h. (Now that we have > three-part configuration names, this will probably get revised to > separate the OS configuration from the ARCH configuration. FIXME.) > > @node Config, BFD support for GDB, Target, Top > @chapter Extending @code{configure} > Once you have added a new host, target, or both, you'll also need to > extend the @code{configure} script to recognize the new configuration > possibilities. > > You shouldn't edit the @code{configure} script itself to add hosts or > targets; instead, edit the script fragments in the file > @code{configure.in}. To handle new hosts, modify the segment after the > comment @samp{# per-host}; to handle new targets, modify after @samp{# > per-target}. > @c Would it be simpler to just use different per-host and per-target > @c *scripts*, and call them from {configure} ? > > Then fold your changes into the @code{configure} script by using the > @code{+template} option, and specifying @code{configure} itself as the > template: > @example > configure +template=configure > @end example > @c If "configure" is the only workable option value for +template, it's > @c kind of silly to insist that it be provided. If it isn't, somebody > @c please fill in here what are others... (then delete this comment!) > > @node BFD support for GDB, Host versus Target, Config, Top > @chapter Binary File Descriptor library support for GDB > > BFD provides support for GDB in several ways: > > @table @emph > @item identifying executable and core files > BFD will identify a variety of file types, including a.out, coff, and > several variants thereof, as well as several kinds of core files. > > @item access to sections of files > BFD parses the file headers to determine the names, virtual addresses, > sizes, and file locations of all the various named sections in files > (such as the text section or the data section). GDB simply calls > BFD to read or write section X at byte offset Y for length Z. > > @item specialized core file support > BFD provides routines to determine the failing command name stored > in a core file, the signal with which the program failed, and whether > a core file matches (i.e. could be a core dump of) a particular executable > file. > > @item locating the symbol information > GDB uses an internal interface of BFD to determine where to find the > symbol information in an executable file or symbol-file. GDB itself > handles the reading of symbols, since BFD does not ``understand'' debug > symbols, but GDB uses BFD's cached information to find the symbols, > string table, etc. > @end table > > The interface for symbol reading is described in @xref{Symbol Reading}. > > @node Host versus Target, Symbol Reading, BFD support for GDB, Top Only in gdb-3.98/gdb/doc: gdbrc.dvi Only in gdb-3.98/gdb/doc: gdbrc.log Only in gdb-3.98/gdb/doc: gdbrc.tex Only in gdb-4.0/gdb/doc: rc-cm.tex Only in gdb-4.0/gdb/doc: rc-ps.tex Only in gdb-4.0/gdb/doc: rc-pslong.tex Only in gdb-4.0/gdb/doc: rcfonts.tex Only in gdb-4.0/gdb/doc: rdl-apps.texi Only in gdb-4.0/gdb/doc: refcard.tex diff -r gdb-3.98/gdb/exec.c gdb-4.0/gdb/exec.c 49d48 < extern void add_syms_addr_command (); 56,59d54 < /* The base and bounds of the table of the exec file's sections. */ < < struct section_table *exec_sections, *exec_sections_end; < 72a68,72 > if (exec_ops.sections) { > free (exec_ops.sections); > exec_ops.sections = NULL; > exec_ops.sections_end = NULL; > } 137c137,138 < if (build_section_table (exec_bfd, &exec_sections, &exec_sections_end)) --- > if (build_section_table (exec_bfd, &exec_ops.sections, > &exec_ops.sections_end)) 185a187 > (*table_pp)->bfd = abfd; 215c217 < Args are address within exec file, address within gdb address-space, --- > Args are address within a BFD file, address within gdb address-space, 232c234 < xfer_memory (memaddr, myaddr, len, write, abfd, sections, sections_end) --- > xfer_memory (memaddr, myaddr, len, write, target) 237,238c239 < bfd *abfd; < struct section_table *sections, *sections_end; --- > struct target_ops *target; 252c253 < for (p = sections; p < sections_end; p++) --- > for (p = target->sections; p < target->sections_end; p++) 258c259 < res = xfer_fn (abfd, p->sec_ptr, myaddr, memaddr - p->addr, len); --- > res = xfer_fn (p->bfd, p->sec_ptr, myaddr, memaddr - p->addr, len); 270c271 < res = xfer_fn (abfd, p->sec_ptr, myaddr, memaddr - p->addr, len); --- > res = xfer_fn (p->bfd, p->sec_ptr, myaddr, memaddr - p->addr, len); 283,296d283 < /* The function called by target_xfer_memory via our target_ops */ < < int < exec_xfer_memory (memaddr, myaddr, len, write) < CORE_ADDR memaddr; < char *myaddr; < int len; < int write; < { < return xfer_memory (memaddr, myaddr, len, write, < exec_bfd, exec_sections, exec_sections_end); < } < < 319c306 < for (p = exec_sections; p < exec_sections_end; p++) --- > for (p = exec_ops.sections; p < exec_ops.sections_end; p++) 347c334 < for (p = exec_sections; p < exec_sections_end; p++) { --- > for (p = exec_ops.sections; p < exec_ops.sections_end; p++) { 372c359 < exec_xfer_memory, exec_files_info, --- > xfer_memory, exec_files_info, 376d362 < add_syms_addr_command, 381a368 > 0, 0, /* section pointers */ diff -r gdb-3.98/gdb/expprint.c gdb-4.0/gdb/expprint.c 119a120 > value val; 131c132 < fprintf (stream, " :: "); --- > fputs_filtered (" :: ", stream); 135c136 < fprintf (stream, &exp->elts[pc + 2].string); --- > fputs_filtered (&exp->elts[pc + 2].string, stream); 154c155 < fprintf (stream, "%s", SYMBOL_NAME (exp->elts[pc + 1].symbol)); --- > fputs_filtered (SYMBOL_NAME (exp->elts[pc + 1].symbol), stream); 159c160,161 < fprintf (stream, "$%d", longest_to_int (exp->elts[pc + 1].longconst)); --- > fprintf_filtered (stream, "$%d", > longest_to_int (exp->elts[pc + 1].longconst)); 164c166 < fprintf (stream, "$%s", --- > fprintf_filtered (stream, "$%s", 170c172 < fprintf (stream, "$%s", --- > fprintf_filtered (stream, "$%s", 178c180 < fprintf (stream, " ("); --- > fputs_filtered (" (", stream); 182c184 < fprintf (stream, ", "); --- > fputs_filtered (", ", stream); 185c187 < fprintf (stream, ")"); --- > fputs_filtered (")", stream); 191c193 < fprintf (stream, "\""); --- > fputs_filtered ("\"", stream); 194c196 < fprintf (stream, "\""); --- > fputs_filtered ("\"", stream); 199c201 < fprintf (stream, "("); --- > fputs_filtered ("(", stream); 205c207 < fprintf (stream, " ? "); --- > fputs_filtered (" ? ", stream); 207c209 < fprintf (stream, " : "); --- > fputs_filtered (" : ", stream); 210c212 < fprintf (stream, ")"); --- > fputs_filtered (")", stream); 217c219,220 < fprintf (stream, ".%s", &exp->elts[pc + 1].string); --- > fputs_filtered (".", stream); > fputs_filtered (&exp->elts[pc + 1].string, stream); 224c227,228 < fprintf (stream, "->%s", &exp->elts[pc + 1].string); --- > fputs_filtered ("->", stream); > fputs_filtered (&exp->elts[pc + 1].string, stream); 229c233 < fprintf (stream, "["); --- > fputs_filtered ("[", stream); 231c235 < fprintf (stream, "]"); --- > fputs_filtered ("]", stream); 236c240 < fprintf (stream, "++"); --- > fputs_filtered ("++", stream); 241c245 < fprintf (stream, "--"); --- > fputs_filtered ("--", stream); 247,248c251,252 < fprintf (stream, "("); < fprintf (stream, "("); --- > fputs_filtered ("(", stream); > fputs_filtered ("(", stream); 250c254 < fprintf (stream, ") "); --- > fputs_filtered (") ", stream); 253c257 < fprintf (stream, ")"); --- > fputs_filtered (")", stream); 259,263c263,279 < fprintf (stream, "("); < fprintf (stream, "{"); < type_print (exp->elts[pc + 1].type, "", stream, 0); < fprintf (stream, "} "); < print_subexp (exp, pos, stream, PREC_PREFIX); --- > fputs_filtered ("(", stream); > if (exp->elts[pc + 1].type->code == TYPE_CODE_FUNC && > exp->elts[pc + 3].opcode == OP_LONG) { > /* We have a misc function vector fn, probably. It's encoded > as a UNOP_MEMVAL (function-type) of an OP_LONG (int, address). > Swallow the OP_LONG (including both its opcodes); ignore > its type; print the value in the type of the MEMVAL. */ > (*pos) += 4; > val = value_at_lazy (exp->elts[pc + 1].type, > exp->elts[pc + 5].longconst); > value_print (val, stream, 0, Val_no_prettyprint); > } else { > fputs_filtered ("{", stream); > type_print (exp->elts[pc + 1].type, "", stream, 0); > fputs_filtered ("} ", stream); > print_subexp (exp, pos, stream, PREC_PREFIX); > } 265c281 < fprintf (stream, ")"); --- > fputs_filtered (")", stream); 284c300 < fprintf (stream, "this"); --- > fputs_filtered ("this", stream); 299c315 < fprintf (stream, "("); --- > fputs_filtered ("(", stream); 303c319 < fprintf (stream, "%s", op_str); --- > fputs_filtered (op_str, stream); 316c332 < fprintf (stream, " %s= ", op_str); --- > fprintf_filtered (stream, " %s= ", op_str); 318c334 < fprintf (stream, "%s ", op_str); --- > fprintf_filtered (stream, "%s ", op_str); 320c336 < fprintf (stream, " %s ", op_str); --- > fprintf_filtered (stream, " %s ", op_str); 328c344 < fprintf (stream, ")"); --- > fputs_filtered (")", stream); diff -r gdb-3.98/gdb/expread.tab.c gdb-4.0/gdb/expread.tab.c 226,284c226 < static const short yyprhs[] = { 0, < 0, 2, 4, 8, 11, 14, 17, 20, 23, 26, < 29, 32, 35, 38, 42, 47, 51, 56, 61, 62, < 68, 69, 71, 75, 80, 85, 89, 93, 97, 101, < 105, 109, 113, 117, 121, 125, 129, 133, 137, 141, < 145, 149, 153, 157, 161, 165, 171, 175, 179, 181, < 183, 185, 187, 189, 191, 193, 195, 197, 199, 204, < 206, 208, 210, 214, 218, 222, 227, 230, 232, 234, < 237, 239, 242, 244, 247, 249, 253, 256, 258, 261, < 263, 266, 270, 273, 275, 279, 286, 295, 305, 307, < 309, 311, 313, 316, 320, 323, 327, 331, 336, 339, < 343, 346, 349, 352, 355, 357, 360, 362, 364, 366, < 368, 370, 372, 376, 378, 380, 382, 384, 386, 388 < }; < < static const short yyrhs[] = { 67, < 0, 68, 0, 67, 29, 68, 0, 49, 68, 0, < 37, 68, 0, 48, 68, 0, 59, 68, 0, 60, < 68, 0, 53, 68, 0, 54, 68, 0, 68, 53, < 0, 68, 54, 0, 16, 68, 0, 68, 55, 82, < 0, 68, 55, 49, 68, 0, 68, 56, 82, 0, < 68, 56, 49, 68, 0, 68, 57, 67, 61, 0, < 0, 68, 58, 69, 70, 62, 0, 0, 68, 0, < 70, 29, 68, 0, 63, 78, 64, 68, 0, 58, < 78, 62, 68, 0, 58, 67, 62, 0, 68, 46, < 68, 0, 68, 49, 68, 0, 68, 50, 68, 0, < 68, 51, 68, 0, 68, 47, 68, 0, 68, 48, < 68, 0, 68, 44, 68, 0, 68, 45, 68, 0, < 68, 38, 68, 0, 68, 39, 68, 0, 68, 42, < 68, 0, 68, 43, 68, 0, 68, 40, 68, 0, < 68, 41, 68, 0, 68, 37, 68, 0, 68, 36, < 68, 0, 68, 35, 68, 0, 68, 34, 68, 0, < 68, 33, 68, 0, 68, 32, 68, 65, 68, 0, < 68, 31, 68, 0, 68, 27, 68, 0, 3, 0, < 11, 0, 5, 0, 12, 0, 4, 0, 6, 0, < 72, 0, 24, 0, 25, 0, 26, 0, 16, 58, < 78, 62, 0, 7, 0, 28, 0, 9, 0, 71, < 18, 82, 0, 71, 18, 82, 0, 79, 18, 82, < 0, 79, 18, 60, 82, 0, 18, 82, 0, 83, < 0, 79, 0, 79, 74, 0, 49, 0, 49, 74, < 0, 37, 0, 37, 74, 0, 75, 0, 58, 74, < 62, 0, 75, 76, 0, 76, 0, 75, 77, 0, < 77, 0, 57, 61, 0, 57, 3, 61, 0, 58, < 62, 0, 73, 0, 79, 18, 49, 0, 78, 58, < 79, 18, 49, 62, 0, 78, 58, 79, 18, 49, < 62, 58, 62, 0, 78, 58, 79, 18, 49, 62, < 58, 81, 62, 0, 10, 0, 23, 0, 21, 0, < 22, 0, 21, 23, 0, 17, 21, 23, 0, 21, < 21, 0, 21, 21, 23, 0, 17, 21, 21, 0, < 17, 21, 21, 23, 0, 22, 23, 0, 17, 22, < 23, 0, 13, 82, 0, 14, 82, 0, 15, 82, < 0, 17, 80, 0, 17, 0, 20, 80, 0, 20, < 0, 10, 0, 23, 0, 21, 0, 22, 0, 78, < 0, 81, 29, 78, 0, 8, 0, 9, 0, 10, < 0, 11, 0, 12, 0, 8, 0, 9, 0 < }; < < #if YYDEBUG != 0 < static const short yyrline[] = { 0, --- > static const short yyrline[] = { 0, 299c241 < static const char * const yytname[] = { "$", --- > static const char * const yytname[] = { 0, 306,308c248 < "']'","')'","'{'","'}'","':'","start","exp1","exp","@1","arglist", < "block","variable","ptype","abs_decl","direct_abs_decl","array_mod","func_mod","type","typebase","typename", < "nonempty_typelist","name","name_not_typename","" --- > "']'","')'","'{'","'}'","':'","start" 310d249 < #endif 524a464,465 > #define YYPURE 1 > 526c467 < #line 3 "/usr/latest/lib/bison.simple" --- > #line 3 "bison.simple" 529c470 < Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman --- > Copyright (C) 1984 Bob Corbett and Richard Stallman 546,549d486 < #ifndef alloca < #ifdef __GNUC__ < #define alloca __builtin_alloca < #else /* Not GNU C. */ 552,558c489 < #else /* Not sparc */ < #ifdef MSDOS < #include < #endif /* MSDOS */ < #endif /* Not sparc. */ < #endif /* Not GNU C. */ < #endif /* alloca not defined. */ --- > #endif 572a504 > #define YYFAIL goto yyerrlab; 575,592c507 < #define YYERROR goto yyerrlab1 < /* Like YYERROR except do call yyerror. < This remains here temporarily to ease the < transition to the new meaning of YYERROR, for GCC. < Once GCC version 2 has supplanted version 1, this can go. */ < #define YYFAIL goto yyerrlab < #define YYRECOVERING() (!!yyerrstatus) < #define YYBACKUP(token, value) \ < do \ < if (yychar == YYEMPTY && yylen == 1) \ < { yychar = (token), yylval = (value); \ < yychar1 = YYTRANSLATE (yychar); \ < YYPOPSTACK; \ < goto yybackup; \ < } \ < else \ < { yyerror ("syntax error: cannot back up"); YYERROR; } \ < while (0) --- > #define YYERROR goto yyerrlab 597c512 < #ifndef YYPURE --- > #ifndef YYIMPURE 601,602c516 < #ifdef YYPURE < #ifdef YYLSP_NEEDED --- > #ifndef YYPURE 604,605d517 < #else < #define YYLEX yylex(&yylval) 607d518 < #endif 611c522 < #ifndef YYPURE --- > #ifndef YYIMPURE 617d527 < #ifdef YYLSP_NEEDED 620d529 < #endif 623c532 < #endif /* not YYPURE */ --- > #endif /* YYIMPURE */ 631c540 < /* YYINITDEPTH indicates the initial size of the parser's stacks */ --- > /* YYMAXDEPTH indicates the initial size of the parser's stacks */ 633,634c542,543 < #ifndef YYINITDEPTH < #define YYINITDEPTH 200 --- > #ifndef YYMAXDEPTH > #define YYMAXDEPTH 200 637c546 < /* YYMAXDEPTH is the maximum size the stacks can grow to --- > /* YYMAXLIMIT is the maximum size the stacks can grow to 640,645c549,550 < #if YYMAXDEPTH == 0 < #undef YYMAXDEPTH < #endif < < #ifndef YYMAXDEPTH < #define YYMAXDEPTH 10000 --- > #ifndef YYMAXLIMIT > #define YYMAXLIMIT 10000 647,648d551 < < #ifndef __cplusplus 650,679d552 < /* This is the most reliable way to avoid incompatibilities < in available built-in functions on various systems. */ < static void < __yy_bcopy (from, to, count) < char *from; < char *to; < int count; < { < register char *f = from; < register char *t = to; < register int i = count; < < while (i-- > 0) < *t++ = *f++; < } < < #else /* __cplusplus */ < < /* This is the most reliable way to avoid incompatibilities < in available built-in functions on various systems. */ < static void < __yy_bcopy (char *from, char *to, int count) < { < register char *f = from; < register char *t = to; < register int i = count; < < while (i-- > 0) < *t++ = *f++; < } 681,683c554 < #endif < < #line 160 "/usr/latest/lib/bison.simple" --- > #line 90 "bison.simple" 690a562 > YYLTYPE *yylsp; 694,695c566,568 < short yyssa[YYINITDEPTH]; /* the state stack */ < YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ --- > short yyssa[YYMAXDEPTH]; /* the state stack */ > YYSTYPE yyvsa[YYMAXDEPTH]; /* the semantic value stack */ > YYLTYPE yylsa[YYMAXDEPTH]; /* the location stack */ 699,700d571 < < #ifdef YYLSP_NEEDED 702,703d572 < YYLTYPE *yylsp; < YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ 705,710c574 < #define YYPOPSTACK (yyvsp--, yysp--, yylsp--) < #else < #define YYPOPSTACK (yyvsp--, yysp--) < #endif < < int yystacksize = YYINITDEPTH; --- > int yymaxdepth = YYMAXDEPTH; 712c576 < #ifdef YYPURE --- > #ifndef YYPURE 715,716d578 < int yynerrs; < #ifdef YYLSP_NEEDED 718c580 < #endif --- > int yynerrs; 743d604 < #ifdef YYLSP_NEEDED 745d605 < #endif 754c614 < if (yyssp >= yyss + yystacksize - 1) --- > if (yyssp >= yyss + yymaxdepth - 1) 759,760d618 < short *yyss1 = yyss; < #ifdef YYLSP_NEEDED 762c620 < #endif --- > short *yyss1 = yyss; 773d630 < #ifdef YYLSP_NEEDED 775,776c632 < #endif < &yystacksize); --- > &yymaxdepth); 778,781c634 < yyss = yyss1; yyvs = yyvs1; < #ifdef YYLSP_NEEDED < yyls = yyls1; < #endif --- > yyss = yyss1; yyvs = yyvs1; yyls = yyls1; 784,795c637,645 < if (yystacksize >= YYMAXDEPTH) < { < yyerror("parser stack overflow"); < return 2; < } < yystacksize *= 2; < if (yystacksize > YYMAXDEPTH) < yystacksize = YYMAXDEPTH; < yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); < __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); < yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); < __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); --- > if (yymaxdepth >= YYMAXLIMIT) > yyerror("parser stack overflow"); > yymaxdepth *= 2; > if (yymaxdepth > YYMAXLIMIT) > yymaxdepth = YYMAXLIMIT; > yyss = (short *) alloca (yymaxdepth * sizeof (*yyssp)); > bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); > yyvs = (YYSTYPE *) alloca (yymaxdepth * sizeof (*yyvsp)); > bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); 797,798c647,648 < yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); < __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); --- > yyls = (YYLTYPE *) alloca (yymaxdepth * sizeof (*yylsp)); > bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); 810c660 < fprintf(stderr, "Stack size increased to %d\n", yystacksize); --- > fprintf(stderr, "Stack size increased to %d\n", yymaxdepth); 813c663 < if (yyssp >= yyss + yystacksize - 1) --- > if (yyssp >= yyss + yymaxdepth - 1) 822,823d671 < yybackup: < 826c674 < /* yyresume: */ --- > yyresume: 933,941c781,786 < int i; < < fprintf (stderr, "Reducing via rule %d (line %d), ", < yyn, yyrline[yyn]); < < /* Print the symboles being reduced, and their result. */ < for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) < fprintf (stderr, "%s ", yytname[yyrhs[i]]); < fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); --- > if (yylen == 1) > fprintf (stderr, "Reducing 1 value via line %d, ", > yyrline[yyn]); > else > fprintf (stderr, "Reducing %d values via line %d, ", > yylen, yyrline[yyn]); 1700c1545 < #line 423 "/usr/latest/lib/bison.simple" --- > #line 327 "bison.simple" 1759,1793c1604 < < #ifdef YYERROR_VERBOSE < yyn = yypact[yystate]; < < if (yyn > YYFLAG && yyn < YYLAST) < { < int size = 0; < char *msg; < int x, count; < < count = 0; < for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) < if (yycheck[x + yyn] == x) < size += strlen(yytname[x]) + 15, count++; < msg = (char *) xmalloc(size + 15); < strcpy(msg, "parse error"); < < if (count < 5) < { < count = 0; < for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) < if (yycheck[x + yyn] == x) < { < strcat(msg, count == 0 ? ", expecting `" : " or `"); < strcat(msg, yytname[x]); < strcat(msg, "'"); < count++; < } < } < yyerror(msg); < free(msg); < } < else < #endif /* YYERROR_VERBOSE */ < yyerror("parse error"); --- > yyerror("parse error"); 1796,1797d1606 < yyerrlab1: /* here on error raised explicitly by an action */ < 2589a2399 > /* ARGSUSED */ diff -r gdb-3.98/gdb/expread.y gdb-4.0/gdb/expread.y 1629a1630 > /* ARGSUSED */ diff -r gdb-3.98/gdb/gdb.info gdb-4.0/gdb/gdb.info 2c2 < file gdb-all.texinfo. --- > file gdb-all.texi. 28,33c28,33 < gdb.info-1: 1057 < gdb.info-2: 48501 < gdb.info-3: 97827 < gdb.info-4: 143406 < gdb.info-5: 188629 < gdb.info-6: 232808 --- > gdb.info-1: 1054 > gdb.info-2: 49653 > gdb.info-3: 98454 > gdb.info-4: 147012 > gdb.info-5: 195634 > gdb.info-6: 227137 37,143c37,147 < Node: Top1059 < Node: Summary5491 < Node: Free Software6495 < Node: Contributors7288 < Node: New Features10496 < Node: Sample Session13567 < Node: Invocation20132 < Node: Starting GDB20378 < Node: File Options21383 < Node: Mode Options22661 < Node: Leaving GDB24738 < Node: Shell Commands25414 < Node: Commands26208 < Node: Command Syntax26384 < Node: Help27929 < Node: Running31653 < Node: Compilation32161 < Node: Starting33571 < Node: Arguments36551 < Node: Environment37540 < Node: Working Directory40200 < Node: Input/Output40909 < Node: Attach42510 < Node: Kill Process44672 < Node: Stopping45616 < Node: Breakpoints46646 < Node: Set Breaks48503 < Node: Set Watchpoints53027 < Node: Exception Handling53851 < Node: Delete Breaks56326 < Node: Disabling57936 < Node: Conditions60528 < Node: Break Commands65217 < Node: Breakpoint Menus68663 < Node: Error in Breakpoints70206 < Node: Continuing and Stepping71106 < Node: Signals76974 < Node: Stack80597 < Node: Frames81912 < Node: Backtrace84199 < Node: Selection85919 < Node: Frame Info88398 < Node: Source90334 < Node: List91172 < Node: Search94316 < Node: Source Path95137 < Node: Machine Code97829 < Node: Data100204 < Node: Expressions101282 < Node: Variables102689 < Node: Arrays104977 < Node: Output formats106993 < Node: Memory108861 < Node: Auto Display114177 < Node: Print Settings117870 < Node: Value History123377 < Node: Convenience Vars125760 < Node: Registers128182 < Node: Floating Point Hardware131539 < Node: Symbols131997 < Node: Altering135936 < Node: Assignment136776 < Node: Jumping138962 < Node: Signaling140923 < Node: Returning141586 < Node: Calling142738 < Node: GDB Files143209 < Node: Files143408 < Node: Symbol Errors150865 < Node: Targets154005 < Node: Active Targets154803 < Node: Target Commands155874 < Node: Remote158204 < Node: i960-Nindy Remote160276 < Node: Nindy Startup161019 < Node: Nindy Options161702 < Node: Nindy reset163350 < Node: EB29K Remote163734 < Node: Comms (EB29K)164289 < Node: gdb-EB29K167508 < Node: Remote Log168873 < Node: VxWorks Remote169349 < Node: VxWorks connection170704 < Node: VxWorks download171699 < Node: VxWorks attach173240 < Node: Controlling GDB173636 < Node: Prompt174149 < Node: Editing174774 < Node: History175541 < Node: Screen Size178032 < Node: Numbers179307 < Node: Messages/Warnings180427 < Node: Sequences182539 < Node: Define182985 < Node: Command Files185008 < Node: Output186254 < Node: Emacs188631 < Node: GDB Bugs194594 < Node: Bug Criteria195281 < Node: Bug Reporting196052 < Node: Renamed Commands203069 < Node: Installing GDB204709 < Node: Subdirectories207186 < Node: configure Options210081 < Node: Formatting Manual212364 < Node: Copying213505 < Node: Index232810 --- > Node: Top1056 > Node: Summary7041 > Node: Free Software8074 > Node: Contributors8867 > Node: New Features12098 > Node: Sample Session15793 > Node: Invocation22357 > Node: Starting GDB22643 > Node: File Options23922 > Node: Mode Options25200 > Node: Leaving GDB27277 > Node: Shell Commands27953 > Node: Commands28747 > Node: Command Syntax28956 > Node: Help30790 > Node: Running34514 > Node: Compilation35139 > Node: Starting36549 > Node: Arguments39524 > Node: Environment40513 > Node: Working Directory43173 > Node: Input/Output43882 > Node: Attach45483 > Node: Kill Process47645 > Node: Stopping48589 > Node: Breakpoints49655 > Node: Set Breaks51611 > Node: Set Watchpoints56183 > Node: Exception Handling57007 > Node: Delete Breaks59484 > Node: Disabling61094 > Node: Conditions63686 > Node: Break Commands68375 > Node: Breakpoint Menus71821 > Node: Error in Breakpoints73364 > Node: Continuing and Stepping74264 > Node: Signals80159 > Node: Stack83782 > Node: Frames85163 > Node: Backtrace87450 > Node: Selection89170 > Node: Frame Info91649 > Node: Source93585 > Node: List94491 > Node: Search97635 > Node: Source Path98456 > Node: Machine Code101148 > Node: Data103555 > Node: Expressions104949 > Node: Variables106291 > Node: Arrays108579 > Node: Output formats110595 > Node: Memory112463 > Node: Auto Display117779 > Node: Print Settings121472 > Node: Value History126987 > Node: Convenience Vars129370 > Node: Registers131792 > Node: Floating Point Hardware135294 > Node: Cplusplus135752 > Node: Cplusplus expressions136256 > Node: Cplusplus commands138120 > Node: Symbols139581 > Node: Altering143905 > Node: Assignment144828 > Node: Jumping147014 > Node: Signaling148975 > Node: Returning149638 > Node: Calling150790 > Node: GDB Files151261 > Node: Files151493 > Node: Symbol Errors158949 > Node: Targets162287 > Node: Active Targets163127 > Node: Target Commands164198 > Node: Remote166528 > Node: i960-Nindy Remote168600 > Node: Nindy Startup169343 > Node: Nindy Options170026 > Node: Nindy reset171674 > Node: EB29K Remote172058 > Node: Comms (EB29K)172613 > Node: gdb-EB29K175832 > Node: Remote Log177197 > Node: VxWorks Remote177673 > Node: VxWorks connection179028 > Node: VxWorks download180023 > Node: VxWorks attach181564 > Node: Controlling GDB181960 > Node: Prompt182569 > Node: Editing183194 > Node: History183961 > Node: Screen Size186452 > Node: Numbers187727 > Node: Messages/Warnings188847 > Node: Sequences191870 > Node: Define192367 > Node: Command Files194390 > Node: Output195636 > Node: Emacs198013 > Node: GDB Bugs203976 > Node: Bug Criteria204690 > Node: Bug Reporting205461 > Node: Renamed Commands212478 > Node: Installing GDB214118 > Node: Subdirectories216134 > Node: Config Names219726 > Node: configure Options222638 > Node: Formatting Manual224889 > Node: Copying227139 > Node: Index246444 diff -r gdb-3.98/gdb/gdb.info-1 gdb-4.0/gdb/gdb.info-1 2c2 < file gdb-all.texinfo. --- > file gdb-all.texi. 34,55c34,56 < * Summary:: Summary of GDB < * New Features:: New Features in GDB version 4.0 < * Sample Session:: A Sample GDB Session < * Invocation:: Getting In and Out of GDB < * Commands:: < * Running:: Running Programs Under GDB < * Stopping:: Stopping and Continuing < * Stack:: Examining the Stack < * Source:: Examining Source Files < * Data:: Examining Data < * Symbols:: Examining the Symbol Table < * Altering:: Altering Execution < * GDB Files:: < * Targets:: Specifying a Debugging Target < * Controlling GDB:: Controlling GDB < * Sequences:: Canned Sequences of Commands < * Emacs:: Using GDB under GNU Emacs < * GDB Bugs:: Reporting Bugs in GDB < * Renamed Commands:: < * Installing GDB:: Installing GDB < * Copying:: GNU GENERAL PUBLIC LICENSE < * Index:: Index --- > * Summary:: Summary of GDB > * New Features:: New Features in GDB version 4.0 > * Sample Session:: A Sample GDB Session > * Invocation:: Getting In and Out of GDB > * Commands:: > * Running:: Running Programs Under GDB > * Stopping:: Stopping and Continuing > * Stack:: Examining the Stack > * Source:: Examining Source Files > * Data:: Examining Data > * Cplusplus:: C++ and GDB > * Symbols:: Examining the Symbol Table > * Altering:: Altering Execution > * GDB Files:: > * Targets:: Specifying a Debugging Target > * Controlling GDB:: Controlling GDB > * Sequences:: Canned Sequences of Commands > * Emacs:: Using GDB under GNU Emacs > * GDB Bugs:: Reporting Bugs in GDB > * Renamed Commands:: > * Installing GDB:: Installing GDB > * Copying:: GNU GENERAL PUBLIC LICENSE > * Index:: Index 60,61c61,62 < * Free Software:: Free Software < * Contributors:: Contributors to GDB --- > * Free Software:: Free Software > * Contributors:: Contributors to GDB 65,67c66,68 < * Starting GDB:: Starting GDB < * Leaving GDB:: Leaving GDB < * Shell Commands:: Shell Commands --- > * Starting GDB:: Starting GDB > * Leaving GDB:: Leaving GDB > * Shell Commands:: Shell Commands 71,72c72,73 < * File Options:: Choosing Files < * Mode Options:: Choosing Modes --- > * File Options:: Choosing Files > * Mode Options:: Choosing Modes 76,77c77,78 < * Command Syntax:: Command Syntax < * Help:: Getting Help --- > * Command Syntax:: Command Syntax > * Help:: Getting Help 81,88c82,89 < * Compilation:: Compiling for Debugging < * Starting:: Starting your Program < * Arguments:: Your Program's Arguments < * Environment:: Your Program's Environment < * Working Directory:: Your Program's Working Directory < * Input/Output:: Your Program's Input and Output < * Attach:: Debugging an Already-Running Process < * Kill Process:: Killing the Child Process --- > * Compilation:: Compiling for Debugging > * Starting:: Starting your Program > * Arguments:: Your Program's Arguments > * Environment:: Your Program's Environment > * Working Directory:: Your Program's Working Directory > * Input/Output:: Your Program's Input and Output > * Attach:: Debugging an Already-Running Process > * Kill Process:: Killing the Child Process 92,94c93,95 < * Breakpoints:: Breakpoints, Watchpoints, and Exceptions < * Continuing and Stepping:: Resuming Execution < * Signals:: Signals --- > * Breakpoints:: Breakpoints, Watchpoints, and Exceptions > * Continuing and Stepping:: Resuming Execution > * Signals:: Signals 98,106c99,107 < * Set Breaks:: Setting Breakpoints < * Set Watchpoints:: Setting Watchpoints < * Exception Handling:: Breakpoints and Exceptions < * Delete Breaks:: Deleting Breakpoints < * Disabling:: Disabling Breakpoints < * Conditions:: Break Conditions < * Break Commands:: Breakpoint Command Lists < * Breakpoint Menus:: Breakpoint Menus < * Error in Breakpoints:: --- > * Set Breaks:: Setting Breakpoints > * Set Watchpoints:: Setting Watchpoints > * Exception Handling:: Breakpoints and Exceptions > * Delete Breaks:: Deleting Breakpoints > * Disabling:: Disabling Breakpoints > * Conditions:: Break Conditions > * Break Commands:: Breakpoint Command Lists > * Breakpoint Menus:: Breakpoint Menus > * Error in Breakpoints:: 110,113c111,114 < * Frames:: Stack Frames < * Backtrace:: Backtraces < * Selection:: Selecting a Frame < * Frame Info:: Information on a Frame --- > * Frames:: Stack Frames > * Backtrace:: Backtraces > * Selection:: Selecting a Frame > * Frame Info:: Information on a Frame 117,120c118,121 < * List:: Printing Source Lines < * Search:: Searching Source Files < * Source Path:: Specifying Source Directories < * Machine Code:: Source and Machine Code --- > * List:: Printing Source Lines > * Search:: Searching Source Files > * Source Path:: Specifying Source Directories > * Machine Code:: Source and Machine Code 124,134c125,135 < * Expressions:: Expressions < * Variables:: Program Variables < * Arrays:: Artificial Arrays < * Output formats:: Output formats < * Memory:: Examining Memory < * Auto Display:: Automatic Display < * Print Settings:: Print Settings < * Value History:: Value History < * Convenience Vars:: Convenience Variables < * Registers:: Registers < * Floating Point Hardware:: Floating Point Hardware --- > * Expressions:: Expressions > * Variables:: Program Variables > * Arrays:: Artificial Arrays > * Output formats:: Output formats > * Memory:: Examining Memory > * Auto Display:: Automatic Display > * Print Settings:: Print Settings > * Value History:: Value History > * Convenience Vars:: Convenience Variables > * Registers:: Registers > * Floating Point Hardware:: Floating Point Hardware 138,142c139,143 < * Assignment:: Assignment to Variables < * Jumping:: Continuing at a Different Address < * Signaling:: Giving the Program a Signal < * Returning:: Returning from a Function < * Calling:: Calling your Program's Functions --- > * Assignment:: Assignment to Variables > * Jumping:: Continuing at a Different Address > * Signaling:: Giving the Program a Signal > * Returning:: Returning from a Function > * Calling:: Calling your Program's Functions 146,147c147,148 < * Files:: Commands to Specify Files < * Symbol Errors:: Errors Reading Symbol Files --- > * Files:: Commands to Specify Files > * Symbol Errors:: Errors Reading Symbol Files 151,153c152,154 < * Active Targets:: Active Targets < * Target Commands:: Commands for Managing Targets < * Remote:: Remote Debugging --- > * Active Targets:: Active Targets > * Target Commands:: Commands for Managing Targets > * Remote:: Remote Debugging 157,159c158,160 < * i960-Nindy Remote:: < * EB29K Remote:: < * VxWorks Remote:: --- > * i960-Nindy Remote:: > * EB29K Remote:: > * VxWorks Remote:: 163,165c164,166 < * Nindy Startup:: Startup with Nindy < * Nindy Options:: Options for Nindy < * Nindy reset:: Nindy Reset Command --- > * Nindy Startup:: Startup with Nindy > * Nindy Options:: Options for Nindy > * Nindy reset:: Nindy Reset Command 169,171c170,172 < * Comms (EB29K):: Communications Setup < * gdb-EB29K:: EB29K cross-debugging < * Remote Log:: Remote Log --- > * Comms (EB29K):: Communications Setup > * gdb-EB29K:: EB29K cross-debugging > * Remote Log:: Remote Log 175,177c176,178 < * VxWorks connection:: Connecting to VxWorks < * VxWorks download:: VxWorks Download < * VxWorks attach:: Running Tasks --- > * VxWorks connection:: Connecting to VxWorks > * VxWorks download:: VxWorks Download > * VxWorks attach:: Running Tasks 181,186c182,187 < * Prompt:: Prompt < * Editing:: Command Editing < * History:: Command History < * Screen Size:: Screen Size < * Numbers:: Numbers < * Messages/Warnings:: Optional Warnings and Messages --- > * Prompt:: Prompt > * Editing:: Command Editing > * History:: Command History > * Screen Size:: Screen Size > * Numbers:: Numbers > * Messages/Warnings:: Optional Warnings and Messages 190,192c191,193 < * Define:: User-Defined Commands < * Command Files:: Command Files < * Output:: Commands for Controlled Output --- > * Define:: User-Defined Commands > * Command Files:: Command Files > * Output:: Commands for Controlled Output 196,197c197,198 < * Bug Criteria:: Have You Found a Bug? < * Bug Reporting:: How to Report Bugs --- > * Bug Criteria:: Have You Found a Bug? > * Bug Reporting:: How to Report Bugs 223c224 < GDB can be used to debug programs written in C and C++. Pascal --- > You can use GDB to debug programs written in C and C++. Modula-2 229,230c230,231 < * Free Software:: Free Software < * Contributors:: Contributors to GDB --- > * Free Software:: Free Software > * Contributors:: Contributors to GDB 275,278c276,280 < John Gilmore (release 4.0); Jim Kingdon (releases 3.9, 3.5, 3.4, < 3.3); and Randy Smith (releases 3.2, 3.1, 3.0). As major maintainer < of GDB for some period, each contributed significantly to the < structure, stability, and capabilities of the entire debugger. --- > John Gilmore (release 4.0; happy birthday, John!); Jim Kingdon > (releases 3.9, 3.5, 3.4, 3.3); and Randy Smith (releases 3.2, 3.1, > 3.0). As major maintainer of GDB for some period, each contributed > significantly > to the structure, stability, and capabilities of the entire debugger. 305,309c307,312 < contributed Convex support (and Fortran debugging). Jonathan Stone < contributed Pyramid support. Michael Tiemann contributed SPARC < support. Tim Tucker contributed support for the Gould NP1 and Gould < Powernode. Pace Willison contributed Intel 386 support. Jay < Vosburgh contributed Symmetry support. --- > contributed > Convex support (and Fortran debugging). Jonathan Stone contributed > Pyramid support. Michael Tiemann contributed SPARC support. Tim > Tucker contributed support for the Gould NP1 and Gould Powernode. > Pace Willison contributed Intel 386 support. Jay Vosburgh > contributed Symmetry support. 333,336c336,344 < TCP/IP connection, etc. Internally, GDB now uses a function < vector to mediate access to different targets; if you need to < add your own support for a remote protocol, this makes it much < easier. --- > TCP/IP connection, etc. The command `load' can download > programs into a remote system. Serial stubs are available for > Motorola 680x0 and Intel 80386 remote systems; GDB also > supports debugging realtime processes running under VxWorks, > using SunRPC Remote Procedure Calls over TCP/IP to talk to a > debugger stub on the target system. Internally, GDB now uses a > function vector to mediate access to different targets; if you > need to add your own support for a remote protocol, this makes > it much easier. 343a352,355 > *Wide Output* > Commands that issue wide output now insert newlines at places > designed to make the output more readable. > 345c357 < GDB uses a new scheme called the Binary File Descriptor (BFD) --- > GDB uses a new library called the Binary File Descriptor (BFD) 354c366 < *Configuration* --- > *Configuration and Ports* 358c370,371 < a cross-debugger. --- > a cross-debugger. *Note Installing GDB:: for details on how to > configure and on what architectures are now available. 369,372c382,387 < *Source Language* < GDB now has limited support for C++ exception handling: GDB can < break when an exception is raised, before the stack is peeled < back to the exception handler's context. --- > *C++* > GDB now supports C++ multiple inheritance (if used with a GCC > version 2 compiler), and also has limited support for C++ > exception handling, with the commands `catch' and `info catch': > GDB can break when an exception is raised, before the stack is > peeled back to the exception handler's context. 382,389d396 < *Ports* < GDB has been ported to the following new architectures: AT&T < 3b1, Acorn RISC machine, HP300 running HPUX, big- and < little-endian MIPS machines, Motorola 88k, Sun 386i, and Sun 3 < < running SunOS 4. In addition, the following are supported as < targets only: AMD 29k, Intel 960, and Wind River's VxWorks. < 391c398,404 < GDB 4.0 supports SunOS shared libraries. --- > GDB 4.0 can debug programs and core files that use SunOS shared > libraries. You can load symbols from a shared library with the > command `sharedlibrary' (*note Files::.). > > *Reference Card* > GDB 4.0 has a reference card; *Note Formatting Manual:: for > instructions on printing it. 405c418,419 < debugger. This chapter illustrates these commands. --- > debugger. > This chapter illustrates these commands. 609,611c623,625 < * Starting GDB:: Starting GDB < * Leaving GDB:: Leaving GDB < * Shell Commands:: Shell Commands --- > * Starting GDB:: Starting GDB > * Leaving GDB:: Leaving GDB > * Shell Commands:: Shell Commands 632a647,654 > You can, instead, specify a process ID as a second argument, if > you want to debug a running process: > > gdb program 1234 > > would attach GDB to process `1234' (unless you also have a file named > `1234'; GDB does check for a core file first). > 647,648c669,670 < * File Options:: Choosing Files < * Mode Options:: Choosing Modes --- > * File Options:: Choosing Files > * Mode Options:: Choosing Modes 801,802c823,824 < * Command Syntax:: Command Syntax < * Help:: Getting Help --- > * Command Syntax:: Command Syntax > * Help:: Getting Help 835a858,863 > GDB can also use RET in another way: to partition lengthy output, > in a way similar to the common utility `more' (*note Screen > Size::.). Since it's easy to press one RET too many in this > situation, GDB disables command repetition after any command that > generates this sort of display. > 945,952c973,980 < * Compilation:: Compiling for Debugging < * Starting:: Starting your Program < * Arguments:: Your Program's Arguments < * Environment:: Your Program's Environment < * Working Directory:: Your Program's Working Directory < * Input/Output:: Your Program's Input and Output < * Attach:: Debugging an Already-Running Process < * Kill Process:: Killing the Child Process --- > * Compilation:: Compiling for Debugging > * Starting:: Starting your Program > * Arguments:: Your Program's Arguments > * Environment:: Your Program's Environment > * Working Directory:: Your Program's Working Directory > * Input/Output:: Your Program's Input and Output > * Attach:: Debugging an Already-Running Process > * Kill Process:: Killing the Child Process 1018,1019c1046 < environment < variable. *Note Arguments::. --- > environment variable. *Note Arguments::. 1310,1355c1337,1339 < * Breakpoints:: Breakpoints, Watchpoints, and Exceptions < * Continuing and Stepping:: Resuming Execution < * Signals:: Signals < <  < File: gdb.info, Node: Breakpoints, Next: Continuing and Stepping, Prev: Stopping, Up: Stopping < < Breakpoints, Watchpoints, and Exceptions < ======================================== < < A "breakpoint" makes your program stop whenever a certain point in < the program is reached. For each breakpoint, you can add various < conditions to control in finer detail whether the program will stop. < You can set breakpoints with the `break' command and its variants < (*note Set Breaks::.), to specify the place where the program should < stop by line number, function name or exact address in the program. < In languages with exception handling (such as GNU C++), you can also < set breakpoints where an exception is raised (*note Exception < Handling::.). < < A "watchpoint" is a special breakpoint that stops your program < when the value of an expression changes. You must use a different < command to set watchpoints (*note Set Watchpoints::.), but aside < from that, you can manage a watchpoint like any other breakpoint: < you enable, disable, and delete both breakpoints and watchpoints < using the same commands. < < Each breakpoint or watchpoint is assigned a number when it is < created; these numbers are successive integers starting with one. < In many of the commands for controlling various features of < breakpoints you use the breakpoint number to say which breakpoint < you want to change. Each breakpoint may be "enabled" or "disabled"; < if < disabled, it has no effect on the program until you enable it again. < < * Menu: < < * Set Breaks:: Setting Breakpoints < * Set Watchpoints:: Setting Watchpoints < * Exception Handling:: Breakpoints and Exceptions < * Delete Breaks:: Deleting Breakpoints < * Disabling:: Disabling Breakpoints < * Conditions:: Break Conditions < * Break Commands:: Breakpoint Command Lists < * Breakpoint Menus:: Breakpoint Menus < * Error in Breakpoints:: --- > * Breakpoints:: Breakpoints, Watchpoints, and Exceptions > * Continuing and Stepping:: Resuming Execution > * Signals:: Signals diff -r gdb-3.98/gdb/gdb.info-2 gdb-4.0/gdb/gdb.info-2 2c2 < file gdb-all.texinfo. --- > file gdb-all.texi. 27a28,70 > File: gdb.info, Node: Breakpoints, Next: Continuing and Stepping, Prev: Stopping, Up: Stopping > > Breakpoints, Watchpoints, and Exceptions > ======================================== > > A "breakpoint" makes your program stop whenever a certain point in > the program is reached. For each breakpoint, you can add various > conditions to control in finer detail whether the program will stop. > You can set breakpoints with the `break' command and its variants > (*note Set Breaks::.), to specify the place where the program should > stop by line number, function name or exact address in the program. > In languages with exception handling (such as GNU C++), you can also > set breakpoints where an exception is raised (*note Exception > Handling::.). > > A "watchpoint" is a special breakpoint that stops your program > when the value of an expression changes. You must use a different > command to set watchpoints (*note Set Watchpoints::.), but aside > from that, you can manage a watchpoint like any other breakpoint: > you enable, disable, and delete both breakpoints and watchpoints > using the same commands. > > Each breakpoint or watchpoint is assigned a number when it is > created; these numbers are successive integers starting with one. > In many of the commands for controlling various features of > breakpoints you use the breakpoint number to say which breakpoint > you want to change. Each breakpoint may be "enabled" or "disabled"; > if > disabled, it has no effect on the program until you enable it again. > > * Menu: > > * Set Breaks:: Setting Breakpoints > * Set Watchpoints:: Setting Watchpoints > * Exception Handling:: Breakpoints and Exceptions > * Delete Breaks:: Deleting Breakpoints > * Disabling:: Disabling Breakpoints > * Conditions:: Break Conditions > * Break Commands:: Breakpoint Command Lists > * Breakpoint Menus:: Breakpoint Menus > * Error in Breakpoints:: > >  73a117 > 104,107c148,149 < REGEX. This is useful for setting breakpoints on overloaded < functions that are not members of any special classes. This < command sets an unconditional breakpoint on all matches, < printing a list of all breakpoints it set. Once these --- > REGEX. This command sets an unconditional breakpoint on all > matches, printing a list of all breakpoints it set. Once these 111a154,157 > When debugging C++ programs, `rbreak' is useful for setting > breakpoints on overloaded functions that are not members of any > special classes. > 119a166 > 160,161c207,208 < GDB can be used to examine what caused the program to raise an < exception and to list the exceptions the program is prepared to --- > You can use GDB to examine what caused the program to raise an > exception, and to list the exceptions the program is prepared to 194c241 < knowledge of the implementation. In the case of GNU C++ exceptions --- > knowledge of the implementation. In the case of GNU C++, exceptions 669c716 < 206 expand_input(); --- > 206 expand_input(); 671c718 < 195 for ( ; argc > 0; NEXTARG) { --- > 195 for ( ; argc > 0; NEXTARG) { 674a722 > 829,832c877,880 < * Frames:: Stack Frames < * Backtrace:: Backtraces < * Selection:: Selecting a Frame < * Frame Info:: Information on a Frame --- > * Frames:: Stack Frames > * Backtrace:: Backtraces > * Selection:: Selecting a Frame > * Frame Info:: Information on a Frame 1065,1068c1113,1116 < * List:: Printing Source Lines < * Search:: Searching Source Files < * Source Path:: Specifying Source Directories < * Machine Code:: Source and Machine Code --- > * List:: Printing Source Lines > * Search:: Searching Source Files > * Source Path:: Specifying Source Directories > * Machine Code:: Source and Machine Code 1189,1250d1236 < <  < File: gdb.info, Node: Source Path, Next: Machine Code, Prev: Search, Up: Source < < Specifying Source Directories < ============================= < < Executable programs sometimes do not record the directories of the < source files from which they were compiled, just the names. Even < when they do, the directories could be moved between the compilation < and your debugging session. GDB has a list of directories to search < for source files; this is called the "source path". Each time GDB < wants a source file, it tries all the directories in the list, in < the order they are present in the list, until it finds a file with < the desired name. Note that the executable search path is *not* < used for this purpose. Neither is the current working directory, < unless it happens to be in the source path. < < If GDB can't find a source file in the source path, and the object < program records a directory, GDB tries that directory too. If the < source path is empty, and there is no record of the compilation < directory, GDB will, as a last resort, look in the current directory. < < Whenever you reset or rearrange the source path, GDB will clear < out any information it has cached about where source files are < found, where each line is in the file, etc. < < When you start GDB, its source path is empty. To add other < directories, use the `directory' command. < < `directory DIRNAME ...' < Add directory DIRNAME to the front of the source path. Several < directory names may be given to this command, separated by `:' < or whitespace. You may specify a directory that is already in < the source path; this moves it forward, so it will be searched < sooner. < < You can use the string `$cdir' to refer to the compilation < directory (if one is recorded), and `$cwd' to refer to the < current working directory. `$cwd' is not the same as `.'--the < former tracks the current working directory as it changes < during your GDB session, while the latter is immediately < expanded to the current directory at the time you add an entry < to the source path. < < `directory' < Reset the source path to empty again. This requires confirmation. < < `show directories' < Print the source path: show which directories it contains. < < If your source path is cluttered with directories that are no < longer < of interest, GDB may sometimes cause confusion by finding the wrong < versions of source. You can correct the situation as follows: < < 1. Use `directory' with no argument to reset the source path to < empty. < < 2. Use `directory' with suitable arguments to reinstall the < directories you want in the source path. You can add all the < directories in one command. diff -r gdb-3.98/gdb/gdb.info-3 gdb-4.0/gdb/gdb.info-3 2c2 < file gdb-all.texinfo. --- > file gdb-all.texi. 27a28,89 > File: gdb.info, Node: Source Path, Next: Machine Code, Prev: Search, Up: Source > > Specifying Source Directories > ============================= > > Executable programs sometimes do not record the directories of the > source files from which they were compiled, just the names. Even > when they do, the directories could be moved between the compilation > and your debugging session. GDB has a list of directories to search > for source files; this is called the "source path". Each time GDB > wants a source file, it tries all the directories in the list, in > the order they are present in the list, until it finds a file with > the desired name. Note that the executable search path is *not* > used for this purpose. Neither is the current working directory, > unless it happens to be in the source path. > > If GDB can't find a source file in the source path, and the object > program records a directory, GDB tries that directory too. If the > source path is empty, and there is no record of the compilation > directory, GDB will, as a last resort, look in the current directory. > > Whenever you reset or rearrange the source path, GDB will clear > out any information it has cached about where source files are > found, where each line is in the file, etc. > > When you start GDB, its source path is empty. To add other > directories, use the `directory' command. > > `directory DIRNAME ...' > Add directory DIRNAME to the front of the source path. Several > directory names may be given to this command, separated by `:' > or whitespace. You may specify a directory that is already in > the source path; this moves it forward, so it will be searched > sooner. > > You can use the string `$cdir' to refer to the compilation > directory (if one is recorded), and `$cwd' to refer to the > current working directory. `$cwd' is not the same as `.'--the > former tracks the current working directory as it changes > during your GDB session, while the latter is immediately > expanded to the current directory at the time you add an entry > to the source path. > > `directory' > Reset the source path to empty again. This requires confirmation. > > `show directories' > Print the source path: show which directories it contains. > > If your source path is cluttered with directories that are no > longer > of interest, GDB may sometimes cause confusion by finding the wrong > versions of source. You can correct the situation as follows: > > 1. Use `directory' with no argument to reset the source path to > empty. > > 2. Use `directory' with suitable arguments to reinstall the > directories you want in the source path. You can add all the > directories in one command. > >  75,82c137,144 < 0x63e4 builtin_init+5340: ble 0x63f8 builtin_init+5360 < 0x63e8 builtin_init+5344: sethi %hi(0x4c00), %o0 < 0x63ec builtin_init+5348: ld [%i1+4], %o0 < 0x63f0 builtin_init+5352: b 0x63fc builtin_init+5364 < 0x63f4 builtin_init+5356: ld [%o0+4], %o0 < 0x63f8 builtin_init+5360: or %o0, 0x1a4, %o0 < 0x63fc builtin_init+5364: call 0x9288 path_search < 0x6400 builtin_init+5368: nop --- > 0x63e4 builtin_init+5340: ble 0x63f8 builtin_init+5360 > 0x63e8 builtin_init+5344: sethi %hi(0x4c00), %o0 > 0x63ec builtin_init+5348: ld [%i1+4], %o0 > 0x63f0 builtin_init+5352: b 0x63fc builtin_init+5364 > 0x63f4 builtin_init+5356: ld [%o0+4], %o0 > 0x63f8 builtin_init+5360: or %o0, 0x1a4, %o0 > 0x63fc builtin_init+5364: call 0x9288 path_search > 0x6400 builtin_init+5368: nop 87c149 < File: gdb.info, Node: Data, Next: Symbols, Prev: Source, Up: Top --- > File: gdb.info, Node: Data, Next: Cplusplus, Prev: Source, Up: Top 93,95c155,156 < command < (abbreviated `p'), or its synonym `inspect'. It evaluates and < prints the value of any valid expression of the language the program --- > command (abbreviated `p'), or its synonym `inspect'. It evaluates > and prints the value of an expression of the language your program 100,101c161,162 < where EXP is any valid expression (in the source language), and the < value of EXP is printed in a format appropriate to its data type. --- > where EXP is an expression (in the source language), and the value of > EXP is printed in a format appropriate to its data type. 106a168,171 > If you're interested in information about types, or about how the > fields of a struct or class are declared, use the `ptype EXP' > command rather than `print'. *Note Symbols::. > 109,119c174,184 < * Expressions:: Expressions < * Variables:: Program Variables < * Arrays:: Artificial Arrays < * Output formats:: Output formats < * Memory:: Examining Memory < * Auto Display:: Automatic Display < * Print Settings:: Print Settings < * Value History:: Value History < * Convenience Vars:: Convenience Variables < * Registers:: Registers < * Floating Point Hardware:: Floating Point Hardware --- > * Expressions:: Expressions > * Variables:: Program Variables > * Arrays:: Artificial Arrays > * Output formats:: Output formats > * Memory:: Examining Memory > * Auto Display:: Automatic Display > * Print Settings:: Print Settings > * Value History:: Value History > * Convenience Vars:: Convenience Variables > * Registers:: Registers > * Floating Point Hardware:: Floating Point Hardware 132,133c197 < include symbols defined by preprocessor `#define' commands, < or C++ expressions involving `::', the name resolution operator. --- > include symbols defined by preprocessor `#define' commands. 566c630 < 530 if (lquote != def_lquote) --- > 530 if (lquote != def_lquote) 576c640 < 530 if (lquote != def_lquote) --- > 530 if (lquote != def_lquote) 855c919 < Machine register contents can be referred to in expressions as --- > You can refer to machine register contents, in expressions, as 862,863c926,927 < Print the names and values of all registers (in the selected < stack frame). --- > Print the names and values of all registers except > floating-point registers (in the selected stack frame). 864a929,932 > `info all-registers' > Print the names and values of all registers, including > floating-point registers. > 947c1015,1120 < File: gdb.info, Node: Symbols, Next: Altering, Prev: Data, Up: Top --- > File: gdb.info, Node: Cplusplus, Next: Symbols, Prev: Data, Up: Top > > C++ and GDB > *********** > > GDB includes facilities to let you debug C++ programs naturally > and easily. The GNU C++ compiler and GDB implement the support for > these facilities together. Therefore, to debug your C++ code most > effectively, you must compile your C++ programs with the GNU C++ > compiler, `g++'. > > * Menu: > > * Cplusplus expressions:: C++ Expressions > * Cplusplus commands:: GDB Commands for C++ > >  > File: gdb.info, Node: Cplusplus expressions, Next: Cplusplus commands, Prev: Cplusplus, Up: Cplusplus > > C++ Expressions > =============== > > Since C++ is closely related to C, all the facilities for > evaluating C expressions (*note Expressions::.) continue to work in > C++. GDB's expression handling also has the following extensions to > interpret a significant subset of C++ expressions: > > 1. Member function calls are allowed; you can use expressions like > > count = aml->GetOriginal(x, y) > > 2. While a member function is active (in the selected stack frame), > your expressions have the same namespace available as the > member function; that is, GDB allows implicit references to the > class instance pointer `this' following the same rules as C++. > > 3. You can call overloaded functions; GDB will resolve the function > call to the right definition, with one restriction--you must > use arguments of the type required by the function that you > want to call. GDB will not perform conversions requiring > constructors or user-defined type operators. > > 4. GDB understands variables declared as C++ references; you can > use them in expressions just as you do in C++ source--they are > automatically dereferenced. > > In the parameter list shown when GDB displays a frame, the > values of reference variables are not displayed (unlike other > variables); this avoids clutter, since references are often > used for large structures. The *address* of a reference > variable is always shown, unless you've specified `set print > address off'. > > 5. GDB supports the C++ name resolution operator `::'--your > expressions can use it just as expressions in your program do. > GDB also allows resolving name scope by reference to source > files, in both C and C++ debugging; *note Variables::.. > >  > File: gdb.info, Node: Cplusplus commands, Prev: Cplusplus expressions, Up: Cplusplus > > GDB Commands for C++ > ==================== > > Some GDB commands are particularly useful with C++, and some are > designed specifically for use with C++. Here is a summary: > > `breakpoint menus' > When you want a breakpoint in a function whose name is > overloaded, GDB's breakpoint menus help you specify which > function definition you want. *Note Breakpoint Menus::. > > `rbreak REGEX' > Setting breakpoints using regular expressions is helpful for > setting breakpoints on overloaded functions that are not > members of any special classes. *Note Set Breaks::. > > `catch EXCEPTIONS' > `info catch' > Debug C++ exception handling using these commands. *Note > Exception Handling::. > > `ptype TYPENAME' > Print inheritance relationships as well as other information for > type TYPENAME. *Note Symbols::. > > `set print demangle' > `show print demangle' > `set print asm-demangle' > `show print asm-demangle' > Control whether C++ symbols display in their source form, both > when displaying code as C++ source and when displaying > disassemblies. *Note Print Settings::. > > `set print object' > `show print object' > Choose whether to print derived (actual) or declared types of > objects. *Note Print Settings::. > > `set print vtbl' > `show print vtbl' > Control the format for printing virtual function tables. *Note > Print Settings::. > >  > File: gdb.info, Node: Symbols, Next: Altering, Prev: Cplusplus, Up: Top 1024,1026c1197,1199 < there is debugging information, organized into two lists: those < for which symbols have been read in, and those for which < symbols will be read in on demand. --- > there is debugging information, organized into two lists: files > whose symbols have already been read, and files whose symbols > will be read when needed. 1047,1048c1220,1226 < Write a complete dump of the debugger's symbol data into the < file FILENAME. --- > Write a dump of debugging symbol data into the file FILENAME. > Only symbols with debugging data are included. GDB includes > all the symbols it already knows about: that is, FILENAME > reflects symbols for only those files whose symbols GDB has read. > You can find out which files these are using the command `info > files'. The description of `symbol-file' describes how GDB > reads symbols; both commands are described under *Note Files::. 1068,1072c1246,1250 < * Assignment:: Assignment to Variables < * Jumping:: Continuing at a Different Address < * Signaling:: Giving the Program a Signal < * Returning:: Returning from a Function < * Calling:: Calling your Program's Functions --- > * Assignment:: Assignment to Variables > * Jumping:: Continuing at a Different Address > * Signaling:: Giving the Program a Signal > * Returning:: Returning from a Function > * Calling:: Calling your Program's Functions 1134,1253d1311 < <  < File: gdb.info, Node: Jumping, Next: Signaling, Prev: Assignment, Up: Altering < < Continuing at a Different Address < ================================= < < Ordinarily, when you continue the program, you do so at the place < where it stopped, with the `continue' command. You can instead < continue at an address of your own choosing, with the following < commands: < < `jump LINESPEC' < Resume execution at line LINESPEC. Execution will stop < immediately if there is a breakpoint there. *Note List:: for a < description of the different forms of LINESPEC. < < The `jump' command does not change the current stack frame, or < the stack pointer, or the contents of any memory location or < any register other than the program counter. If line LINESPEC < is in a different function from the one currently executing, < the results may be bizarre if the two functions expect < different patterns of arguments or of local variables. For < this < reason, the `jump' command requests confirmation if the < specified line is not in the function currently executing. < However, even bizarre results are predictable if you are well < acquainted with the machine-language code of the program. < < `jump *ADDRESS' < Resume execution at the instruction at address ADDRESS. < < You can get much the same effect as the `jump' command by storing < a new value into the register `$pc'. The difference is that this < does not start the program running; it only changes the address < where it *will* run when it is continued. For example, < < set $pc = 0x485 < < causes the next `continue' command or stepping command to execute at < address 0x485, rather than at the address where the program stopped. < *Note Continuing and Stepping::. < < The most common occasion to use the `jump' command is to back up, < perhaps with more breakpoints set, over a portion of a program that < has already executed, in order to examine its execution in more < detail. < <  < File: gdb.info, Node: Signaling, Next: Returning, Prev: Jumping, Up: Altering < < Giving the Program a Signal < =========================== < < `signal SIGNALNUM' < Resume execution where the program stopped, but give it < immediately the signal number SIGNALNUM. < < Alternatively, if SIGNALNUM is zero, continue execution without < giving a signal. This is useful when the program stopped on < account of a signal and would ordinary see the signal when < resumed with the `continue' command; `signal 0' causes it to < resume without a signal. < < `signal' does not repeat when you press RET a second time after < executing the command. < <  < File: gdb.info, Node: Returning, Next: Calling, Prev: Signaling, Up: Altering < < Returning from a Function < ========================= < < `return' < `return EXPRESSION' < You can cancel execution of a function call with the `return' < command. If you give an EXPRESSION argument, its value is used < as the function's return value. < < When you use `return', GDB discards the selected stack frame (and < all frames within it). You can think of this as making the < discarded frame return prematurely. If you wish to specify a value < to be returned, give that value as the argument to `return'. < < This pops the selected stack frame (*note Selection::.), and any < other frames inside of it, leaving its caller as the innermost < remaining frame. That frame becomes selected. The specified value < is stored in the registers used for returning values of functions. < < The `return' command does not resume execution; it leaves the < program stopped in the state that would exist if the function had < just returned. In contrast, the `finish' command (*note Continuing < and Stepping::.) resumes execution until the selected stack frame < returns naturally. < <  < File: gdb.info, Node: Calling, Prev: Returning, Up: Altering < < Calling your Program's Functions < ================================ < < `call EXPR' < Evaluate the expression EXPR without displaying `void' returned < values. < < You can use this variant of the `print' command if you want to < execute a function from your program, but without cluttering the < output with `void' returned values. The result is printed and saved < in the value history, if it is not void. < <  < File: gdb.info, Node: GDB Files, Next: Targets, Prev: Altering, Up: Top < < GDB's Files < *********** < < * Menu: < < * Files:: Commands to Specify Files < * Symbol Errors:: Errors Reading Symbol Files diff -r gdb-3.98/gdb/gdb.info-4 gdb-4.0/gdb/gdb.info-4 2c2 < file gdb-all.texinfo. --- > file gdb-all.texi. 27a28,147 > File: gdb.info, Node: Jumping, Next: Signaling, Prev: Assignment, Up: Altering > > Continuing at a Different Address > ================================= > > Ordinarily, when you continue the program, you do so at the place > where it stopped, with the `continue' command. You can instead > continue at an address of your own choosing, with the following > commands: > > `jump LINESPEC' > Resume execution at line LINESPEC. Execution will stop > immediately if there is a breakpoint there. *Note List:: for a > description of the different forms of LINESPEC. > > The `jump' command does not change the current stack frame, or > the stack pointer, or the contents of any memory location or > any register other than the program counter. If line LINESPEC > is in a different function from the one currently executing, > the results may be bizarre if the two functions expect > different patterns of arguments or of local variables. For > this > reason, the `jump' command requests confirmation if the > specified line is not in the function currently executing. > However, even bizarre results are predictable if you are well > acquainted with the machine-language code of the program. > > `jump *ADDRESS' > Resume execution at the instruction at address ADDRESS. > > You can get much the same effect as the `jump' command by storing > a new value into the register `$pc'. The difference is that this > does not start the program running; it only changes the address > where it *will* run when it is continued. For example, > > set $pc = 0x485 > > causes the next `continue' command or stepping command to execute at > address 0x485, rather than at the address where the program stopped. > *Note Continuing and Stepping::. > > The most common occasion to use the `jump' command is to back up, > perhaps with more breakpoints set, over a portion of a program that > has already executed, in order to examine its execution in more > detail. > >  > File: gdb.info, Node: Signaling, Next: Returning, Prev: Jumping, Up: Altering > > Giving the Program a Signal > =========================== > > `signal SIGNALNUM' > Resume execution where the program stopped, but give it > immediately the signal number SIGNALNUM. > > Alternatively, if SIGNALNUM is zero, continue execution without > giving a signal. This is useful when the program stopped on > account of a signal and would ordinary see the signal when > resumed with the `continue' command; `signal 0' causes it to > resume without a signal. > > `signal' does not repeat when you press RET a second time after > executing the command. > >  > File: gdb.info, Node: Returning, Next: Calling, Prev: Signaling, Up: Altering > > Returning from a Function > ========================= > > `return' > `return EXPRESSION' > You can cancel execution of a function call with the `return' > command. If you give an EXPRESSION argument, its value is used > as the function's return value. > > When you use `return', GDB discards the selected stack frame (and > all frames within it). You can think of this as making the > discarded frame return prematurely. If you wish to specify a value > to be returned, give that value as the argument to `return'. > > This pops the selected stack frame (*note Selection::.), and any > other frames inside of it, leaving its caller as the innermost > remaining frame. That frame becomes selected. The specified value > is stored in the registers used for returning values of functions. > > The `return' command does not resume execution; it leaves the > program stopped in the state that would exist if the function had > just returned. In contrast, the `finish' command (*note Continuing > and Stepping::.) resumes execution until the selected stack frame > returns naturally. > >  > File: gdb.info, Node: Calling, Prev: Returning, Up: Altering > > Calling your Program's Functions > ================================ > > `call EXPR' > Evaluate the expression EXPR without displaying `void' returned > values. > > You can use this variant of the `print' command if you want to > execute a function from your program, but without cluttering the > output with `void' returned values. The result is printed and saved > in the value history, if it is not void. > >  > File: gdb.info, Node: GDB Files, Next: Targets, Prev: Altering, Up: Top > > GDB's Files > *********** > > * Menu: > > * Files:: Commands to Specify Files > * Symbol Errors:: Errors Reading Symbol Files > >  152,155c272,275 < when that file has been dynamically loaded (by some other < means) into the program that is running. ADDRESS should be the < memory address at which the file has been loaded; GDB cannot < figure this out for itself. --- > when FILENAME has been dynamically loaded (by some other means) > into the program that is running. ADDRESS should be the memory > address at which the file has been loaded; GDB cannot figure > this out for itself. 182c302,303 < use the following commands: --- > use > the following commands: 207c328 < While a symbol file is being read, GDB will occasionally encounter --- > While reading a symbol file, GDB will occasionally encounter 209,213c330,337 < in compiler output. By default, it prints one message about each < such type of problem, no matter how many times the problem occurs. < You can ask it to print more messages, to see how many times the < problems occur, or can shut the messages off entirely, with the `set < complaints' command (*Note Messages/Warnings::). --- > in compiler output. By default, GDB does not notify you of such > problems, since they're relatively common and primarily of interest > to people debugging compilers. If you are interested in seeing > information about ill-constructed symbol tables, you can either ask > GDB to print only one message about each such type of problem, no > matter how many times the problem occurs; or you can ask GDB to > print more messages, to see how many times the problems occur, with > the `set complaints' command (*Note Messages/Warnings::). 293,295c417,419 < * Active Targets:: Active Targets < * Target Commands:: Commands for Managing Targets < * Remote:: Remote Debugging --- > * Active Targets:: Active Targets > * Target Commands:: Commands for Managing Targets > * Remote:: Remote Debugging 836,841c960,965 < * Prompt:: Prompt < * Editing:: Command Editing < * History:: Command History < * Screen Size:: Screen Size < * Numbers:: Numbers < * Messages/Warnings:: Optional Warnings and Messages --- > * Prompt:: Prompt > * Editing:: Command Editing > * History:: Command History > * Screen Size:: Screen Size > * Numbers:: Numbers > * Messages/Warnings:: Optional Warnings and Messages 851,854c975,978 < change < the prompt string with the `set prompt' command. For instance, when < debugging GDB with GDB, it is useful to change the prompt in one of < the GDBs so that you can always tell which one you are talking to. --- > change the prompt string with the `set prompt' command. For > instance, when debugging GDB with GDB, it is useful to change the > prompt in one of the GDBs so that you can always tell which one you > are talking to. 1044,1048c1168,1169 < object file, it prints a single message about each type of problem < it finds, then shuts up (*note Symbol Errors::.). You can suppress < these < messages, or allow more than one such message to be printed if you < want to see how frequent the problems are. --- > object file, it is silent; but if you are debugging a compiler, you > may find this information useful (*note Symbol Errors::.). 1079a1201,1224 > Some systems allow individual object files that make up your > program > to be replaced without stopping and restarting your program. For > example, in VxWorks you can simply recompile a defective object file > and keep on running. If you're running on one of these systems, you > can allow GDB to reload the symbols for automatically relinked > modules: > > `set symbol-reloading on' > Replace symbol definitions for the corresponding source file > when an object file with a particular name is seen again. > > `set symbol-reloading off' > Don't replace symbol definitions when re-encountering object > files of the same name. This is the default state; if you're > not running on a system that permits automatically relinking > modules, you should leave `symbol-reloading' off, since > otherwise GDB may discard symbols when linking large programs, > that may contain several modules (from different directories or > libraries) with the same name. > > `show symbol-reloading' > Show the current `on' or `off' setting. > 1088,1089c1233 < unit: < user-defined commands and command files. --- > unit: user-defined commands and command files. 1093,1095c1237,1239 < * Define:: User-Defined Commands < * Command Files:: Command Files < * Output:: Commands for Controlled Output --- > * Define:: User-Defined Commands > * Command Files:: Command Files > * Output:: Commands for Controlled Output 1176,1239d1319 < <  < File: gdb.info, Node: Output, Prev: Command Files, Up: Sequences < < Commands for Controlled Output < ============================== < < During the execution of a command file or a user-defined command, < normal GDB output is suppressed; the only output that appears is < what is explicitly printed by the commands in the definition. This < section describes three commands useful for generating exactly the < output < you want. < < `echo TEXT' < Print TEXT. Nonprinting characters can be included in TEXT < using C escape sequences, such as `\n' to print a newline. No < newline will be printed unless you specify one. In addition to < the standard C escape sequences, a backslash followed by a < space stands for a space. This is useful for outputting a < string with spaces at the beginning or the end, since leading < and trailing spaces are otherwise trimmed from all arguments. < Thus, to print ` and foo = ', use the command `echo \ and foo = < \ '. < < A backslash at the end of TEXT can be used, as in C, to continue < the command onto subsequent lines. For example, < < echo This is some text\n\ < which is continued\n\ < onto several lines.\n < < produces the same output as < < echo This is some text\n < echo which is continued\n < echo onto several lines.\n < < `output EXPRESSION' < Print the value of EXPRESSION and nothing but that value: no < newlines, no `$NN = '. The value is not entered in the value < history either. *Note Expressions:: for more information on < expressions. < < `output/FMT EXPRESSION' < Print the value of EXPRESSION in format FMT. You can use the < same formats as for `print'; *note Output formats::., for more < information. < < `printf STRING, EXPRESSIONS...' < Print the values of the EXPRESSIONS under the control of STRING. < The EXPRESSIONS are separated by commas and may be either < numbers or pointers. Their values are printed as specified by < STRING, exactly as if the program were to execute < < printf (STRING, EXPRESSIONS...); < < For example, you can print two values in hex like this: < < printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo < < The only backslash-escape sequences that you can use in the < format string are the simple ones that consist of backslash < followed by a letter. diff -r gdb-3.98/gdb/gdb.info-5 gdb-4.0/gdb/gdb.info-5 2c2 < file gdb-all.texinfo. --- > file gdb-all.texi. 27a28,91 > File: gdb.info, Node: Output, Prev: Command Files, Up: Sequences > > Commands for Controlled Output > ============================== > > During the execution of a command file or a user-defined command, > normal GDB output is suppressed; the only output that appears is > what is explicitly printed by the commands in the definition. This > section describes three commands useful for generating exactly the > output > you want. > > `echo TEXT' > Print TEXT. Nonprinting characters can be included in TEXT > using C escape sequences, such as `\n' to print a newline. No > newline will be printed unless you specify one. In addition to > the standard C escape sequences, a backslash followed by a > space stands for a space. This is useful for outputting a > string with spaces at the beginning or the end, since leading > and trailing spaces are otherwise trimmed from all arguments. > Thus, to print ` and foo = ', use the command `echo \ and foo = > \ '. > > A backslash at the end of TEXT can be used, as in C, to continue > the command onto subsequent lines. For example, > > echo This is some text\n\ > which is continued\n\ > onto several lines.\n > > produces the same output as > > echo This is some text\n > echo which is continued\n > echo onto several lines.\n > > `output EXPRESSION' > Print the value of EXPRESSION and nothing but that value: no > newlines, no `$NN = '. The value is not entered in the value > history either. *Note Expressions:: for more information on > expressions. > > `output/FMT EXPRESSION' > Print the value of EXPRESSION in format FMT. You can use the > same formats as for `print'; *note Output formats::., for more > information. > > `printf STRING, EXPRESSIONS...' > Print the values of the EXPRESSIONS under the control of STRING. > The EXPRESSIONS are separated by commas and may be either > numbers or pointers. Their values are printed as specified by > STRING, exactly as if the program were to execute > > printf (STRING, EXPRESSIONS...); > > For example, you can print two values in hex like this: > > printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo > > The only backslash-escape sequences that you can use in the > format string are the simple ones that consist of backslash > followed by a letter. > >  192,193c256,257 < * Bug Criteria:: Have You Found a Bug? < * Bug Reporting:: How to Report Bugs --- > * Bug Criteria:: Have You Found a Bug? > * Bug Reporting:: How to Report Bugs 426,428c490,492 < GDB is distributed with a `configure' script that automates the < process of preparing GDB for installation; you can then use `make' < to build the `gdb' program. --- > GDB comes with a `configure' script that automates the process of > preparing GDB for installation; you can then use `make' to build the > `gdb' program. 430,440c494,499 < The `configure' script that's specific to GDB is distributed in < the main GDB source directory. However, building GDB also requires < several other directories of source common to multiple GNU programs. < These directories (GNU libraries and includes) are distributed < separately, but their `configure' scripts and `Makefile's are < designed to work together. To ensure that GDB's `Makefile' can find < all the pieces, you should make a single overall directory to hold < the directories of source for GNU libraries and includes, and you < should install the GDB source directory there too. In this < Appendix, we refer to the directory of GNU source directories as < GNUSRC. --- > The gdb distribution includes all the source code you need for gdb > in a single directory `gdb-4.0'. That directory in turn contains: > > `gdb-4.0/configure' > Overall script for configuring GDB and all its supporting > libraries. 442,444c501 < At a minimum, to build GDB you need the directories < < `GNUSRC/gdb' --- > `gdb-4.0/gdb' 447c504 < `GNUSRC/bfd' --- > `gdb-4.0/bfd' 450c507 < `GNUSRC/include' --- > `gdb-4.0/include' 453c510 < `GNUSRC/libiberty' --- > `gdb-4.0/libiberty' 456c513 < `GNUSRC/readline' --- > `gdb-4.0/readline' 459,461c516,517 < Each of these directories has its own `configure' script. GNUSRC has < an overall `configure' script, which is distributed with the GNU < libraries and includes. --- > Each of these directories has its own `configure' script, which are > used by the overall `configure' script in `gdb-4.0'. 463,465c519,521 < `configure' is designed to be called recursively, so it is most < convenient to run `configure' from the GNUSRC directory. The < simplest way to configure and build GDB is the following: --- > It is most convenient to run `configure' from the `gdb-4.0' > directory. The simplest way to configure and build GDB is the > following: 467c523 < cd GNUSRC --- > cd gdb-4.0 471,475c527,531 < where HOST is something like `sun4' or `vax', that identifies the < platform where GDB will run. This builds the three libraries `bfd', < `readline', and `libiberty', then `gdb' itself. The configured < source files, and the binaries, are left in the corresponding source < directories. --- > where HOST is something like `sun4' or `decstation', that identifies > the platform where GDB will run. This builds the three libraries > `bfd', `readline', and `libiberty', then `gdb' itself. The > configured source files, and the binaries, are left in the > corresponding source directories. 485,487c541,544 < * Subdirectories:: Configuration subdirectories < * configure Options:: Summary of options for configure < * Formatting Manual:: How to format and print this manual --- > * Subdirectories:: Configuration subdirectories > * Config Names:: Specifying names for hosts and targets > * configure Options:: Summary of options for configure > * Formatting Manual:: How to format and print GDB documentation 490c547 < File: gdb.info, Node: Subdirectories, Next: configure Options, Prev: Installing GDB, Up: Installing GDB --- > File: gdb.info, Node: Subdirectories, Next: Config Names, Prev: Installing GDB, Up: Installing GDB 495,503c552,564 < If you build GDB for several host or target machines, and if your < `make' program handles the `VPATH' feature (GNU `make' does), it is < most convenient instead to build the different GDB configurations in < subdirectories (separate from the source). `configure' does this < for you when you simultaneously specify several configurations; but < it's a good habit even for a single configuration. You can specify < the use of subdirectories using the `+forcesubdirs' option < (abbreviated `+f'). For example, you can build GDB on a Sun 4 as < follows: --- > If you want to run GDB versions for several host or target > machines, you'll need a different gdb compiled for each combination > of host and target. `configure' is designed to make this easy by > allowing you to generate each configuration in a separate > subdirectory. If your `make' program handles the `VPATH' feature > (GNU `make' does), running `make' in each of these directories then > builds the gdb program specified there. > > `configure' creates these subdirectories for you when you > simultaneously specify several configurations; but it's a good habit > even for a single configuration. You can specify the use of > subdirectories using the `+subdirs' option (abbreviated `+sub'). > For example, you can build GDB on a Sun 4 as follows: 505,507c566,568 < cd GNUSRC < ./configure +f sun4 < cd Host-sun4/Target-sun4 --- > cd gdb-4.0 > ./configure +sub sun4 > cd Host-sparc-sun-sunos4/Target-sparc-sun-sunos4 511,521c572,585 < libraries, it creates nested directories `Host-HOST/Target-MACHINE'. < This is because GDB can be configured for cross-compiling: GDB can < run on one machine (the host) while debugging programs that run on < another machine (the target). You specify cross-debugging targets < by giving the `+target=MACHINE' option to `configure'. Specifying < only hosts still gives you two levels of subdirectory for each host, < with the same machine-name suffix on both. On the other hand, < whenever you specify both hosts and targets on the same command < line, `configure' creates all combinations of the hosts and targets < you < list. --- > libraries, it creates nested directories `Host-HOST/Target-TARGET'. > (As you see in the example, the names used for HOST and TARGET may > be expanded from your `configure' argument; *note Config Names::.). > `configure' uses these two directory levels because GDB can be > configured for cross-compiling: GDB can run on one machine (the > host) while debugging programs that run on another machine (the > target). You specify cross-debugging targets by giving the > `+target=TARGET' option to `configure'. Specifying only hosts still > gives you two levels of subdirectory for each host, with the same > configuration suffix on both; that is, if you give any number of > hosts but no targets, GDB will be configured for native debugging on > each host. On the other hand, whenever you specify both hosts and > targets on the same command line, `configure' creates all > combinations of the hosts and targets you list. 526c590 < have `Host-HOST/Target-MACHINE' subdirectories, run `make' in those --- > have `Host-HOST/Target-TARGET' subdirectories, run `make' in those 530,531c594,595 < recursively, so that typing `make' in GNUSRC (or in a < `GNUSRC/Host-HOST/Target-MACHINE' subdirectory) builds all the --- > recursively, so that typing `make' in `gdb-4.0' (or in a > `gdb-4.0/Host-HOST/Target-TARGET' subdirectory) builds all the 534c598 < If you run `configure' from a directory (such as GNUSRC) that --- > If you run `configure' from a directory (such as `gdb-4.0') that 536c600 < `configure' creates the `Host-HOST/Target-MACHINE' subdirectories in --- > `configure' creates the `Host-HOST/Target-TARGET' subdirectories in 539,540c603,604 < cd GNUSRC < configure sun4 +target=vx960 --- > cd gdb-4.0 > configure sun4 +target=vxworks960 544,548c608,620 < GNUSRC/Host-sun4/Target-vx960 < GNUSRC/bfd/Host-sun4/Target-vx960 < GNUSRC/gdb/Host-sun4/Target-vx960 < GNUSRC/libiberty/Host-sun4/Target-vx960 < GNUSRC/readline/Host-sun4/Target-vx960 --- > gdb-4.0/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/bfd/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/gdb/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/libiberty/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > gdb-4.0/readline/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > > The `Makefile' in > > gdb-4.0/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks > > will `cd' to the appropriate lower-level directories, for example: > > gdb-4.0/bfd/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks 550,552c622 < The `Makefile' in `GNUSRC/Host-sun4/Target-vx960' will `cd' to the < appropriate lower-level directories (such as < `GNUSRC/bfd/Host-sun4/Target-vx960'), building each in turn. --- > building each in turn. 559c629,709 < File: gdb.info, Node: configure Options, Next: Formatting Manual, Prev: Subdirectories, Up: Installing GDB --- > File: gdb.info, Node: Config Names, Next: configure Options, Prev: Subdirectories, Up: Installing GDB > > Specifying Names for Hosts and Targets > ====================================== > > The specifications used for hosts and targets in the `configure' > script are based on a three-part naming scheme, but some short > predefined aliases are also supported. The full naming scheme > encodes three pieces of information in the following pattern: > > ARCHITECTURE-VENDOR-OS > > For example, you can use the alias `sun4' as a HOST argument or in > a `+target='TARGET option, but the full name of that configuration > specifies that the architecture is `sparc', the vendor is `sun', and > the operating system is `sunos4'. > > The following table shows all the architectures, hosts, and OS > prefixes that `configure' recognizes in GDB 4.0. Entries in the "OS > prefix" > column ending in a `*' may be followed by a release number. > > > ARCHITECTURE VENDOR OS prefix > ------------+-------------+------------- > | | > a29k | altos | aix* > alliant | aout | aout > arm | apollo | bout > c1 | att | bsd* > c2 | bout | coff > i386 | coff | ctix* > i860 | convergent | dynix* > i960 | convex | esix* > m68000 | dec | hpux* > m68k | encore | isc* > m88k | gould | mach* > mips | hp | newsos* > ns32k | ibm | nindy* > pyramid | intel | none > rs6000 | isi | osf* > rtpc | little | sco* > sparc | mips | sunos* > tahoe | motorola | sysv* > tron | ncr | ultrix* > vax | next | unos* > | none | v88r* > | sco | vms* > | sequent | vxworks* > | sgi | > | sony | > | sun | > | unicom | > | utek | > | wrs | > > *Warning:* Many combinations of architecture, vendor, and OS are > untested. > > The `configure' script accompanying GDB 4.0 does not provide any > query facility to list all supported host and target names or > aliases. `configure' calls the Bourne shell script `config.sub' to > map abbreviations to full names; you can read the script, if you > wish, or you can use it to test your guesses on abbreviations--for > example: > > % sh config.sub sun4 > sparc-sun-sunos4 > % sh config.sub sun3 > m68k-sun-sunos4 > % sh config.sub decstation > mips-dec-ultrix > % sh config.sub hp300bsd > m68k-hp-bsd > % sh config.sub i386v > i386-none-sysv > % sh config.sub i486v > *** No vendor: configuration `i486v' not recognized > >  > File: gdb.info, Node: configure Options, Next: Formatting Manual, Prev: Config Names, Up: Installing GDB 567,568c717,718 < configure [+destdir=DIR] [+forcesubdirs] [+norecur] [+rm] < [+target=MACHINE...] HOST... --- > configure [+destdir=DIR] [+subdirs] [+norecur] [+rm] > [+target=TARGET...] HOST... 571c721 < you prefer; but options introduced with `+' may be truncated. --- > you prefer; but you may abbreviate option names if you use `+'. 580c730 < `+forcesubdirs' --- > `+subdirs' 583c733 < Host-MACHINE/Target-MACHINE --- > Host-HOST/Target-TARGET 590c740,741 < one `+target=MACHINE' option on the `configure' command line. --- > one > `+target=TARGET' option on the `configure' command line. 597c748 < Remove the configuration specified by other arguments. --- > Remove the configuration that the other arguments specify. 599c750 < `+target=MACHINE ...' --- > `+target=TARGET ...' 601,605c752,754 < specified MACHINE. You may specify as many `+target' options < as you wish. To see a list of available targets, execute `ls < tconfig' in the GDB source directory. Without this option, GDB < is configured to debug programs that run on the same machine < (HOST) as GDB itself. --- > specified TARGET. You may specify as many `+target' options as > you wish. Without this option, GDB is configured to debug > programs that run on the same machine (HOST) as GDB itself. 606a756,758 > There is no convenient way to generate a list of all available > targets. > 609,610c761,764 < many host names as you wish. To see a list of available hosts, < execute `ls xconfig' in the GDB source directory. --- > many host names as you wish. > > There is no convenient way to generate a list of all available > hosts. 622,623c776,785 < To format the GDB manual as an Info file, you need the GNU < `makeinfo' program. Once you have it, you can type --- > The GDB 4.0 release includes the Info version of this manual > already formatted: the main Info file is `gdb-4.0/gdb/gdb.info', and > it > refers to subordinate files matching `gdb.info*' in the same > directory. > > If you want to make these Info files yourself from the GDB > manual's source, you need the GNU `makeinfo' program. Once you have > it, > you can type 625c787 < cd GNUSRC/gdb --- > cd gdb-4.0/gdb 637c799 < * `GNUSRC/texinfo': TeX macros defining the GNU Documentation --- > * `gdb-4.0/texinfo': TeX macros defining the GNU Documentation 648c810 < cd GNUSRC/gdb --- > cd gdb-4.0/gdb 654,1031c816,829 <  < File: gdb.info, Node: Copying, Next: Index, Prev: Installing GDB, Up: Top < < GNU GENERAL PUBLIC LICENSE < ************************** < < Version 2, June 1991 < < Copyright (C) 1989, 1991 Free Software Foundation, Inc. < 675 Mass Ave, Cambridge, MA 02139, USA < < Everyone is permitted to copy and distribute verbatim copies < of this license document, but changing it is not allowed. < < Preamble < ======== < < The licenses for most software are designed to take away your < freedom to share and change it. By contrast, the GNU General Public < License is intended to guarantee your freedom to share and change < free software--to make sure the software is free for all its users. < This General Public License applies to most of the Free Software < Foundation's software and to any other program whose authors commit < to using it. (Some other Free Software Foundation software is < covered by the GNU Library General Public License instead.) You can < apply it to your programs, too. < < When we speak of free software, we are referring to freedom, not < price. Our General Public Licenses are designed to make sure that < you have the freedom to distribute copies of free software (and < charge for this service if you wish), that you receive source code < or can get it if you want it, that you can change the software or < use pieces of it in new free programs; and that you know you can do < these things. < < To protect your rights, we need to make restrictions that forbid < anyone to deny you these rights or to ask you to surrender the rights. < These restrictions translate to certain responsibilities for you if < you distribute copies of the software, or if you modify it. < < For example, if you distribute copies of such a program, whether < gratis or for a fee, you must give the recipients all the rights < that < you have. You must make sure that they, too, receive or can get the < source code. And you must show them these terms so they know their < rights. < < We protect your rights with two steps: (1) copyright the software, < and (2) offer you this license which gives you legal permission to < copy, distribute and/or modify the software. < < Also, for each author's protection and ours, we want to make < certain that everyone understands that there is no warranty for this < free software. If the software is modified by someone else and < passed on, we want its recipients to know that what they have is not < the original, so that any problems introduced by others will not < reflect on the original authors' reputations. < < Finally, any free program is threatened constantly by software < patents. We wish to avoid the danger that redistributors of a free < program will individually obtain patent licenses, in effect making < the program proprietary. To prevent this, we have made it clear < that any patent must be licensed for everyone's free use or not < licensed at all. < < The precise terms and conditions for copying, distribution and < modification follow. < < TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION < < 1. This License applies to any program or other work which contains < a notice placed by the copyright holder saying it may be < distributed under the terms of this General Public License. < The "Program", below, refers to any such program or work, and a < "work based on the Program" means either the Program or any < derivative work under copyright law: that is to say, a work < containing the Program or a portion of it, either verbatim or < with modifications and/or translated into another language. < (Hereinafter, translation is included without limitation in the < term "modification".) Each licensee is addressed as "you". < < Activities other than copying, distribution and modification < are not covered by this License; they are outside its scope. < The act of running the Program is not restricted, and the < output from the Program is covered only if its contents < constitute a work based on the Program (independent of having < been made by running the Program). Whether that is true < depends on what the Program does. < < 2. You may copy and distribute verbatim copies of the Program's < source code as you receive it, in any medium, provided that you < conspicuously and appropriately publish on each copy an < appropriate copyright notice and disclaimer of warranty; keep < intact all the notices that refer to this License and to the < absence of any warranty; and give any other recipients of the < Program a copy of this License along with the Program. < < You may charge a fee for the physical act of transferring a < copy, and you may at your option offer warranty protection in < exchange for a fee. < < 3. You may modify your copy or copies of the Program or any portion < of it, thus forming a work based on the Program, and copy and < distribute such modifications or work under the terms of < Section 1 above, provided that you also meet all of these < conditions: < < a) You must cause the modified files to carry prominent < notices stating that you changed the files and the date of < any change. < < b) You must cause any work that you distribute or publish, < that in whole or in part contains or is derived from the < Program or any part thereof, to be licensed as a whole at < no charge to all third parties under the terms of this < License. < < c) If the modified program normally reads commands < interactively when run, you must cause it, when started < running for such interactive use in the most ordinary way, < to print or display an announcement including an < appropriate copyright notice and a notice that there is no < warranty (or else, saying that you provide a warranty) and < that users may redistribute the program under these < conditions, and telling the user how to view a copy of < this License. (Exception: if the Program itself is < interactive but does not normally print such an < announcement, your work based on the Program is not < required to print an announcement.) < < These requirements apply to the modified work as a whole. If < identifiable sections of that work are not derived from the < Program, and can be reasonably considered independent and < separate works in themselves, then this License, and its terms, < do not apply to those sections when you distribute them as < separate works. But when you distribute the same sections as < part of a whole which is a work based on the Program, the < distribution of the whole must be on the terms of this License, < whose permissions for other licensees extend to the entire < whole, and thus to each and every part regardless of who wrote < it. < < Thus, it is not the intent of this section to claim rights or < contest your rights to work written entirely by you; rather, < the intent is to exercise the right to control the distribution < of derivative or collective works based on the Program. < < In addition, mere aggregation of another work not based on < the Program with the Program (or with a work based on the < Program) on a volume of a storage or distribution medium does < not bring the other work under the scope of this License. < < 4. You may copy and distribute the Program (or a work based on it, < under Section 2) in object code or executable form under the < terms of Sections 1 and 2 above provided that you also do one < of the following: < < a) Accompany it with the complete corresponding < machine-readable source code, which must be distributed < under the terms of Sections 1 and 2 above on a medium < < customarily used for software interchange; or, < < b) Accompany it with a written offer, valid for at least three < years, to give any third party, for a charge no more than < your cost of physically performing source distribution, a < complete machine-readable copy of the corresponding source < code, to be distributed under the terms of Sections 1 and < 2 above on a medium customarily used for software < interchange; or, < < c) Accompany it with the information you received as to the < offer to distribute corresponding source code. (This < alternative is allowed only for noncommercial distribution < and only if you received the program in object code or < executable form with such an offer, in accord with < Subsection b above.) < < The source code for a work means the preferred form of the < work for making modifications to it. For an executable work, < complete source code means all the source code for all modules < it contains, plus any associated interface definition files, < plus the scripts used to control compilation and installation < of the executable. However, as a special exception, the source < code distributed need not include anything that is normally < distributed (in either source or binary form) with the major < components (compiler, kernel, and so on) of the operating < system on which the executable runs, unless that component < itself accompanies the executable. < < If distribution of executable or object code is made by < offering access to copy from a designated place, then offering < equivalent access to copy the source code from the same place < counts as distribution of the source code, even though third < parties are not compelled to copy the source along with the < object code. < < 5. You may not copy, modify, sublicense, or distribute the Program < except as expressly provided under this License. Any attempt < otherwise to copy, modify, sublicense or distribute the Program < is void, and will automatically terminate your rights under < this License. However, parties who have received copies, or < rights, from you under this License will not have their < licenses terminated so long as such parties remain in full < compliance. < < 6. You are not required to accept this License, since you have not < signed it. However, nothing else grants you permission to < modify or distribute the Program or its derivative works. < These actions are prohibited by law if you do not accept this < License. Therefore, by modifying or distributing the Program < (or any work based on the Program), you indicate your < acceptance of this License to do so, and all its terms and < conditions for copying, distributing or modifying the Program < or works based on it. < < 7. Each time you redistribute the Program (or any work based on the < Program), the recipient automatically receives a license from < the original licensor to copy, distribute or modify the Program < subject to these terms and conditions. You may not impose any < further restrictions on the recipients' exercise of the rights < granted herein. You are not responsible for enforcing < compliance by third parties to this License. < < 8. If, as a consequence of a court judgment or allegation of patent < infringement or for any other reason (not limited to patent < issues), conditions are imposed on you (whether by court order, < agreement or otherwise) that contradict the conditions of this < License, they do not excuse you from the conditions of this < License. If you cannot distribute so as to satisfy < simultaneously your obligations under this License and any < other pertinent obligations, then as a consequence you may not < distribute the Program at all. For example, if a patent < license would not permit royalty-free redistribution of the < Program by all those who receive copies directly or indirectly < through you, then the only way you could satisfy both it and < this License would be to refrain entirely from distribution of < the Program. < < If any portion of this section is held invalid or < unenforceable under any particular circumstance, the balance of < the section is intended to apply and the section as a whole is < intended to apply in other circumstances. < < It is not the purpose of this section to induce you to < infringe any patents or other property right claims or to < contest validity of any such claims; this section has the sole < purpose of protecting the integrity of the free software < distribution system, which is implemented by public license < practices. Many people have made generous contributions to the < wide range of software distributed through that system in < reliance on consistent application of that system; it is up to < the author/donor to decide if he or she is willing to < distribute software through any other system and a licensee < cannot impose that choice. < < This section is intended to make thoroughly clear what is < believed to be a consequence of the rest of this License. < < 9. If the distribution and/or use of the Program is restricted in < certain countries either by patents or by copyrighted < interfaces, the original copyright holder who places the < Program under this License may add an explicit geographical < distribution limitation excluding those countries, so that < distribution is permitted only in or among countries not thus < excluded. In such case, this License incorporates the < limitation as if written in the body of this License. < < 10. The Free Software Foundation may publish revised and/or new < versions of the General Public License from time to time. Such < new versions will be similar in spirit to the present version, < but may differ in detail to address new problems or concerns. < < Each version is given a distinguishing version number. If < the Program specifies a version number of this License which < applies to it and "any later version", you have the option of < following the terms and conditions either of that version or of < any later version published by the Free Software Foundation. < If the Program does not specify a version number of this < License, you may choose any version ever published by the Free < Software Foundation. < < 11. If you wish to incorporate parts of the Program into other free < programs whose distribution conditions are different, write to < the author to ask for permission. For software which is < copyrighted by the Free Software Foundation, write to the Free < Software Foundation; we sometimes make exceptions for this. < Our decision will be guided by the two goals of preserving the < free status of all derivatives of our free software and of < promoting the sharing and reuse of software generally. < < NO WARRANTY < < 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO < WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE < LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT < HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" < WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, < INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF < < MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE < ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS < WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE < COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. < < 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN < WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY < MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE < LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, < INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR < INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS < OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED < BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE < WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY < HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. < < END OF TERMS AND CONDITIONS < < Applying These Terms to Your New Programs < ========================================= < < If you develop a new program, and you want it to be of the < greatest possible use to the public, the best way to achieve this is < to make it free software which everyone can redistribute and change < under these terms. < < To do so, attach the following notices to the program. It is < safest to attach them to the start of each source file to most < effectively convey the exclusion of warranty; and each file should < have < at least the "copyright" line and a pointer to where the full notice < is found. < < ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. < Copyright (C) 19YY NAME OF AUTHOR < < 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., 675 Mass Ave, Cambridge, MA 02139, USA. < < Also add information on how to contact you by electronic and paper < mail. < < If the program is interactive, make it output a short notice like < this when it starts in an interactive mode: < < Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR < Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. < This is free software, and you are welcome to redistribute it < under certain conditions; type `show c' for details. < < The hypothetical commands `show w' and `show c' should show the < appropriate parts of the General Public License. Of course, the < commands you use may be called something other than `show w' and < `show c'; they could even be mouse-clicks or menu items--whatever < suits < your < program. < < You should also get your employer (if you work as a programmer) or < your school, if any, to sign a "copyright disclaimer" for the < program, if necessary. Here is a sample; alter the names: < < Yoyodyne, Inc., hereby disclaims all copyright interest in the program < `Gnomovision' (which makes passes at compilers) written by James Hacker. < < SIGNATURE OF TY COON, 1 April 1989 < Ty Coon, President of Vice --- > You might also want hard copy of the GDB reference card. The GDB > 4.0 release includes an already-formatted reference card, ready for > printing on a PostScript printer, as `gdb-4.0/gdb/refcard.ps'. It > uses the most common PostScript fonts: the Times family, Courier, > and Symbol. If you have a PostScript printer you can print the > reference card by just sending `refcard.ps' to the printer. > > If you have some other kind of printer, or want to print using > Computer Modern fonts instead, you can still print the reference > card > if you have TeX. Format the reference card by typing > > cd gdb-4.0/gdb > make refcard.dvi 1033,1038c831,834 < This General Public License does not permit incorporating your < program into proprietary programs. If your program is a subroutine < library, you may consider it more useful to permit linking < proprietary applications with the library. If this is what you want < to do, use the GNU Library General Public License instead of this < License. --- > The GDB reference card is designed to print in landscape mode on US > "letter" size paper; that is, on a sheet 11 inches wide by 8.5 > inches high. You will need to specify this form of printing as an > option to your DVI output program. diff -r gdb-3.98/gdb/gdb.info-6 gdb-4.0/gdb/gdb.info-6 2c2 < file gdb-all.texinfo. --- > file gdb-all.texi. 27a28,413 > File: gdb.info, Node: Copying, Next: Index, Prev: Installing GDB, Up: Top > > GNU GENERAL PUBLIC LICENSE > ************************** > > Version 2, June 1991 > > Copyright (C) 1989, 1991 Free Software Foundation, Inc. > 675 Mass Ave, Cambridge, MA 02139, USA > > Everyone is permitted to copy and distribute verbatim copies > of this license document, but changing it is not allowed. > > Preamble > ======== > > The licenses for most software are designed to take away your > freedom to share and change it. By contrast, the GNU General Public > License is intended to guarantee your freedom to share and change > free software--to make sure the software is free for all its users. > This General Public License applies to most of the Free Software > Foundation's software and to any other program whose authors commit > to using it. (Some other Free Software Foundation software is > covered by the GNU Library General Public License instead.) You can > apply it to your programs, too. > > When we speak of free software, we are referring to freedom, not > price. Our General Public Licenses are designed to make sure that > you have the freedom to distribute copies of free software (and > charge for this service if you wish), that you receive source code > or can get it if you want it, that you can change the software or > use pieces of it in new free programs; and that you know you can do > these things. > > To protect your rights, we need to make restrictions that forbid > anyone to deny you these rights or to ask you to surrender the rights. > These restrictions translate to certain responsibilities for you if > you distribute copies of the software, or if you modify it. > > For example, if you distribute copies of such a program, whether > gratis or for a fee, you must give the recipients all the rights > that > you have. You must make sure that they, too, receive or can get the > source code. And you must show them these terms so they know their > rights. > > We protect your rights with two steps: (1) copyright the software, > and (2) offer you this license which gives you legal permission to > copy, distribute and/or modify the software. > > Also, for each author's protection and ours, we want to make > certain that everyone understands that there is no warranty for this > free software. If the software is modified by someone else and > passed on, we want its recipients to know that what they have is not > the original, so that any problems introduced by others will not > reflect on the original authors' reputations. > > Finally, any free program is threatened constantly by software > patents. We wish to avoid the danger that redistributors of a free > program will individually obtain patent licenses, in effect making > the program proprietary. To prevent this, we have made it clear > that any patent must be licensed for everyone's free use or not > licensed at all. > > The precise terms and conditions for copying, distribution and > modification follow. > > TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION > > 1. This License applies to any program or other work which contains > a notice placed by the copyright holder saying it may be > distributed under the terms of this General Public License. > The "Program", below, refers to any such program or work, and a > "work based on the Program" means either the Program or any > derivative work under copyright law: that is to say, a work > containing the Program or a portion of it, either verbatim or > with modifications and/or translated into another language. > (Hereinafter, translation is included without limitation in the > term "modification".) Each licensee is addressed as "you". > > Activities other than copying, distribution and modification > are not covered by this License; they are outside its scope. > The act of running the Program is not restricted, and the > output from the Program is covered only if its contents > constitute a work based on the Program (independent of having > been made by running the Program). Whether that is true > depends on what the Program does. > > 2. You may copy and distribute verbatim copies of the Program's > source code as you receive it, in any medium, provided that you > conspicuously and appropriately publish on each copy an > appropriate copyright notice and disclaimer of warranty; keep > intact all the notices that refer to this License and to the > absence of any warranty; and give any other recipients of the > Program a copy of this License along with the Program. > > You may charge a fee for the physical act of transferring a > copy, and you may at your option offer warranty protection in > exchange for a fee. > > 3. You may modify your copy or copies of the Program or any portion > of it, thus forming a work based on the Program, and copy and > distribute such modifications or work under the terms of > Section 1 above, provided that you also meet all of these > conditions: > > a) You must cause the modified files to carry prominent > notices stating that you changed the files and the date of > any change. > > b) You must cause any work that you distribute or publish, > that in whole or in part contains or is derived from the > Program or any part thereof, to be licensed as a whole at > no charge to all third parties under the terms of this > License. > > c) If the modified program normally reads commands > interactively when run, you must cause it, when started > running for such interactive use in the most ordinary way, > to print or display an announcement including an > appropriate copyright notice and a notice that there is no > warranty (or else, saying that you provide a warranty) and > that users may redistribute the program under these > conditions, and telling the user how to view a copy of > this License. (Exception: if the Program itself is > interactive but does not normally print such an > announcement, your work based on the Program is not > required to print an announcement.) > > These requirements apply to the modified work as a whole. If > identifiable sections of that work are not derived from the > Program, and can be reasonably considered independent and > separate works in themselves, then this License, and its terms, > do not apply to those sections when you distribute them as > separate works. But when you distribute the same sections as > part of a whole which is a work based on the Program, the > distribution of the whole must be on the terms of this License, > whose permissions for other licensees extend to the entire > whole, and thus to each and every part regardless of who wrote > it. > > Thus, it is not the intent of this section to claim rights or > contest your rights to work written entirely by you; rather, > the intent is to exercise the right to control the distribution > of derivative or collective works based on the Program. > > In addition, mere aggregation of another work not based on > the Program with the Program (or with a work based on the > Program) on a volume of a storage or distribution medium does > not bring the other work under the scope of this License. > > 4. You may copy and distribute the Program (or a work based on it, > under Section 2) in object code or executable form under the > terms of Sections 1 and 2 above provided that you also do one > of the following: > > a) Accompany it with the complete corresponding > machine-readable source code, which must be distributed > under the terms of Sections 1 and 2 above on a medium > > customarily used for software interchange; or, > > b) Accompany it with a written offer, valid for at least three > years, to give any third party, for a charge no more than > your cost of physically performing source distribution, a > complete machine-readable copy of the corresponding source > code, to be distributed under the terms of Sections 1 and > 2 above on a medium customarily used for software > interchange; or, > > c) Accompany it with the information you received as to the > offer to distribute corresponding source code. (This > alternative is allowed only for noncommercial distribution > and only if you received the program in object code or > executable form with such an offer, in accord with > Subsection b above.) > > The source code for a work means the preferred form of the > work for making modifications to it. For an executable work, > complete source code means all the source code for all modules > it contains, plus any associated interface definition files, > plus the scripts used to control compilation and installation > of the executable. However, as a special exception, the source > code distributed need not include anything that is normally > distributed (in either source or binary form) with the major > components (compiler, kernel, and so on) of the operating > system on which the executable runs, unless that component > itself accompanies the executable. > > If distribution of executable or object code is made by > offering access to copy from a designated place, then offering > equivalent access to copy the source code from the same place > counts as distribution of the source code, even though third > parties are not compelled to copy the source along with the > object code. > > 5. You may not copy, modify, sublicense, or distribute the Program > except as expressly provided under this License. Any attempt > otherwise to copy, modify, sublicense or distribute the Program > is void, and will automatically terminate your rights under > this License. However, parties who have received copies, or > rights, from you under this License will not have their > licenses terminated so long as such parties remain in full > compliance. > > 6. You are not required to accept this License, since you have not > signed it. However, nothing else grants you permission to > modify or distribute the Program or its derivative works. > These actions are prohibited by law if you do not accept this > License. Therefore, by modifying or distributing the Program > (or any work based on the Program), you indicate your > acceptance of this License to do so, and all its terms and > conditions for copying, distributing or modifying the Program > or works based on it. > > 7. Each time you redistribute the Program (or any work based on the > Program), the recipient automatically receives a license from > the original licensor to copy, distribute or modify the Program > subject to these terms and conditions. You may not impose any > further restrictions on the recipients' exercise of the rights > granted herein. You are not responsible for enforcing > compliance by third parties to this License. > > 8. If, as a consequence of a court judgment or allegation of patent > infringement or for any other reason (not limited to patent > issues), conditions are imposed on you (whether by court order, > agreement or otherwise) that contradict the conditions of this > License, they do not excuse you from the conditions of this > License. If you cannot distribute so as to satisfy > simultaneously your obligations under this License and any > other pertinent obligations, then as a consequence you may not > distribute the Program at all. For example, if a patent > license would not permit royalty-free redistribution of the > Program by all those who receive copies directly or indirectly > through you, then the only way you could satisfy both it and > this License would be to refrain entirely from distribution of > the Program. > > If any portion of this section is held invalid or > unenforceable under any particular circumstance, the balance of > the section is intended to apply and the section as a whole is > intended to apply in other circumstances. > > It is not the purpose of this section to induce you to > infringe any patents or other property right claims or to > contest validity of any such claims; this section has the sole > purpose of protecting the integrity of the free software > distribution system, which is implemented by public license > practices. Many people have made generous contributions to the > wide range of software distributed through that system in > reliance on consistent application of that system; it is up to > the author/donor to decide if he or she is willing to > distribute software through any other system and a licensee > cannot impose that choice. > > This section is intended to make thoroughly clear what is > believed to be a consequence of the rest of this License. > > 9. If the distribution and/or use of the Program is restricted in > certain countries either by patents or by copyrighted > interfaces, the original copyright holder who places the > Program under this License may add an explicit geographical > distribution limitation excluding those countries, so that > distribution is permitted only in or among countries not thus > excluded. In such case, this License incorporates the > limitation as if written in the body of this License. > > 10. The Free Software Foundation may publish revised and/or new > versions of the General Public License from time to time. Such > new versions will be similar in spirit to the present version, > but may differ in detail to address new problems or concerns. > > Each version is given a distinguishing version number. If > the Program specifies a version number of this License which > applies to it and "any later version", you have the option of > following the terms and conditions either of that version or of > any later version published by the Free Software Foundation. > If the Program does not specify a version number of this > License, you may choose any version ever published by the Free > Software Foundation. > > 11. If you wish to incorporate parts of the Program into other free > programs whose distribution conditions are different, write to > the author to ask for permission. For software which is > copyrighted by the Free Software Foundation, write to the Free > Software Foundation; we sometimes make exceptions for this. > Our decision will be guided by the two goals of preserving the > free status of all derivatives of our free software and of > promoting the sharing and reuse of software generally. > > NO WARRANTY > > 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO > WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE > LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT > HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" > WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, > INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF > > MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE > ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS > WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE > COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. > > 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN > WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY > MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE > LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, > INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR > INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS > OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED > BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE > WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY > HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. > > END OF TERMS AND CONDITIONS > > Applying These Terms to Your New Programs > ========================================= > > If you develop a new program, and you want it to be of the > greatest possible use to the public, the best way to achieve this is > to make it free software which everyone can redistribute and change > under these terms. > > To do so, attach the following notices to the program. It is > safest to attach them to the start of each source file to most > effectively convey the exclusion of warranty; and each file should > have > at least the "copyright" line and a pointer to where the full notice > is found. > > ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. > Copyright (C) 19YY NAME OF AUTHOR > > 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., 675 Mass Ave, Cambridge, MA 02139, USA. > > Also add information on how to contact you by electronic and paper > mail. > > If the program is interactive, make it output a short notice like > this when it starts in an interactive mode: > > Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR > Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. > This is free software, and you are welcome to redistribute it > under certain conditions; type `show c' for details. > > The hypothetical commands `show w' and `show c' should show the > appropriate parts of the General Public License. Of course, the > commands you use may be called something other than `show w' and > `show c'; they could even be mouse-clicks or menu items--whatever > suits > your > program. > > You should also get your employer (if you work as a programmer) or > your school, if any, to sign a "copyright disclaimer" for the > program, if necessary. Here is a sample; alter the names: > > Yoyodyne, Inc., hereby disclaims all copyright interest in the program > `Gnomovision' (which makes passes at compilers) written by James Hacker. > > SIGNATURE OF TY COON, 1 April 1989 > Ty Coon, President of Vice > > This General Public License does not permit incorporating your > program into proprietary programs. If your program is a subroutine > library, you may consider it more useful to permit linking > proprietary applications with the library. If this is what you want > to do, use the GNU Library General Public License instead of this > License. > >  48a435,436 > * C++: Cplusplus. > * C++ exception handling: Cplusplus commands. 50c438 < * C++ overloading: Breakpoint Menus. --- > * C++ symbol display: Cplusplus commands. 55a444,445 > * GDB reference card: Formatting Manual. > * GNU C++: Cplusplus. 74a465 > * break in overloaded functions: Cplusplus commands. 79a471 > * call overloaded functions: Cplusplus expressions. 91a484 > * commands for C++: Cplusplus commands. 145d537 < * exception handlers: Frame Info. 146a539 > * exception handlers: Frame Info. 150a544 > * expressions in C++: Cplusplus expressions. 156a551 > * floating point registers: Registers. 165a561 > * g++: Cplusplus. 184a581 > * info all-registers: Registers. 220a618 > * inheritance: Cplusplus commands. 235a634 > * member functions: Cplusplus expressions. 237a637 > * namespace in C++: Cplusplus expressions. 245a646,647 > * overloading: Breakpoint Menus. > * overloading in C++: Cplusplus commands. 262a665,666 > * reference card: Formatting Manual. > * reference declarations: Cplusplus expressions. 264a669 > * reloading symbols: Messages/Warnings. 312a718 > * set symbol-reloading: Messages/Warnings. 392a799 > * this: Cplusplus expressions. 393a801 > * type conversions in C++: Cplusplus expressions. diff -r gdb-3.98/gdb/gdbcore.h gdb-4.0/gdb/gdbcore.h 71,85d70 < < /* Struct section_table maps address ranges to file sections. It is < mostly used with BFD files, but can be used without (e.g. for handling < raw disks, or files not in formats handled by BFD). */ < < struct section_table { < CORE_ADDR addr; /* Lowest address in section */ < CORE_ADDR endaddr; /* 1+highest address in section */ < sec_ptr sec_ptr; /* BFD section pointer */ < }; < < /* Builds a section table, given args BFD, SECTABLE_PTR, SECEND_PTR. < Returns 0 if OK, 1 on error. */ < < int build_section_table (); diff -r gdb-3.98/gdb/i960-tdep.c gdb-4.0/gdb/i960-tdep.c 37c37 < const struct ext_format ext_format_i960 [] = { --- > const struct ext_format ext_format_i960 = { 39c39 < { 12, 9, 0x80, 9,8, 4,0 }, /* i960 */ --- > 12, 9, 0x80, 9,8, 4,0, /* i960 */ diff -r gdb-3.98/gdb/ieee-float.c gdb-4.0/gdb/ieee-float.c 79c79 < unsigned char twobytes[2]; --- > unsigned char tobytes[8]; 98c98 < bcopy (from, twobytes, 2); --- > bcopy (from, tobytes, 8); 100c100 < exponent = ((twobytes[1] & 0xF0) >> 4) | (twobytes[0] & 0x7F) << 4; --- > exponent = ((tobytes[1] & 0xF0) >> 4) | (tobytes[0] & 0x7F) << 4; 104c104 < exponent = ((twobytes[0] & 0xF0) >> 4) | (twobytes[1] & 0x7F) << 4; --- > exponent = ((tobytes[6] & 0xF0) >> 4) | (tobytes[7] & 0x7F) << 4; diff -r gdb-3.98/gdb/infcmd.c gdb-4.0/gdb/infcmd.c 422c422 < /* 4 => return instead of letting the stack dummy run. */ --- > /* DEBUG HOOK: 4 => return instead of letting the stack dummy run. */ 790c790,792 < print all registers. --- > print all registers (fpregs == 1) or all non-float registers > (fpregs == 0). > 793c795 < is required, (eg, for SPARC or Pyramid 90x, which both have --- > is required, (eg, for MIPS or Pyramid 90x, which both have 795c797 < all the registers, define the macro DO_REGISTERS_INFO(regnum) --- > all the registers, define the macro DO_REGISTERS_INFO(regnum, fp) 796a799 > 798,799c801,803 < #define DO_REGISTERS_INFO(regnum) do_registers_info(regnum) < static void do_registers_info (regnum) --- > #define DO_REGISTERS_INFO(regnum, fp) do_registers_info(regnum, fp) > static void > do_registers_info (regnum, fpregs) 800a805 > int fpregs; 804,807d808 < if (regnum == -1) < printf_filtered ( < "Register Contents (relative to selected stack frame)\n\n"); < 813,814c814,821 < if (regnum != -1 && i != regnum) < continue; --- > /* Decide between printing all regs, nonfloat regs, or specific reg. */ > if (regnum == -1) { > if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT && !fpregs) > continue; > } else { > if (i != regnum) > continue; > } 876c883 < registers_info (addr_exp) --- > registers_info (addr_exp, fpregs) 877a885 > int fpregs; 903c911,925 < DO_REGISTERS_INFO(regnum); --- > DO_REGISTERS_INFO(regnum, fpregs); > } > > static void > all_registers_info (addr_exp) > char *addr_exp; > { > registers_info (addr_exp, 1); > } > > static void > nofp_registers_info (addr_exp) > char *addr_exp; > { > registers_info (addr_exp, 0); 1104,1105c1126,1131 < add_info ("registers", registers_info, < "List of registers and their contents, for selected stack frame.\n\ --- > add_info ("registers", nofp_registers_info, > "List of integer registers and their contents, for selected stack frame.\n\ > Register name as argument means describe only that register."); > > add_info ("all-registers", all_registers_info, > "List of all registers and their contents, for selected stack frame.\n\ diff -r gdb-3.98/gdb/inflow.c gdb-4.0/gdb/inflow.c 308,311c308,311 < /* NEW_TTY is called in new child processes under Unix, which will < become debugger target processes. < If the TTYNAME argument is non-null, we switch to that tty for further < input and output. In either case, we remember the setup. */ --- > /* NEW_TTY_PREFORK is called before forking a new child process, > so we can record the state of ttys in the child to be formed. > TTYNAME is null if we are to share the terminal with gdb; > or points to a string containing the name of the desired tty. 313,314c313,317 < void < new_tty (ttyname) --- > NEW_TTY is called in new child processes under Unix, which will > become debugger target processes. This actually switches to > the terminal specified in the NEW_TTY_PREFORK call. */ > > new_tty_prefork (ttyname) 317,318d319 < register int tty; < 322c323,330 < if (ttyname == 0) --- > } > > void > new_tty () > { > register int tty; > > if (inferior_thisrun_terminal == 0) 337c345 < tty = open(ttyname, O_RDWR); --- > tty = open(inferior_thisrun_terminal, O_RDWR); 340c348 < print_sys_errmsg (ttyname, errno); --- > print_sys_errmsg (inferior_thisrun_terminal, errno); 473c481 < fcntl (0, F_GETFL, tflags_ours); --- > tflags_ours = fcntl (0, F_GETFL, 0); diff -r gdb-3.98/gdb/infptrace.c gdb-4.0/gdb/infptrace.c 163a164 > #include /* For struct nlist */ 327c328 < child_xfer_memory (memaddr, myaddr, len, write) --- > child_xfer_memory (memaddr, myaddr, len, write, target) 331a333 > struct target_ops target; /* ignored */ diff -r gdb-3.98/gdb/infrun.c gdb-4.0/gdb/infrun.c 150a151 > extern char **environ; 154d154 < /* Copy of inferior_io_terminal when inferior was last started. */ 156,158d155 < extern char *inferior_thisrun_terminal; < < 299a297,301 > /* Handle any optimized stores to the inferior NOW... */ > #ifdef DO_DEFERRED_STORES > DO_DEFERRED_STORES; > #endif > 407,411d408 < /* Handle any optimized stores to the inferior NOW... */ < #ifdef DO_DEFERRED_STORES < DO_DEFERRED_STORES; < #endif < 474a472 > char **save_our_env; 502a501,510 > /* Retain a copy of our environment variables, since the child will > replace the value of environ and if we're vforked, we have to > restore it. */ > save_our_env = environ; > > /* Tell the terminal handling subsystem what tty we plan to run on; > it will just record the information for later. */ > > new_tty_prefork (inferior_io_terminal); > 538,539c546,547 < /* Tell the terminal handling subsystem what tty we plan to run on; < it will now switch to that one if non-null. */ --- > /* Ask the tty subsystem to switch to the one we specified earlier > (or to share the current terminal, if none was specified). */ 541c549 < new_tty (inferior_io_terminal); --- > new_tty (); 550d557 < execle (shell_file, shell_file, "-c", shell_command, (char *)0, env); 551a559,566 > /* There is no execlpe call, so we have to set the environment > for our child in the global variable. If we've vforked, this > clobbers the parent, but environ is restored a few lines down > in the parent. By the way, yes we do need to look down the > path to find $SHELL. Rich Pixley says so, and I agree. */ > environ = env; > execlp (shell_file, shell_file, "-c", shell_command, (char *)0); > 556a572,574 > > /* Restore our environment in case a vforked child clob'd it. */ > environ = save_our_env; diff -r gdb-3.98/gdb/inftarg.c gdb-4.0/gdb/inftarg.c 38c38 < extern void kill_inferior(), add_syms_addr_command(); --- > extern void kill_inferior(); 182c182 < kill_inferior, 0, add_syms_addr_command, /* load */ --- > kill_inferior, 0, /* load */ 187a188 > 0, 0, /* Section pointers */ diff -r gdb-3.98/gdb/m68k-tdep.c gdb-4.0/gdb/m68k-tdep.c 23c23 < const struct ext_format ext_format_68881 [] = { --- > const struct ext_format ext_format_68881 = { 25c25 < { 12, 0, 0x80, 0,1, 4,8 }, /* mc68881 */ --- > 12, 0, 0x80, 0,1, 4,8 /* mc68881 */ diff -r gdb-3.98/gdb/main.c gdb-4.0/gdb/main.c 49a50 > #include 54d54 < #include 394a395 > {0, 0, 0, 0}, 586c587 < else if (!setjmp (to_top_level)) --- > else if (isdigit (corearg[0]) && !setjmp (to_top_level)) 788,792c789,790 < < If RETURN_RESULT is set it allocates < space for whatever the user types and returns the result. < If not, it just discards what the user types and returns a garbage < non-NULL value. --- > Action is compatible with "readline", e.g. space for the result is > malloc'd and should be freed by the caller. 794c792 < No matter what return_result is, a NULL return means end of file. */ --- > A NULL return means end of file. */ 796c794 < gdb_readline (prrompt, return_result) --- > gdb_readline (prrompt) 798d795 < int return_result; 811,812c808 < if (return_result) < result = (char *) xmalloc (result_size); --- > result = (char *) xmalloc (result_size); 819,821c815,816 < if (c == EOF || c == '\n') < break; < if (return_result) --- > > if (c == EOF) 823,828c818,819 < result[input_index++] = c; < while (input_index >= result_size) < { < result_size *= 2; < result = (char *) xrealloc (result, result_size); < } --- > free (result); > return NULL; 830d820 < } 832,846c822,834 < if (c == EOF) < { < if (return_result) < free (result); < return NULL; < } < < if (return_result) < { < result[input_index++] = '\0'; < return result; < } < else < /* Return any old non-NULL pointer. */ < return (char *) "non-NULL"; --- > if (c == '\n') > break; > > result[input_index++] = c; > while (input_index >= result_size) > { > result_size *= 2; > result = (char *) xrealloc (result, result_size); > } > } > > result[input_index++] = '\0'; > return result; 1034,1081d1021 < #if 0 < Writing the history file upon a terminating signal is not useful, < because the info is rarely relevant and is in the core dump anyway. < It is an annoyance to have the file cluttering up the place. < /* The list of signals that would terminate us if not caught. < We catch them, but just so that we can write the history file, < and so forth. */ < int terminating_signals[] = { < SIGHUP, SIGINT, SIGILL, SIGTRAP, SIGIOT, < SIGEMT, SIGFPE, SIGKILL, SIGBUS, SIGSEGV, SIGSYS, < SIGPIPE, SIGALRM, SIGTERM, < #ifdef SIGXCPU < SIGXCPU, < #endif < #ifdef SIGXFSZ < SIGXFSZ, < #endif < #ifdef SIGVTALRM < SIGVTALRM, < #endif < #ifdef SIGPROF < SIGPROF, < #endif < #ifdef SIGLOST < SIGLOST, < #endif < #ifdef SIGUSR1 < SIGUSR1, SIGUSR2 < #endif < }; < < #define TERMSIGS_LENGTH (sizeof (terminating_signals) / sizeof (int)) < < static void < catch_termination (sig) < int sig; < { < /* We are probably here because GDB has a bug. Write out the history < so that we might have a better chance of reproducing it. */ < /* Tell the user what we are doing so he can delete the file if < it is unwanted. */ < write_history (history_filename); < printf ("\n%s written.\n", history_filename); < signal (sig, SIG_DFL); < kill (getpid (), sig); < } < #endif < 1092,1097d1031 < #if 0 < register int i; < < for (i = 0; i < TERMSIGS_LENGTH; i++) < signal (terminating_signals[i], catch_termination); < #endif 1104c1038 < on BSD4.3 systems using vfork, that will (apparently) affect the --- > on BSD4.3 systems using vfork, that can affect the 1106c1040 < being shared between the two, apparently). Since we establish --- > might be in memory, shared between the two). Since we establish 1174c1108 < rl = gdb_readline (local_prompt, 1); --- > rl = gdb_readline (local_prompt); diff -r gdb-3.98/gdb/mcheck.c gdb-4.0/gdb/mcheck.c 23d22 < #include 30a30 > 32c32,33 < static void EXFUN((*abortfunc), (void)) = abort; --- > extern void abort(); > static void EXFUN((*abortfunc), (void)) = (void (*)()) abort; diff -r gdb-3.98/gdb/mips-tdep.c gdb-4.0/gdb/mips-tdep.c 539c539,540 < static mips_print_register(regnum, all) --- > static > mips_print_register(regnum, all) 583c584,585 < mips_do_registers_info(regnum) --- > /* Replacement for generic do_registers_info. */ > mips_do_registers_info (regnum, fpregs) 584a587 > int fpregs; 591a595,598 > if ((!fpregs) && regnum >= FP0_REGNUM && regnum <= FCRIR_REGNUM) { > regnum++; > continue; > } diff -r gdb-3.98/gdb/pyr-tdep.c gdb-4.0/gdb/pyr-tdep.c 49c49,50 < /* Print the register regnum, or all registers if regnum is -1. */ --- > /* Print the register regnum, or all registers if regnum is -1. > fpregs is currently ignored. */ 51c52 < pyr_do_registers_info (regnum) --- > pyr_do_registers_info (regnum, fpregs) 52a54 > int fpregs; Only in gdb-4.0/gdb: refcard.ps diff -r gdb-3.98/gdb/remote-eb.c gdb-4.0/gdb/remote-eb.c 43d42 < extern void add_syms_addr_command (); 792c791 < eb_xfer_inferior_memory (memaddr, myaddr, len, write) --- > eb_xfer_inferior_memory (memaddr, myaddr, len, write, target) 796a796 > struct target_ops *target; /* ignored */ 925c925 < 0, add_syms_addr_command, /* load */ --- > 0, /* load */ 931a932 > 0, 0, /* Section pointers */ diff -r gdb-3.98/gdb/remote-nindy.c gdb-4.0/gdb/remote-nindy.c 127d126 < extern void add_syms_addr_command (); 134c133 < extern struct ext_format ext_format_i960[]; /* i960-tdep.c */ --- > extern struct ext_format ext_format_i960; /* i960-tdep.c */ 499c498 < double_to_ieee_extended (ext_format_i960, &dub, --- > double_to_ieee_extended (&ext_format_i960, &dub, 528c527 < ieee_extended_to_double (ext_format_i960, --- > ieee_extended_to_double (&ext_format_i960, 576c575 < nindy_xfer_inferior_memory(memaddr, myaddr, len, write) --- > nindy_xfer_inferior_memory(memaddr, myaddr, len, write, target) 580a580 > struct target_ops *target; /* ignored */ 950c950 < nindy_load, add_syms_addr_command, --- > nindy_load, 956a957 > 0, 0, /* Section pointers */ diff -r gdb-3.98/gdb/remote-vx.c gdb-4.0/gdb/remote-vx.c 57d56 < extern void add_syms_addr_command (); 902c901 < vx_xfer_memory (memaddr, myaddr, len, write) --- > vx_xfer_memory (memaddr, myaddr, len, write, target) 905a905,906 > int write; > struct target_ops *target; /* ignored */ 1751c1752 < vx_load_command, add_syms_addr_command, --- > vx_load_command, 1756a1758 > 0, 0, /* Section pointers */ 1773c1775 < vx_load_command, add_syms_addr_command, --- > vx_load_command, 1779a1782 > 0, 0, /* Section pointers */ diff -r gdb-3.98/gdb/remote.c gdb-4.0/gdb/remote.c 86d85 < extern void add_syms_addr_command (); 475a475 > /* ARGSUSED */ 477c477 < remote_xfer_inferior_memory(memaddr, myaddr, len, should_write) --- > remote_xfer_memory(memaddr, myaddr, len, should_write, target) 481a482 > struct target_ops *target; /* ignored */ 837c838 < remote_xfer_inferior_memory, remote_files_info, --- > remote_xfer_memory, remote_files_info, 841c842 < 0, add_syms_addr_command, /* load */ --- > 0, /* load */ 846a848 > 0, 0, /* Section pointers */ diff -r gdb-3.98/gdb/solib.c gdb-4.0/gdb/solib.c 51,52c51,52 < struct section_table *so_sections; < struct section_table *so_sections_end; --- > struct section_table *sections; > struct section_table *sections_end; 88c88 < if (build_section_table (so->so_bfd, &so->so_sections, &so->so_sections_end)) --- > if (build_section_table (so->so_bfd, &so->sections, &so->sections_end)) 92c92 < for (p = so->so_sections; p < so->so_sections_end; p++) --- > for (p = so->sections; p < so->sections_end; p++) 206c206 < new->so_sections = NULL; --- > new->sections = NULL; 219,242d218 < /* < ** Called by core_xfer_memory if the transfer form the core file failed. < ** We try to satisfy the request from the text sections of the shared libs. < */ < int < solib_xfer_memory (memaddr, myaddr, len, write) < CORE_ADDR memaddr; < char *myaddr; < int len; < int write; < { < int res; < register struct so_list *so = 0; < < while (so = find_solib(so)) < { < res = xfer_memory (memaddr, myaddr, len, write, < so->so_bfd, so->so_sections, so->so_sections_end); < if (res) < return res; < } < return 0; < } < /*=======================================================================*/ 244,246c220,224 < void solib_add(arg_string, from_tty) < char *arg_string; < int from_tty; --- > void > solib_add (arg_string, from_tty, target) > char *arg_string; > int from_tty; > struct target_ops *target; 248,249c226,229 < register struct so_list *so = 0; /* link map state variable */ < char *val; --- > register struct so_list *so = 0; /* link map state variable */ > char *val; > int count, old; > struct section_table *sec; 251,266c231,235 < if (arg_string == 0) < re_comp ("."); < else if (val = (char *) re_comp (arg_string)) { < error ("Invalid regexp: %s", val); < } < < /* Getting new symbols may change our opinion about what is < frameless. */ < reinit_frame_cache (); < < printf_filtered ("All shared libraries"); < if (arg_string) < printf_filtered (" matching regular expresion \"%s\"", arg_string); < printf_filtered (":\n"); < < dont_repeat(); --- > if (arg_string == 0) > re_comp ("."); > else if (val = (char *) re_comp (arg_string)) { > error ("Invalid regexp: %s", val); > } 268,277c237,290 < while (so = find_solib(so)) { < if (re_exec(so->inferior_so_name)) { < if (so->symbols_loaded) { < printf("Symbols already loaded for %s\n", so->inferior_so_name); < } else { < symbol_file_add (so->inferior_so_name, from_tty, < (unsigned int)so->inferior_lm.lm_addr, 0); < so->symbols_loaded = 1; < } < } --- > /* Getting new symbols may change our opinion about what is > frameless. */ > reinit_frame_cache (); > > printf_filtered ("Shared libraries"); > if (arg_string) > printf_filtered (" matching regular expresion \"%s\"", arg_string); > printf_filtered (":\n"); > > dont_repeat(); > > while (so = find_solib(so)) { > if (re_exec(so->inferior_so_name)) { > if (so->symbols_loaded) { > printf("Symbols already loaded for %s\n", so->inferior_so_name); > } else { > symbol_file_add (so->inferior_so_name, from_tty, > (unsigned int)so->inferior_lm.lm_addr, 0); > so->symbols_loaded = 1; > } > } > } > > /* Now add the shared library sections to the section table of the > specified target, if any. */ > if (target) { > /* Count how many new section_table entries there are. */ > so = 0; > count = 0; > while (0 != (so = find_solib (so))) { > count += so->sections_end - so->sections; > } > > if (count) { > /* Reallocate the target's section table including the new size. */ > if (target->sections) { > old = target->sections_end - target->sections; > target->sections = (struct section_table *) > realloc ((char *)target->sections, > (sizeof (struct section_table)) * (count + old)); > } else { > old = 0; > target->sections = (struct section_table *) > malloc ((sizeof (struct section_table)) * count); > } > target->sections_end = target->sections + (count + old); > > /* Add these section table entries to the target's table. */ > while (0 != (so = find_solib (so))) { > count = so->sections_end - so->sections; > bcopy (so->sections, (char *)(target->sections + old), > (sizeof (struct section_table)) * count); > old += count; > } 278a292 > } 279a294 > 327,328c342,343 < if (so_list_head->so_sections) < free (so_list_head->so_sections); --- > if (so_list_head->sections) > free (so_list_head->sections); 335c350,355 < --- > } > > void > sharedlibrary_command (args, from_tty) > { > solib_add (args, from_tty, (struct target_ops *)0); 342c362 < add_com("sharedlibrary", class_files, solib_add, --- > add_com("sharedlibrary", class_files, sharedlibrary_command, 346d365 < diff -r gdb-3.98/gdb/source.c gdb-4.0/gdb/source.c 39c39,42 < extern char *strstr(); --- > /* If we use this declaration, it breaks because of fucking ANSI "const" stuff > on some systems. We just have to not declare it at all, have it default > to int, and possibly botch on a few systems. Thanks, ANSIholes... */ > /* extern char *strstr(); */ 506c509,511 < p = strstr (source_path, "$cdir"); --- > /* We cast strstr's result in case an ANSIhole has made it const, > which produces a "required warning" when assigned to a nonconst. */ > p = (char *)strstr (source_path, "$cdir"); 545c550 < #if defined (BROKEN_LARGE_ALLOCA) --- > #ifdef BROKEN_LARGE_ALLOCA diff -r gdb-3.98/gdb/sparc-tdep.c gdb-4.0/gdb/sparc-tdep.c 130,131c130,133 < read_memory ((CORE_ADDR)&(((struct rwindow *)(thisframe->frame))->rw_in[6]), < &retval, --- > int err; > err = target_read_memory > ((CORE_ADDR)&(((struct rwindow *)(thisframe->frame))->rw_in[6]), > (char *) &retval, 132a135,136 > if (err) > return 0; 189c193 < --- > fid->pc = FRAME_SAVED_PC (fid); 289c293,299 < /* This routine should be more specific in it's actions; making sure --- > /* Given a pc value, skip it forward past the function prologue by > disassembling instructions that appear to be a prologue. > > If FRAMELESS_P is set, we are only testing to see if the function > is frameless. This allows a quicker answer. > > This routine should be more specific in its actions; making sure 292c302 < skip_prologue (start_pc) --- > skip_prologue (start_pc, frameless_p) 293a304 > int frameless_p; 318,319d328 < /* Have we found a save instruction? */ < int found_save = 0; 348d356 < found_save = 1; 349a358,359 > if (frameless_p) /* If the save is all we care about, */ > return pc; /* return before doing more work */ 351a362,366 > else > { > /* Without a save instruction, it's not a prologue. */ > return start_pc; > } 368,372c383 < if (found_save) < return pc; < else < /* Without a save instruction, it's not a prologue. */ < return start_pc; --- > return pc; 605a617,636 > /* On the Sun 4 under SunOS, the compile will leave a fake insn which > encodes the structure size being returned. If we detect such > a fake insn, step past it. */ > > CORE_ADDR > sparc_pc_adjust(pc) > CORE_ADDR pc; > { > long insn; > int err; > > err = target_read_memory (pc + 8, (char *)&insn, sizeof(long)); > SWAP_TARGET_AND_HOST (&insn, sizeof(long)); > if ((err == 0) && (insn & 0xfffffe00) == 0) > return pc+12; > else > return pc+8; > } > > 610c641 < const struct ext_format ext_format_sparc[] = { --- > const struct ext_format ext_format_sparc = { 612c643 < { 16, 0, 0x80, 0,1, 4,8 }, /* sparc */ --- > 16, 0, 0x80, 0,1, 4,8, /* sparc */ diff -r gdb-3.98/gdb/stack.c gdb-4.0/gdb/stack.c 595,596c595 < /* Same, but print labels. < FIXME, this does not even reference FRAME... --gnu */ --- > /* Same, but print labels. */ 599c598 < print_block_frame_labels (b, frame, have_default, stream) --- > print_block_frame_labels (b, have_default, stream) 601d599 < register FRAME frame; 731c729 < if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), frame, &have_default, stream)) --- > if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream)) 913a912,916 > #if 0 > /* This is ancient and unnecessary? -- gnu@cygnus.com > It also loops forever if frame #0 is not current_frame (e.g. when we have > used the "frame" command after the stack was invalid). */ > 931a935,943 > #else > while (*level_offset_ptr < 0) { > frame1 = get_next_frame (frame); > if (!frame1) > break; > frame = frame1; > (*level_offset_ptr)++; > } > #endif 955,958c967,975 < for (frame1 = get_prev_frame (0); < frame1 && frame1 != frame; < frame1 = get_prev_frame (frame1)) < level++; --- > /* Try to figure out what level this frame is. But if there is > no current stack, don't error out -- let the user set one. */ > frame1 = 0; > if (get_current_frame()) { > for (frame1 = get_prev_frame (0); > frame1 && frame1 != frame; > frame1 = get_prev_frame (frame1)) > level++; > } diff -r gdb-3.98/gdb/symfile.c gdb-4.0/gdb/symfile.c 92a93,101 > /* Flag for whether user will be reloading symbols multiple times. > Defaults to ON for VxWorks, otherwise OFF. */ > > #ifdef SYMBOL_RELOADING_DEFAULT > int symbol_reloading = SYMBOL_RELOADING_DEFAULT; > #else > int symbol_reloading = 0; > #endif > 358,359d366 < register struct symtab *result; < 420c427 < printf_filtered ("Reading symbol data from %s...", name); --- > printf_filtered ("Reading symbols from %s...", name); 605,619c612,613 < /* This function runs the add_syms command of our current target. */ < < void < add_symbol_file_command (args, from_tty) < char *args; < int from_tty; < { < /* Getting new symbols may change our opinion about what is < frameless. */ < reinit_frame_cache (); < < target_add_syms (args, from_tty); < } < < /* This function allows the addition of incrementally linked object files. */ --- > /* This function allows the addition of incrementally linked object files. > It does not modify any state in the target, only in the debugger. */ 623,624c617,618 < add_syms_addr_command (arg_string, from_tty) < char* arg_string; --- > add_symbol_file_command (arg_string, from_tty) > char *arg_string; 629a624,627 > /* Getting new symbols may change our opinion about what is > frameless. */ > reinit_frame_cache (); > 707c705,706 < we stop whining about it? */ --- > we stop whining about it? Default is no whining at all, since so many > systems have ill-constructed symbol files. */ 709c708 < static unsigned stop_whining = 1; --- > static unsigned stop_whining = 0; 861a861,864 > /* We only wack things if the symbol-reload switch is set. */ > if (!symbol_reloading) > return 0; > 951a955,961 > &setlist), > &showlist); > > add_show_from_set > (add_set_cmd ("symbol-reloading", class_support, var_boolean, > (char *)&symbol_reloading, > "Set dynamic symbol table reloading multiple times in one run.", diff -r gdb-3.98/gdb/target.c gdb-4.0/gdb/target.c 34d33 < extern void add_syms_addr_command(); 58d56 < add_syms_addr_command, /* add_syms */ 62a61 > 0, 0, /* section pointers */ 216,218d214 < /* FIXME: What is savecur for? Why isn't it used? */ < struct target_ops *savecur; < 224d219 < savecur = current_target; 299d293 < de_fault (to_add_syms, tcomplain); 433c427,428 < res = current_target->to_xfer_memory(memaddr, myaddr, len, write); --- > res = current_target->to_xfer_memory > (memaddr, myaddr, len, write, current_target); 448c443 < res = t->to_xfer_memory(memaddr, myaddr, curlen, write); --- > res = t->to_xfer_memory(memaddr, myaddr, curlen, write, t); 496c491 < (t->to_files_info)(); --- > (t->to_files_info)(t); diff -r gdb-3.98/gdb/target.h gdb-4.0/gdb/target.h 39a40,41 > #include "bfd.h" > 66,67c68,70 < int (*to_xfer_memory) (CORE_ADDR memaddr, char *myaddr, int len, int w); < void (*to_files_info) (); --- > int (*to_xfer_memory) (CORE_ADDR memaddr, char *myaddr, int len, int w, > struct target_ops *); > void (*to_files_info) (struct target_ops *); 77d79 < void (*to_add_syms) (char *arg, int from_tty); 89a92,93 > struct section_table *sections; > struct section_table *sections_end; 115d118 < void (*to_add_syms) (); 126a130,131 > struct section_table *sections; > struct section_table *sections_end; 244c249 < (*current_target->to_files_info) () --- > (*current_target->to_files_info) (current_target) 311,317d315 < /* Add the symbols from an executable file into GDB's symbol table, as if < the file had been loaded at a particular address (or set of addresses). < This does not change any state in the target system, only in GDB. */ < < #define target_add_syms(arg, from_tty) \ < (*current_target->to_add_syms) (arg, from_tty) < 414a413,428 > > /* Struct section_table maps address ranges to file sections. It is > mostly used with BFD files, but can be used without (e.g. for handling > raw disks, or files not in formats handled by BFD). */ > > struct section_table { > CORE_ADDR addr; /* Lowest address in section */ > CORE_ADDR endaddr; /* 1+highest address in section */ > sec_ptr sec_ptr; /* BFD section pointer */ > bfd *bfd; /* BFD file pointer */ > }; > > /* Builds a section table, given args BFD, SECTABLE_PTR, SECEND_PTR. > Returns 0 if OK, 1 on error. */ > > int build_section_table (); diff -r gdb-3.98/gdb/tconfig/hp300bsd gdb-4.0/gdb/tconfig/hp300bsd 2c2 < TDEPFILES= exec.o m68k-pinsn.o --- > TDEPFILES= exec.o m68k-pinsn.o m68k-tdep.o diff -r gdb-3.98/gdb/tconfig/sun2os4 gdb-4.0/gdb/tconfig/sun2os4 2,6d1 < # The system-supplied assembler re-orders the symbols so that gdb < # can't find "gcc_compiled.". < #msg If you compile your program with GCC, use the GNU assembler. < #msg < diff -r gdb-3.98/gdb/tconfig/sun3os4 gdb-4.0/gdb/tconfig/sun3os4 2,6d1 < # The system-supplied assembler re-orders the symbols so that gdb < # can't find "gcc_compiled.". < #msg If you compile your program with GCC, use the GNU assembler. < #msg < diff -r gdb-3.98/gdb/tconfig/sun4 gdb-4.0/gdb/tconfig/sun4 2,6d1 < # The system-supplied assembler re-orders the symbols so that gdb < # can't find "gcc_compiled.". < #msg If you compile your program with GCC, use the GNU assembler. < #msg < diff -r gdb-3.98/gdb/tconfig/sun4os4 gdb-4.0/gdb/tconfig/sun4os4 2,6d1 < # The system-supplied assembler re-orders the symbols so that gdb < # can't find "gcc_compiled.". < #msg If you compile your program with GCC, use the GNU assembler. < #msg < diff -r gdb-3.98/gdb/tm-68k.h gdb-4.0/gdb/tm-68k.h 152c152 < extern struct ext_format ext_format_68881 []; --- > extern struct ext_format ext_format_68881; 160c160 < ieee_extended_to_double (ext_format_68881, (FROM), (TO)); \ --- > ieee_extended_to_double (&ext_format_68881, (FROM), (double *)(TO)); \ 171c171 < double_to_ieee_extended (ext_format_68881, (FROM), (TO)); \ --- > double_to_ieee_extended (&ext_format_68881, (double *)(FROM), (TO)); \ diff -r gdb-3.98/gdb/tm-hp300bsd.h gdb-4.0/gdb/tm-hp300bsd.h 1,2c1,2 < /* Parameters for execution on a Hewlett-Packard 9000/300, running bsd. < Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc. --- > /* Parameters for target machine Hewlett-Packard 9000/300, running bsd. > Copyright (C) 1986, 1987, 1989, 1991 Free Software Foundation, Inc. diff -r gdb-3.98/gdb/tm-i960.h gdb-4.0/gdb/tm-i960.h 178c178 < extern struct ext_format ext_format_i960[]; \ --- > extern struct ext_format ext_format_i960; \ 181c181 < ieee_extended_to_double (ext_format_i960, (FROM), (TO)); \ --- > ieee_extended_to_double (&ext_format_i960, (FROM), (double *)(TO)); \ 191c191 < extern struct ext_format ext_format_i960[]; \ --- > extern struct ext_format ext_format_i960; \ 194c194 < double_to_ieee_extended (ext_format_i960, (FROM), (TO)); \ --- > double_to_ieee_extended (&ext_format_i960, (double *)(FROM), (TO)); \ diff -r gdb-3.98/gdb/tm-mips.h gdb-4.0/gdb/tm-mips.h 137c137 < #define DO_REGISTERS_INFO(_regnum) mips_do_registers_info(_regnum) --- > #define DO_REGISTERS_INFO(_regnum, fp) mips_do_registers_info(_regnum, fp) diff -r gdb-3.98/gdb/tm-pyr.h gdb-4.0/gdb/tm-pyr.h 184c184 < #define DO_REGISTERS_INFO(_regnum) pyr_do_registers_info(_regnum) --- > #define DO_REGISTERS_INFO(_regnum, fp) pyr_do_registers_info(_regnum, fp) diff -r gdb-3.98/gdb/tm-sparc.h gdb-4.0/gdb/tm-sparc.h 67c67,70 < to reach some "real" code. */ --- > to reach some "real" code. SKIP_PROLOGUE_FRAMELESS_P advances > the PC past some of the prologue, but stops as soon as it > knows that the function has a frame. Its result is equal > to its input PC if the function is frameless, unequal otherwise. */ 70c73,75 < { pc = skip_prologue (pc); } --- > { pc = skip_prologue (pc, 0); } > #define SKIP_PROLOGUE_FRAMELESS_P(pc) \ > { pc = skip_prologue (pc, 1); } 82,83c87,88 < #define PC_ADJUST(pc) ((read_memory_integer (pc + 8, 4) & 0xfffffe00) == 0 ? \ < pc+12 : pc+8) --- > #define PC_ADJUST(pc) sparc_pc_adjust(pc) > extern CORE_ADDR sparc_pc_adjust(); 573c578 < function "setup_arbitrary_frame" in mach-dep.c */ --- > function "setup_arbitrary_frame" in sparc-tdep.c */ diff -r gdb-3.98/gdb/tm-sunos.h gdb-4.0/gdb/tm-sunos.h 22,23c22 < #define SOLIB_ADD(filename, from_tty) solib_add (filename, from_tty) < #define SOLIB_XFER_MEMORY(memaddr, myaddr, len, write) solib_xfer_memory (memaddr, myaddr, len, write) --- > #define SOLIB_ADD(filename, from_tty, targ) solib_add (filename, from_tty, targ) 29d27 < extern int solib_xfer_memory (); diff -r gdb-3.98/gdb/utils.c gdb-4.0/gdb/utils.c 136a137 > cleanup_chain = ptr->next; /* Do this first incase recursion */ 138d138 < cleanup_chain = ptr->next; 720a721,722 > char *ignore; > 722c724,726 < gdb_readline ("---Type to continue---", 0); --- > ignore = gdb_readline ("---Type to continue---"); > if (ignore) > free (ignore); 724a729 > dont_repeat (); /* Forget prev cmd -- CR won't repeat it. */ 1208a1214 > #ifndef HAVE_STRSTR 1210c1216 < char * --- > const char * 1218c1224 < return (char *)p; --- > return p; 1221a1228 > #endif /* do not HAVE_STRSTR */ diff -r gdb-3.98/gdb/valprint.c gdb-4.0/gdb/valprint.c 673c673 < 0. Is "> 0" meant? I'm not sure what an "array of --- > >= 0. Is "> 0" meant? I'm not sure what an "array of diff -r gdb-3.98/gdb/values.c gdb-4.0/gdb/values.c 1018d1017 < entry_type = VALUE_TYPE (entry); 1182c1181 < TYPE_LENGTH (type)); --- > TYPE_LENGTH (basetype)); 1375,1376c1374,1375 < if ((0 != fieldval & ~((1< if (bitsize < (8 * sizeof (fieldval)) > && 0 != (fieldval & ~((1< /* Parameters for hosting on a Hewlett-Packard 9000/300, running bsd. > Copyright (C) 1986, 1987, 1989, 1991 Free Software Foundation, Inc. 26c26,31 < #include --- > #define HOST_BYTE_ORDER BIG_ENDIAN > > /* Avoid "INT_MIN redefined" warnings -- by defining it here, exactly > the same as in the system file. */ > #undef INT_MIN > #define INT_MIN 0x80000000 diff -r gdb-3.98/gdb/xm-sun3os4.h gdb-4.0/gdb/xm-sun3os4.h 23,27c23,27 < /* There is a bug which can cause alloca to fail to allocate large < areas of memory one time in every 4096 (we think). */ < /* chase@orc.olivetti.com says that 4 megabyte alloca's consistently fail, < even though the stack limit (SET_STACK_LIMIT_HUGE) has been set < to 250 megabytes. */ --- > /* Large alloca's fail because the attempt to increase the stack limit in > main() fails because shared libraries are allocated just below the initial > stack limit. The SunOS kernel will not allow the stack to grow into > the area occupied by the shared libraries. Sun knows about this bug > but has no obvious fix for it. */ 28a29,30 > > #define HAVE_STRSTR diff -r gdb-3.98/gdb/xm-sun4os4.h gdb-4.0/gdb/xm-sun4os4.h 21d20 < 22a22,30 > > /* Large alloca's fail because the attempt to increase the stack limit in > main() fails because shared libraries are allocated just below the initial > stack limit. The SunOS kernel will not allow the stack to grow into > the area occupied by the shared libraries. Sun knows about this bug > but has no obvious fix for it. */ > #define BROKEN_LARGE_ALLOCA > > #define HAVE_STRSTR Only in gdb-4.0/include: ChangeLog diff -r gdb-3.98/include/a.out.gnu.h gdb-4.0/include/a.out.gnu.h 57a58,61 > /* HP/BSD formats */ > M_HP200 = 200, /* hp200 (68010) BSD binary */ > M_HP300 = 300, /* hp300 (68020+68881) BSD binary */ > M_HPUX23 = 0x020C, /* hp200/300 HPUX binary */ 98a103,108 > /* By default, segment size is constant. But on some machines, it can > be a function of the a.out header (e.g. machine type). */ > #ifndef N_SEGSIZE > #define N_SEGSIZE(x) SEGMENT_SIZE > #endif > 101c111 < #define _N_HDROFF(x) (SEGMENT_SIZE - sizeof (struct exec)) --- > #define _N_HDROFF(x) (N_SEGSIZE(x) - sizeof (struct exec)) 139c149 < : (SEGMENT_SIZE + ((N_TXTADDR(x)+(x).a_text-1) & ~(SEGMENT_SIZE-1)))) --- > : (N_SEGSIZE(x) + ((N_TXTADDR(x)+(x).a_text-1) & ~(N_SEGSIZE(x)-1)))) 162c172 < #define N_FN 15 --- > #define N_FN 0x1e 175a186 > diff -r gdb-3.98/include/a.out.sun4.h gdb-4.0/include/a.out.sun4.h 5c5,8 < #define SEGMENT_SIZE PAGE_SIZE --- > > #define SEG_SIZE_SPARC PAGE_SIZE > #define SEG_SIZE_SUN3 0x20000 /* Resolution of r/w protection hw */ > 8a12,17 > > /* Segment size varies on Sun-3 versus Sun-4. */ > > #define N_SEGSIZE(x) (N_MACHTYPE(x) == M_SPARC? SEG_SIZE_SPARC: \ > N_MACHTYPE(x) == M_68020? SEG_SIZE_SUN3: \ > /* Guess? */ PAGE_SIZE) diff -r gdb-3.98/include/a29k-opcode.h gdb-4.0/include/a29k-opcode.h 20c20 < /* $Id: a29k-opcode.h,v 1.2 1991/07/15 23:34:04 steve Exp $ */ --- > /* $Id: a29k-opcode.h,v 1.4 1991/08/06 07:20:27 rich Exp $ */ 65a66,69 > #ifndef CONST > #define CONST > #endif /* CONST */ > 285a290,295 > * Revision 1.4 1991/08/06 07:20:27 rich > * Fixing CONST declarations. > * > * Revision 1.3 1991/08/05 22:31:05 rich > * *** empty log message *** > * diff -r gdb-3.98/include/aout64.h gdb-4.0/include/aout64.h 75c75,81 < #define _N_HDROFF(x) (SEGMENT_SIZE - EXEC_BYTES_SIZE) --- > /* By default, segment size is constant. But on some machines, it can > be a function of the a.out header (e.g. machine type). */ > #ifndef N_SEGSIZE > #define N_SEGSIZE(x) SEGMENT_SIZE > #endif > > #define _N_HDROFF(x) (N_SEGSIZE(x) - EXEC_BYTES_SIZE) 114c120 < : (SEGMENT_SIZE + ((N_TXTADDR(x)+(x).a_text-1) & ~(SEGMENT_SIZE-1)))) --- > : (N_SEGSIZE(x) + ((N_TXTADDR(x)+(x).a_text-1) & ~(N_SEGSIZE(x)-1)))) 175a182,183 > > #define N_INDR 0x0a diff -r gdb-3.98/include/bfd.h gdb-4.0/include/bfd.h 313,314c313,316 < /* Opens the file supplied (using fopen) with the target supplied, it < returns a pointer to the created bfd. --- > /*:opncls.c*/ > /* *i bfd_openr > Opens the file supplied (using @code{fopen}) with the target supplied, it > returns a pointer to the created BFD. 319,320c321,326 < PROTO(bfd*, bfd_openr, (CONST char *filename,CONST char*target)); < /* bfd_fdopenr is to bfd_fopenr much like fdopen is to fopen. It opens a bfd on --- > PROTO(bfd*, bfd_openr, (CONST char *filename,CONST char*target)); > > /* > > *i bfd_fdopenr > bfd_fdopenr is to bfd_fopenr much like fdopen is to fopen. It opens a BFD on 325c331 < PROTO(bfd *, bfd_fdopenr, --- > PROTO(bfd *, bfd_fdopenr, 327c333,337 < /* Creates a bfd, associated with file @var{filename}, using the file --- > > /* > > bfd_openw > Creates a BFD, associated with file @var{filename}, using the file 332,333c342,347 < PROTO(bfd *, bfd_openw, (CONST char *filename, CONST char *target)); < /* This function closes a bfd. If the bfd was open for writing, then --- > PROTO(bfd *, bfd_openw, (CONST char *filename, CONST char *target)); > > /* > > bfd_close > This function closes a BFD. If the BFD was open for writing, then 338c352 < All memory attatched to the bfd's obstacks is released. --- > All memory attached to the BFD's obstacks is released. 342,345c356 < PROTO(boolean, bfd_close,(bfd *)); < /* This routine creates a new bfd in the manner of bfd_openw, but without < opening a file. The new bfd takes the target from the target used by < @var{template}. The format is always set to @code{bfd_object}. --- > PROTO(boolean, bfd_close,(bfd *)); 346a358,363 > /* > > bfd_create > This routine creates a new BFD in the manner of @code{bfd_openw}, but without > opening a file. The new BFD takes the target from the target used by > @var{template}. The format is always set to @code{bfd_object}. 348,350c365,376 < PROTO(bfd *, bfd_create, (CONST char *filename, bfd *template)); < /* Return the number of bytes in the obstacks connected to the supplied < bfd. --- > > PROTO(bfd *, bfd_create, (CONST char *filename, bfd *template)); > > /* > > bfd_alloc_size > Return the number of bytes in the obstacks connected to the supplied > BFD. > */ > PROTO(bfd_size_type,bfd_alloc_size,(bfd *abfd)); > > /* 352,353c378,381 < PROTO(bfd_size_type,bfd_alloc_size,(bfd *abfd)); < /* This enum gives the object file's CPU --- > > /*:archures.c*/ > /* bfd_architecture > This enum gives the object file's CPU 360d387 < 361a389 > 400,401c428,429 < /* stuff < */ --- > /* > stuff 403c431,432 < /* Return a printable string representing the architecture and machine --- > bfd_prinable_arch_mach > Return a printable string representing the architecture and machine 405c434 < bfd_printable_arch_mach. --- > @code{bfd_printable_arch_mach}. 407c436 < PROTO(CONST char *,bfd_printable_arch_mach, --- > PROTO(CONST char *,bfd_printable_arch_mach, 409c438,442 < /* Scan a string and attempt to turn it into an archive and machine type combination. --- > > /* > > *i bfd_scan_arch_mach > Scan a string and attempt to turn it into an archive and machine type combination. 411c444 < PROTO(boolean, bfd_scan_arch_mach, --- > PROTO(boolean, bfd_scan_arch_mach, 413c446,450 < /* This routine is used to determine whether two BFDs' architectures and machine types are --- > > /* > > *i bfd_arch_compatible > This routine is used to determine whether two BFDs' architectures and machine types are 415c452 < two architectures and machine types implied by the bfds and sets the --- > two architectures and machine types implied by the BFDs and sets the 418c455 < This routine returns @code{true} if the bfds are of compatible type, --- > This routine returns @code{true} if the BFDs are of compatible type, 421c458 < PROTO(boolean, bfd_arch_compatible, --- > PROTO(boolean, bfd_arch_compatible, 426c463,467 < /* Set atch mach --- > > /* > > bfd_set_arch_mach > Set atch mach 432c473,476 < /* These macros as used for reading and writing raw data in sections; --- > /*:libbfd.c*/ > /* *i bfd_put_size > *i bfd_get_size > These macros as used for reading and writing raw data in sections; 434c478 < of the bfd and mangled accordingly. The mangling performs any --- > of the BFD and mangled accordingly. The mangling performs any 453,454c497,499 < < /* These macros have the same function as their @code{bfd_get_x} --- > /* *i bfd_h_put_size > *i bfd_h_get_size > These macros have the same function as their @code{bfd_get_x} 476a522 > /*:section.c*/ 478d523 < 479a525 > 482,484c528,532 < /* The name of the section, the name isn't a copy, the pointer is < the same as that passed to bfd_make_section. < */ --- > /* > The name of the section, the name isn't a copy, the pointer is > the same as that passed to bfd_make_section. > */ > 487,488c535,538 < /* The next section in the list belonging to the bfd, or NULL. < */ --- > /* > The next section in the list belonging to the BFD, or NULL. > */ > 491,494c541,546 < /* The field flags contains attributes of the section. Some of these < flags are read in from the object file, and some are synthesized from < other information. < */ --- > /* > The field flags contains attributes of the section. Some of these > flags are read in from the object file, and some are synthesized from > other information. > */ > 495a548,551 > > /* > */ > 498,500c554,558 < /* Tells the OS to allocate space for this section when loaded. < This would clear for a section containing debug information only. < */ --- > /* > Tells the OS to allocate space for this section when loaded. > This would clear for a section containing debug information only. > */ > 503,505c561,565 < /* Tells the OS to load the section from the file when loading. < This would be clear for a .bss section < */ --- > /* > Tells the OS to load the section from the file when loading. > This would be clear for a .bss section > */ > 508,510c568,572 < /* The section contains data still to be relocated, so there will be some < relocation information too. < */ --- > /* > The section contains data still to be relocated, so there will be some > relocation information too. > */ > 513,514c575,578 < /* Obsolete ? < */ --- > /* > Obsolete ? > */ > 517,518c581,584 < /* A signal to the OS that the section contains read only data. < */ --- > /* > A signal to the OS that the section contains read only data. > */ > 521,522c587,590 < /* The section contains code only. < */ --- > /* > The section contains code only. > */ > 525,526c593,596 < /* The section contains data only. < */ --- > /* > The section contains data only. > */ > 529,530c599,602 < /* The section will reside in ROM. < */ --- > /* > The section will reside in ROM. > */ > 533,542c605,616 < /* The section contains constructor information. This section type is < used by the linker to create lists of constructors and destructors < used by @code{g++}. When a back end sees a symbol which should be used < in a constructor list, it creates a new section for the type of name < (eg @code{__CTOR_LIST__}), attatches the symbol to it and builds a < relocation. To build the lists of constructors, all the linker has to < to is catenate all the sections called @code{__CTOR_LIST__} and < relocte the data contained within - exactly the operations it would < peform on standard data. < */ --- > /* > The section contains constructor information. This section type is > used by the linker to create lists of constructors and destructors > used by @code{g++}. When a back end sees a symbol which should be used > in a constructor list, it creates a new section for the type of name > (eg @code{__CTOR_LIST__}), attaches the symbol to it and builds a > relocation. To build the lists of constructors, all the linker has to > to is catenate all the sections called @code{__CTOR_LIST__} and > relocte the data contained within - exactly the operations it would > peform on standard data. > */ > 545,548c619,639 < /* The section has contents - a bss section could be < @code{SEC_ALLOC} | @code{SEC_HAS_CONTENTS}, a debug section could be < @code{SEC_HAS_CONTENTS} < */ --- > /* > The section is a constuctor, and should be placed at the end of the .. > */ > > #define SEC_CONSTRUCTOR_TEXT 0x1100 > > /* > */ > #define SEC_CONSTRUCTOR_DATA 0x2100 > > /* > */ > #define SEC_CONSTRUCTOR_BSS 0x3100 > > /* > > The section has contents - a bss section could be > @code{SEC_ALLOC} | @code{SEC_HAS_CONTENTS}, a debug section could be > @code{SEC_HAS_CONTENTS} > */ > 551,553c642,646 < /* An instruction to the linker not to output sections containing < this flag even if they have information which would normally be written. < */ --- > /* > An instruction to the linker not to output sections containing > this flag even if they have information which would normally be written. > */ > 556,557c649,653 < /* The base address of the section in the address space of the target. < */ --- > /* > > The base address of the section in the address space of the target. > */ > 560,562c656,660 < /* The size of the section in bytes of the loaded section. This contains < a value even if the section has no contents (eg, the size of @code{.bss}). < */ --- > /* > The size of the section in bytes of the loaded section. This contains > a value even if the section has no contents (eg, the size of @code{.bss}). > */ > 565,569c663,669 < /* If this section is going to be output, then this value is the < offset into the output section of the first byte in the input < section. Eg, if this was going to start at the 100th byte in the < output section, this value would be 100. < */ --- > /* > If this section is going to be output, then this value is the > offset into the output section of the first byte in the input > section. Eg, if this was going to start at the 100th byte in the > output section, this value would be 100. > */ > 572,573c672,675 < /* The output section through which to map on output. < */ --- > /* > The output section through which to map on output. > */ > 576,578c678,682 < /* The alignment requirement of the section, as an exponent - eg 3 < aligns to 2^3 (or 8) < */ --- > /* > The alignment requirement of the section, as an exponent - eg 3 > aligns to 2^3 (or 8) > */ > 581,583c685,689 < /* If an input section, a pointer to a vector of relocation records for < the data in this section. < */ --- > /* > If an input section, a pointer to a vector of relocation records for > the data in this section. > */ > 586,588c692,696 < /* If an output section, a pointer to a vector of pointers to < relocation records for the data in this section. < */ --- > /* > If an output section, a pointer to a vector of pointers to > relocation records for the data in this section. > */ > 591,592c699,702 < /* The number of relocation records in one of the above < */ --- > /* > The number of relocation records in one of the above > */ > 595,596c705,708 < /* Which section is it 0..nth < */ --- > /* > Which section is it 0..nth > */ > 599,603c711,717 < /* Information below is back end specific - and not always used or < updated < < File position of section data < */ --- > /* > Information below is back end specific - and not always used or > updated > > File position of section data > */ > 604a719,720 > /* File position of relocation info > */ 606,607d721 < /* File position of relocation info < */ 610,611c724,727 < /* File position of line data < */ --- > /* > File position of line data > */ > 614,615c730,733 < /* Pointer to data for applications < */ --- > /* > Pointer to data for applications > */ > 616a735,737 > > /* > */ 619,620c740,743 < /* Attached line number information < */ --- > /* > Attached line number information > */ > 621a745,746 > /* Number of line number records > */ 623,624d747 < /* Number of line number records < */ 627,629c750,754 < /* When a section is being output, this value changes as more < linenumbers are written out < */ --- > /* > When a section is being output, this value changes as more > linenumbers are written out > */ > 632,633c757,760 < /* what the section number is in the target world < */ --- > /* > what the section number is in the target world > */ > 634a762,764 > > /* > */ 637,639c767,771 < /* If this is a constructor section then here is a list of the < relocations created to relocate items within it. < */ --- > /* > If this is a constructor section then here is a list of the > relocations created to relocate items within it. > */ > 642,643c774,777 < /* The bfd which owns the section. < */ --- > /* > The BFD which owns the section. > */ > 644a779,781 > > /* > */ 647,648c784 < /* Runs through the provided @var{abfd} and returns the @code{asection} < who's name matches that provided, otherwise NULL. @xref{Sections}, for more information. --- > /* 649a786,788 > bfd_get_section_by_name > Runs through the provided @var{abfd} and returns the @code{asection} > who's name matches that provided, otherwise NULL. @xref{Sections}, for more information. 651c790,791 < PROTO(asection *, bfd_get_section_by_name, --- > > PROTO(asection *, bfd_get_section_by_name, 653,654c793,798 < /* This function creates a new empty section called @var{name} and attatches it < to the end of the chain of sections for @var{bfd}. An attempt to --- > > /* > > bfd_make_section > This function creates a new empty section called @var{name} and attaches it > to the end of the chain of sections for the BFD supplied. An attempt to 661c805 < If output has already started for this bfd. --- > If output has already started for this BFD. 665d808 < 667,668c810,816 < PROTO(asection *, bfd_make_section, (bfd *, CONST char *name)); < /* Attempts to set the attributes of the section named in the bfd --- > > PROTO(asection *, bfd_make_section, (bfd *, CONST char *name)); > > /* > > bfd_set_section_flags > Attempts to set the attributes of the section named in the BFD 677d824 < 679c826,827 < PROTO(boolean, bfd_set_section_flags, --- > > PROTO(boolean, bfd_set_section_flags, 681,682c829,834 < /* Calls the provided function @var{func} for each section attatched to < the bfd @var{abfd}, passing @var{obj} as an argument. The function --- > > /* > > bfd_map_over_sections > Calls the provided function @var{func} for each section attached to > the BFD @var{abfd}, passing @var{obj} as an argument. The function 688,689d839 < < 691c841,842 < PROTO(void, bfd_map_over_sections, --- > > PROTO(void, bfd_map_over_sections, 693c844,847 < /* This is the prefered method for iterating over sections, an --- > > /* > > This is the prefered method for iterating over sections, an 700c854 < @end example*/ --- > @end example 702c856,857 < /* Sets @var{section} to the size @var{val}. If the operation is ok, then --- > bfd_set_section_size > Sets @var{section} to the size @var{val}. If the operation is ok, then 708c863 < Writing has started to the bfd, so setting the size is invalid --- > Writing has started to the BFD, so setting the size is invalid 710d864 < 712c866,867 < PROTO(boolean, bfd_set_section_size, --- > > PROTO(boolean, bfd_set_section_size, 714c869,873 < /* Sets the contents of the section @var{section} in bfd @var{abfd} to --- > > /* > > bfd_set_section_contents > Sets the contents of the section @var{section} in BFD @var{abfd} to 727d885 < 729c887,888 < PROTO(boolean, bfd_set_section_contents, --- > > PROTO(boolean, bfd_set_section_contents, 735c894,898 < /* This function reads data from @var{section} in bfd @var{abfd} into --- > > /* > > bfd_get_section_contents > This function reads data from @var{section} in BFD @var{abfd} into 749d911 < 751c913,914 < PROTO(boolean, bfd_get_section_contents, --- > > PROTO(boolean, bfd_get_section_contents, 753a917,922 > > /* > */ > > > /*:syms.c*/ 756d924 < 757a926 > 759a929,932 > /* A pointer to the BFD which owns the symbol. This information is > necessary so that a back end can work out what additional (invisible to > the application writer) information is carried with the symbol. > */ 761,764d933 < /* A pointer to the bfd which owns the symbol. This information is < necessary so that a back end can work out what additional (invisible to < the application writer) information is carried with the symbol. < */ 767,769c936,940 < /* The text of the symbol. The name is left alone, and not copied - the < application may not alter it. < */ --- > /* > The text of the symbol. The name is left alone, and not copied - the > application may not alter it. > */ > 772,773c943,946 < /* The value of the symbol. < */ --- > /* > The value of the symbol. > */ > 776,777c949,952 < /* Attributes of a symbol: < */ --- > /* > Attributes of a symbol: > */ > 780,782c955,959 < /* The symbol has local scope; @code{static} in @code{C}. The value is < the offset into the section of the data. < */ --- > /* > The symbol has local scope; @code{static} in @code{C}. The value is > the offset into the section of the data. > */ > 785,787c962,966 < /* The symbol has global scope; initialized data in @code{C}. The value < is the offset into the section of the data. < */ --- > /* > The symbol has global scope; initialized data in @code{C}. The value > is the offset into the section of the data. > */ > 790,791c969,972 < /* Obsolete < */ --- > /* > Obsolete > */ > 794,796c975,979 < /* The symbol has global scope, and is exported. The value is the offset < into the section of the data. < */ --- > /* > The symbol has global scope, and is exported. The value is the offset > into the section of the data. > */ > 799,800c982,985 < /* The symbol is undefined. @code{extern} in @code{C}. The value has no meaning. < */ --- > /* > The symbol is undefined. @code{extern} in @code{C}. The value has no meaning. > */ > 803,805c988,992 < /* The symbol is common, initialized to zero; default in @code{C}. The < value is the size of the object in bytes. < */ --- > /* > The symbol is common, initialized to zero; default in @code{C}. The > value is the size of the object in bytes. > */ > 808,812c995,1001 < /* A normal @code{C} symbol would be one of: < @code{BSF_LOCAL}, @code{BSF_FORT_COMM}, @code{BSF_UNDEFINED} or @code{BSF_EXPORT|BSD_GLOBAL} < < The symbol is a debugging record. The value has an arbitary meaning. < */ --- > /* > A normal @code{C} symbol would be one of: > @code{BSF_LOCAL}, @code{BSF_FORT_COMM}, @code{BSF_UNDEFINED} or @code{BSF_EXPORT|BSD_GLOBAL} > > The symbol is a debugging record. The value has an arbitary meaning. > */ > 815,817c1004,1008 < /* The symbol has no section attached, any value is the actual value and < is not a relative offset to a section. < */ --- > /* > The symbol has no section attached, any value is the actual value and > is not a relative offset to a section. > */ > 820,821c1011,1014 < /* Used by the linker < */ --- > /* > Used by the linker > */ > 823d1015 < #define BSF_WARNING 0x20000 826,827c1018,1021 < /* Unused < */ --- > /* > Unused > */ > 832,833c1026,1029 < /* The symbol used to be a common symbol, but now it is allocated. < */ --- > /* > The symbol used to be a common symbol, but now it is allocated. > */ > 836,837c1032,1035 < /* The default value for common data. < */ --- > /* > The default value for common data. > */ > 840,844c1038,1044 < /* In some files the type of a symbol sometimes alters its location < in an output file - ie in coff a @code{ISFCN} symbol which is also @code{C_EXT} < symbol appears where it was declared and not at the end of a section. < This bit is set by the target bfd part to convey this information. < */ --- > /* > In some files the type of a symbol sometimes alters its location > in an output file - ie in coff a @code{ISFCN} symbol which is also @code{C_EXT} > symbol appears where it was declared and not at the end of a section. > This bit is set by the target BFD part to convey this information. > */ > 845a1046,1070 > > /* > Signal that the symbol is the label of constructor section. > */ > > #define BSF_CONSTRUCTOR 0x1000000 > > /* > Signal that the symbol is a warning symbol. If the symbol is a warning > symbol, then the value field (I know this is tacky) will point to the > asymbol which when referenced will cause the warning. > */ > > #define BSF_WARNING 0x2000000 > > /* > Signal that the symbol is indirect. The value of the symbol is a > pointer to an undefined asymbol which contains the name to use > instead. > */ > > #define BSF_INDIRECT 0x4000000 > > /* > */ 848,852c1073,1079 < /* Aointer to the section to which this symbol is relative, or 0 if the < symbol is absolute or undefined. Note that it is not sufficient to set < this location to 0 to mark a symbol as absolute - the flag < @code{BSF_ABSOLUTE} must be set also. < */ --- > /* > Aointer to the section to which this symbol is relative, or 0 if the > symbol is absolute or undefined. Note that it is not sufficient to set > this location to 0 to mark a symbol as absolute - the flag > @code{BSF_ABSOLUTE} must be set also. > */ > 855,857c1082,1086 < /* Back end special data. This is being phased out in favour of making < this a union. < */ --- > /* > Back end special data. This is being phased out in favour of making > this a union. > */ > 861,863c1090,1095 < /* Returns the number of bytes required in a vector of pointers to < @code{asymbols} for all the symbols in the supplied bfd, including a < terminal NULL pointer. If there are no symbols in the bfd, then 0 is --- > /* > > get_symtab_upper_bound > Returns the number of bytes required in a vector of pointers to > @code{asymbols} for all the symbols in the supplied BFD, including a > terminal NULL pointer. If there are no symbols in the BFD, then 0 is 869,870c1101,1105 < /* Supplied a bfd and a pointer to an uninitialized vector of pointers. < This reads in the symbols from the bfd, and fills in the table with --- > /* > > bfd_canonicalize_symtab > Supplied a BFD and a pointer to an uninitialized vector of pointers. > This reads in the symbols from the BFD, and fills in the table with 873d1107 < 874a1109 > 879,882c1114,1117 < < /* Provided a table of pointers to to symbols and a count, writes to the < output bfd the symbols when closed. < --- > /* > bfd_set_symtab > Provided a table of pointers to to symbols and a count, writes to the > output BFD the symbols when closed. 884,885c1119,1128 < PROTO(boolean, bfd_set_symtab, (bfd *, asymbol **, unsigned int )); < /* Prints the value and flags of the symbol supplied to the stream file. --- > > PROTO(boolean, bfd_set_symtab, (bfd *, asymbol **, unsigned int )); > > /* > > bfd_print_symbol_vandf > Prints the value and flags of the symbol supplied to the stream file. > */ > > PROTO(void, bfd_print_symbol_vandf, (PTR file, asymbol *symbol)); 887,889c1130,1133 < */ < PROTO(void, bfd_print_symbol_vandf, (PTR file, asymbol *symbol)); < /* This function creates a new @code{asymbol} structure for the bfd, and --- > /* > > bfd_make_empty_symbol > This function creates a new @code{asymbol} structure for the BFD, and 899a1144 > /*:bfd.c*/ 903,904c1148,1149 < libbfd. References though the bfd and to data in the bfd give the < entire bfd functionality. --- > @code{libbfd}. References though the BFD and to data in the BFD give the > entire BFD functionality. 906c1151 < Finally! The BFD struct itself. This contains the major data about --- > Here is the BFD struct itself. This contains the major data about 908d1152 < 909a1154 > 911a1157,1158 > /* The filename the application opened the BFD with. > */ 913,914d1159 < /* The filename the application opened the bfd with. < */ 917,918c1162,1165 < /* A pointer to the target jump table. < */ --- > /* > A pointer to the target jump table. > */ > 921,927c1168,1177 < /* To avoid dragging too many header files into every file that < includes bfd.h, IOSTREAM has been declared as a "char *", and MTIME < as a "long". Their correct types, to which they are cast when used, < are "FILE *" and "time_t". < < The iostream is the result of an fopen on the filename. < */ --- > /* > > To avoid dragging too many header files into every file that > includes @file{bfd.h}, IOSTREAM has been declared as a "char *", and MTIME > as a "long". Their correct types, to which they are cast when used, > are "FILE *" and "time_t". > > The iostream is the result of an fopen on the filename. > */ > 930,931c1180,1183 < /* Is the file being cached @xref{File Caching}. < */ --- > /* > Is the file being cached @xref{File Caching}. > */ > 934,937c1186,1191 < /* Marks whether there was a default target specified when the bfd was < opened. This is used to select what matching algorithm to use to chose < the back end. < */ --- > /* > Marks whether there was a default target specified when the BFD was > opened. This is used to select what matching algorithm to use to chose > the back end. > */ > 940,941c1194,1198 < /* The caching routines use these to maintain an LRU list of bfds. < */ --- > /* > The caching routines use these to maintain a least-recently-used list of > BFDs (@pxref{File Caching}). > */ > 944,946c1201,1205 < /* When a file is closed by the caching routines, it retains the state < here: < */ --- > /* > When a file is closed by the caching routines, BFD retains state > information on the file here: > */ > 949,950c1208,1211 < /* and here: < */ --- > /* > and here: > */ > 951a1213,1215 > > /* > */ 952a1217,1218 > /* File modified time > */ 954,955d1219 < /* File modified time < */ 958,959c1222,1225 < /* For output files, channel we locked (is this used?). < */ --- > /* > For output files, channel we locked (is this used?). > */ > 962,963c1228,1231 < /* The format which belongs to the bfd. < */ --- > /* > The format which belongs to the BFD. > */ > 966,967c1234,1237 < /* The direction the bfd was opened with < */ --- > /* > The direction the BFD was opened with > */ > 973,974c1243,1246 < /* Format_specific flags < */ --- > /* > Format_specific flags > */ > 977,980c1249,1254 < /* Currently my_archive is tested before adding origin to anything. I < believe that this can become always an add of origin, with origin set < to 0 for non archive files. < */ --- > /* > Currently my_archive is tested before adding origin to anything. I > believe that this can become always an add of origin, with origin set > to 0 for non archive files. > */ > 983,984c1257,1260 < /* Remember when output has begun, to stop strange things happening. < */ --- > /* > Remember when output has begun, to stop strange things happening. > */ > 987,988c1263,1266 < /* Pointer to linked list of sections < */ --- > /* > Pointer to linked list of sections > */ > 991,992c1269,1272 < /* The number of sections < */ --- > /* > The number of sections > */ > 995,997c1275,1279 < /* Stuff only usefull for object files: < The start address. < */ --- > /* > Stuff only useful for object files: > The start address. > */ > 998a1281,1282 > /* Used for input and output > */ 1000,1001d1283 < /* Used for input and output < */ 1002a1285,1286 > /* Symbol table for output BFD > */ 1004,1005d1287 < /* Symtab for output bfd < */ 1008,1009c1290,1293 < /* Architecture of object machine, eg m68k < */ --- > /* > Architecture of object machine, eg m68k > */ > 1012,1013c1296,1299 < /* Particular machine within arch, e.g. 68010 < */ --- > /* > Particular machine within arch, e.g. 68010 > */ > 1016,1017c1302,1305 < /* Stuff only usefull for archives: < */ --- > /* > Stuff only useful for archives: > */ > 1024,1025c1312,1315 < /* Used by the back end to hold private data. < */ --- > /* > Used by the back end to hold private data. > */ > 1028,1029c1318,1321 < /* Used by the application to hold private data < */ --- > /* > Used by the application to hold private data > */ > 1032,1033c1324,1327 < /* Where all the allocated stuff under this BFD goes < */ --- > /* > Where all the allocated stuff under this BFD goes (@pxref{Memory Usage}). > */ > 1037,1038c1331,1333 < /* Marks the entry point of an output bfd. Returns @code{true} on < success, @code{false} otherwise. --- > /* > > bfd_set_start_address 1039a1335,1336 > Marks the entry point of an output BFD. Returns @code{true} on > success, @code{false} otherwise. 1041,1042c1338,1345 < PROTO(boolean, bfd_set_start_address,(bfd *, bfd_vma)); < /* Return cached file modification time (e.g. as read from archive header --- > > PROTO(boolean, bfd_set_start_address,(bfd *, bfd_vma)); > > /* > > bfd_get_mtime > > Return cached file modification time (e.g. as read from archive header 1044a1348,1350 > */ > > PROTO(long, bfd_get_mtime, (bfd *)); 1045a1352,1354 > /* > > stuff 1047c1356,1357 < PROTO(long, bfd_get_mtime, (bfd *)); --- > > 1075c1385 < /* What this does --- > /* 1077,1078c1387,1397 < PROTO(symindex, bfd_get_next_mapent, (bfd *, symindex, carsym **)); < /* Used whilst processing archives. Sets the head of the chain of bfds --- > > /*:archive.c*/ > /* bfd_get_next_mapent > What this does > */ > PROTO(symindex, bfd_get_next_mapent, (bfd *, symindex, carsym **)); > > /* > > bfd_set_archive_head > Used whilst processing archives. Sets the head of the chain of BFDs 1081c1400 < PROTO(boolean, bfd_set_archive_head, (bfd *output, bfd *new_head)); --- > PROTO(boolean, bfd_set_archive_head, (bfd *output, bfd *new_head)); 1083c1402 < PROTO(bfd *, bfd_get_elt_at_index, (bfd *, int)); --- > /* 1084a1404,1407 > bfd_get_elt_at_index > */ > > PROTO(bfd *, bfd_get_elt_at_index, (bfd *, int)); 1086c1409,1412 < /* Initially provided a bfd containing an archive and NULL, opens a bfd --- > /* > > bfd_openr_next_archived_file > Initially provided a BFD containing an archive and NULL, opens a BFD 1089c1415 < return value to return a created bfd to the next contained element. --- > return value to return a created BFD to the next contained element. 1091d1416 < 1093c1418,1419 < PROTO(bfd*, bfd_openr_next_archived_file, --- > > PROTO(bfd*, bfd_openr_next_archived_file, 1095,1096d1420 < /* Returns a read-only string explaining what program was running when < it failed and produced the core file being read 1097a1422 > /* 1099,1101c1424 < PROTO(CONST char *, bfd_core_file_failing_command, (bfd *)); < /* Returns the signal number which caused the core dump which generated < the file the bfd is attatched to. --- > 1102a1426,1429 > /*:core.c*/ > /* bfd_core_file_failing_command > Returns a read-only string explaining what program was running when > it failed and produced the core file being read 1104,1106c1431,1447 < PROTO(int, bfd_core_file_failing_signal, (bfd *)); < /* Returns @code{true} if the core file attatched to @var{core_bfd} was < generated by a run of the executable file attatched to @var{exec_bfd}, --- > > PROTO(CONST char *, bfd_core_file_failing_command, (bfd *)); > > /* > > bfd_core_file_failing_signal > Returns the signal number which caused the core dump which generated > the file the BFD is attached to. > */ > > PROTO(int, bfd_core_file_failing_signal, (bfd *)); > > /* > > core_file_matches_executable_p > Returns @code{true} if the core file attached to @var{core_bfd} was > generated by a run of the executable file attached to @var{exec_bfd}, 1109c1450 < PROTO(boolean, core_file_matches_executable_p, --- > PROTO(boolean, core_file_matches_executable_p, 1111c1452,1454 < /* The relocation routine returns as a status an enumerated type: --- > > /* > */ 1112a1456,1458 > /*:reloc.c*/ > /* bfd_perform_relocation > The relocation routine returns as a status an enumerated type: 1113a1460 > 1114a1462,1463 > /* No errors detected > */ 1116,1117d1464 < /* No errors detected < */ 1120,1121c1467,1470 < /* The relocation was performed, but there was an overflow. < */ --- > /* > The relocation was performed, but there was an overflow. > */ > 1124,1125c1473,1476 < /* The address to relocate was not within the section supplied < */ --- > /* > The address to relocate was not within the section supplied > */ > 1128,1129c1479,1482 < /* Used by special functions < */ --- > /* > Used by special functions > */ > 1132,1133c1485,1488 < /* Unused < */ --- > /* > Unused > */ > 1136,1137c1491,1494 < /* Unsupported relocation size requested. < */ --- > /* > Unsupported relocation size requested. > */ > 1140,1141c1497,1500 < /* The symbol to relocate against was undefined. < */ --- > /* > The symbol to relocate against was undefined. > */ > 1144,1146c1503,1507 < /* The relocaction was performed, but may not be ok - presently generated < only when linking i960 coff files with i960 b.out symbols. < */ --- > /* > The relocaction was performed, but may not be ok - presently generated > only when linking i960 coff files with i960 b.out symbols. > */ > 1149a1511,1514 > > /* > */ > 1153,1154c1518,1521 < /* A pointer into the canonical table of pointers < */ --- > /* > A pointer into the canonical table of pointers > */ > 1157,1158c1524,1527 < /* offset in section < */ --- > /* > offset in section > */ > 1161,1162c1530,1533 < /* addend for relocation value < */ --- > /* > addend for relocation value > */ > 1165,1166c1536,1539 < /* if sym is null this is the section < */ --- > /* > if sym is null this is the section > */ > 1169,1170c1542,1545 < /* Pointer to how to perform the required relocation < */ --- > /* > Pointer to how to perform the required relocation > */ > 1174,1175c1549 < /* The @code{reloc_howto_type} is a structure which contains all the < information that bfd needs to know to tie up a back end's data. --- > /* 1176a1551,1553 > reloc_howto_type > The @code{reloc_howto_type} is a structure which contains all the > information that BFD needs to know to tie up a back end's data. 1177a1555 > 1179a1558,1564 > /* The type field has mainly a documetary use - the back end can to what > it wants with it, though the normally the back end's external idea of > what a reloc number would be would be stored in this field. For > example, the a PC relative word relocation in a coff environment would > have the type 023 - because that's what the outside world calls a > R_PCRWORD reloc. > */ 1181,1187d1565 < /* The type field has mainly a documetary use - the back end can to what < it wants with it, though the normally the back end's external idea of < what a reloc number would be would be stored in this field. For < example, the a PC relative word relocation in a coff environment would < have the type 023 - because that's what the outside world calls a < R_PCRWORD reloc. < */ 1190,1192c1568,1572 < /* The value the final relocation is shifted right by. This drops < unwanted data from the relocation. < */ --- > /* > The value the final relocation is shifted right by. This drops > unwanted data from the relocation. > */ > 1195,1197c1575,1579 < /* The size of the item to be relocated - 0, is one byte, 1 is 2 bytes, 3 < is four bytes. < */ --- > /* > The size of the item to be relocated - 0, is one byte, 1 is 2 bytes, 3 > is four bytes. > */ > 1200,1201c1582,1585 < /* Now obsolete < */ --- > /* > Now obsolete > */ > 1204,1207c1588,1593 < /* Notes that the relocation is relative to the location in the data < section of the addend. The relocation function will subtract from the < relocation value the address of the location being relocated. < */ --- > /* > Notes that the relocation is relative to the location in the data > section of the addend. The relocation function will subtract from the > relocation value the address of the location being relocated. > */ > 1210,1211c1596,1599 < /* Now obsolete < */ --- > /* > Now obsolete > */ > 1214,1215c1602,1605 < /* Now obsolete < */ --- > /* > Now obsolete > */ > 1218,1220c1608,1612 < /* Causes the relocation routine to return an error if overflow is < detected when relocating. < */ --- > /* > Causes the relocation routine to return an error if overflow is > detected when relocating. > */ > 1223,1226c1615,1620 < /* If this field is non null, then the supplied function is called rather < than the normal function. This allows really strange relocation < methods to be accomodated (eg, i960 callj instructions). < */ --- > /* > If this field is non null, then the supplied function is called rather > than the normal function. This allows really strange relocation > methods to be accomodated (eg, i960 callj instructions). > */ > 1229,1230c1623,1626 < /* The textual name of the relocation type. < */ --- > /* > The textual name of the relocation type. > */ > 1233,1235c1629,1633 < /* When performing a partial link, some formats must modify the < relocations rather than the data - this flag signals this. < */ --- > /* > When performing a partial link, some formats must modify the > relocations rather than the data - this flag signals this. > */ > 1238,1244c1636,1644 < /* The src_mask is used to select what parts of the read in data are to < be used in the relocation sum. Eg, if this was an 8 bit bit of data < which we read and relocated, this would be 0x000000ff. When we have < relocs which have an addend, such as sun4 extended relocs, the value < in the offset part of a relocating field is garbage so we never use < it. In this case the mask would be 0x00000000. < */ --- > /* > The src_mask is used to select what parts of the read in data are to > be used in the relocation sum. Eg, if this was an 8 bit bit of data > which we read and relocated, this would be 0x000000ff. When we have > relocs which have an addend, such as sun4 extended relocs, the value > in the offset part of a relocating field is garbage so we never use > it. In this case the mask would be 0x00000000. > */ > 1245a1646,1650 > /* The dst_mask is what parts of the instruction are replaced into the > instruction. In most cases src_mask == dst_mask, except in the above > special case, where dst_mask would be 0x000000ff, and src_mask would > be 0x00000000. > */ 1247,1251d1651 < /* The dst_mask is what parts of the instruction are replaced into the < instruction. In most cases src_mask == dst_mask, except in the above < special case, where dst_mask would be 0x000000ff, and src_mask would < be 0x00000000. < */ 1254,1260c1654,1662 < /* When some formats create PC relative instructions, they leave the < value of the pc of the place being relocated in the offset slot of the < instruction, so that a PC relative relocation can be made just by < adding in an ordinary offset (eg sun3 a.out). Some formats leave the < displacement part of an instruction empty (eg m88k bcs), this flag < signals the fact. < */ --- > /* > When some formats create PC relative instructions, they leave the > value of the pc of the place being relocated in the offset slot of the > instruction, so that a PC relative relocation can be made just by > adding in an ordinary offset (eg sun3 a.out). Some formats leave the > displacement part of an instruction empty (eg m88k bcs), this flag > signals the fact. > */ > 1264c1666,1669 < /* The HOWTO define is horrible and will go away. --- > /* > > HOWTO > The HOWTO define is horrible and will go away. 1267a1673,1677 > > /* > > reloc_chain > */ 1274a1685 > /* 1276c1687 < /* If an output_bfd is supplied to this function the generated image --- > If an output_bfd is supplied to this function the generated image 1288c1699 < PROTO(bfd_reloc_status_enum_type, --- > PROTO(bfd_reloc_status_enum_type, 1295c1706,1712 < /* @node bfd_target --- > > /* > */ > > /*:targets.c*/ > /* bfd_target > @node bfd_target 1303d1719 < 1306a1723 > 1312,1314c1729,1732 < /* These macros are used to dispatch to functions through the bfd_target < vector. They are used in a number of macros further down in bfd.h, and < are also used when calling various routines by hand inside the bfd --- > /* > These macros are used to dispatch to functions through the bfd_target > vector. They are used in a number of macros further down in @file{bfd.h}, and > are also used when calling various routines by hand inside the BFD 1317a1736 > 1321c1740,1741 < /* For operations which index on the bfd format --- > /* > For operations which index on the BFD format 1322a1743 > 1326,1327c1747,1749 < /* This is the struct which defines the type of BFD this is. The < "xvec" member of the struct bfd itself points here. Each module --- > /* > This is the struct which defines the type of BFD this is. The > "xvec" member of the struct @code{bfd} itself points here. Each module 1334d1755 < 1335a1757 > 1339,1340c1761,1764 < /* identifies the kind of target, eg SunOS4, Ultrix, etc < */ --- > /* > identifies the kind of target, eg SunOS4, Ultrix, etc > */ > 1343,1345c1767,1771 < /* The "flavour" of a back end is a general indication about the contents < of a file. < */ --- > /* > The "flavour" of a back end is a general indication about the contents > of a file. > */ > 1353,1354c1779,1782 < /* The order of bytes within the data area of a file. < */ --- > /* > The order of bytes within the data area of a file. > */ > 1357,1358c1785,1788 < /* The order of bytes within the header parts of a file. < */ --- > /* > The order of bytes within the header parts of a file. > */ > 1361,1363c1791,1795 < /* This is a mask of all the flags which an executable may have set - < from the set @code{NO_FLAGS}, @code{HAS_RELOC}, ...@code{D_PAGED}. < */ --- > /* > This is a mask of all the flags which an executable may have set - > from the set @code{NO_FLAGS}, @code{HAS_RELOC}, ...@code{D_PAGED}. > */ > 1366,1368c1798,1802 < /* This is a mask of all the flags which a section may have set - from < the set @code{SEC_NO_FLAGS}, @code{SEC_ALLOC}, ...@code{SET_NEVER_LOAD}. < */ --- > /* > This is a mask of all the flags which a section may have set - from > the set @code{SEC_NO_FLAGS}, @code{SEC_ALLOC}, ...@code{SET_NEVER_LOAD}. > */ > 1371,1372c1805,1808 < /* The pad character for filenames within an archive header. < */ --- > /* > The pad character for filenames within an archive header. > */ > 1375,1376c1811,1814 < /* The maximum number of characters in an archive header. < */ --- > /* > The maximum number of characters in an archive header. > */ > 1379,1380c1817,1820 < /* The minimum alignment restriction for any section. < */ --- > /* > The minimum alignment restriction for any section. > */ > 1383,1386c1823,1828 < /* Entries for byte swapping for data. These are different to the other < entry points, since they don't take bfd as first arg. Certain other handlers < could do the same. < */ --- > /* > Entries for byte swapping for data. These are different to the other > entry points, since they don't take BFD as first arg. Certain other handlers > could do the same. > */ > 1394,1395c1836,1839 < /* Byte swapping for the headers < */ --- > /* > Byte swapping for the headers > */ > 1403,1407c1847,1853 < /* Format dependent routines, these turn into vectors of entry points < within the target vector structure; one for each format to check. < < Check the format of a file being read. Return bfd_target * or zero. < */ --- > /* > Format dependent routines, these turn into vectors of entry points > within the target vector structure; one for each format to check. > > Check the format of a file being read. Return bfd_target * or zero. > */ > 1410,1411c1856,1859 < /* Set the format of a file being written. < */ --- > /* > Set the format of a file being written. > */ > 1414,1415c1862,1865 < /* Write cached information into a file being written, at bfd_close. < */ --- > /* > Write cached information into a file being written, at bfd_close. > */ > 1418,1424c1868,1876 < /* The following functions are defined in @code{JUMP_TABLE}. The idea is < that the back end writer of @code{foo} names all the routines < @code{foo_}@var{entry_point}, @code{JUMP_TABLE} will built the entries < in this structure in the right order. < < Core file entry points < */ --- > /* > The following functions are defined in @code{JUMP_TABLE}. The idea is > that the back end writer of @code{foo} names all the routines > @code{foo_}@var{entry_point}, @code{JUMP_TABLE} will built the entries > in this structure in the right order. > > Core file entry points > */ > 1429,1430c1881,1884 < /* Archive entry points < */ --- > /* > Archive entry points > */ > 1440,1441c1894,1897 < /* Standard stuff. < */ --- > /* > Standard stuff. > */ > 1449,1450c1905,1908 < /* Symbols and reloctions < */ --- > /* > Symbols and reloctions > */ > 1479,1480c1937,1940 < /* Special entry points for gdb to swap in coff symbol table parts < */ --- > /* > Special entry points for gdb to swap in coff symbol table parts > */ > 1500c1960,1963 < /* Returns a pointer to the transfer vector for the object target --- > /* > > *i bfd_find_target > Returns a pointer to the transfer vector for the object target 1506,1507c1969,1970 < and "target_defaulted" will be set in the bfd. This causes < bfd_check_format to loop over all the targets to find the one --- > and "target_defaulted" will be set in the BFD. This causes > @code{bfd_check_format} to loop over all the targets to find the one 1510,1516c1973,1990 < PROTO(bfd_target *, bfd_find_target,(CONST char *, bfd *)); < /* This function returns a freshly malloced NULL-terminated vector of the < names of all the valid bfd targets. Do not modify the names < */ < PROTO(CONST char **,bfd_target_list,()); < /* This routine is supplied a bfd and a format. It attempts to verify if < the file attatched to the bfd is indeed compatible with the format --- > PROTO(bfd_target *, bfd_find_target,(CONST char *, bfd *)); > > /* > > *i bfd_target_list > This function returns a freshly malloced NULL-terminated vector of the > names of all the valid BFD targets. Do not modify the names > */ > PROTO(CONST char **,bfd_target_list,()); > > /* > */ > > > /*:format.c*/ > /* *i bfd_check_format > This routine is supplied a BFD and a format. It attempts to verify if > the file attached to the BFD is indeed compatible with the format 1520c1994 < If the bfd has been set to a specific @var{target} before the call, --- > If the BFD has been set to a specific @var{target} before the call, 1541,1544c2015,2022 < PROTO(boolean, bfd_check_format, (bfd *abfd, bfd_format format)); < /* This function sets the file format of the supplied bfd to the format < requested. If the target set in the bfd does not support the format < requested, the format is illegal or the bfd is not open for writing --- > PROTO(boolean, bfd_check_format, (bfd *abfd, bfd_format format)); > > /* > > *i bfd_set_format > This function sets the file format of the supplied BFD to the format > requested. If the target set in the BFD does not support the format > requested, the format is illegal or the BFD is not open for writing 1547,1548c2025,2030 < PROTO(boolean,bfd_set_format,(bfd *, bfd_format)); < /* This function takes one argument, and enumerated type (bfd_format) and --- > PROTO(boolean,bfd_set_format,(bfd *, bfd_format)); > > /* > > *i bfd_format_string > This function takes one argument, and enumerated type (bfd_format) and 1552,1553c2034 < PROTO(CONST char *, bfd_format_string, (bfd_format)); < #endif --- > PROTO(CONST char *, bfd_format_string, (bfd_format)); 1554a2036,2039 > /* > */ > > #endif diff -r gdb-3.98/include/ecoff.h gdb-4.0/include/ecoff.h 68a69,75 > /* > * names of "special" sections > */ > #define _TEXT ".text" > #define _DATA ".data" > #define _BSS ".bss" > diff -r gdb-3.98/include/intel-coff.h gdb-4.0/include/intel-coff.h 102a103,108 > /* > * names of "special" sections > */ > #define _TEXT ".text" > #define _DATA ".data" > #define _BSS ".bss" diff -r gdb-3.98/include/internalcoff.h gdb-4.0/include/internalcoff.h 109,115d108 < * names of "special" sections < */ < #define _TEXT ".text" < #define _DATA ".data" < #define _BSS ".bss" < < /* diff -r gdb-3.98/include/m68k-opcode.h gdb-4.0/include/m68k-opcode.h 1,2c1,2 < /* Opcode table for m68000/m68020 and m68881. < Copyright (C) 1989, Free Software Foundation. --- > /* Opcode table for m680[01234]0/m6888[12]. > Copyright (C) 1989, 1991 Free Software Foundation. 19d18 < 21,26c20,42 < struct m68k_opcode < { < char *name; < unsigned long opcode; < unsigned long match; < char *args; --- > enum m68k_architecture { > ARCH_68000 = 0, > ARCH_68010, > ARCH_68020, > ARCH_68030, > ARCH_68040, > }; > > static char *architecture_pname[] = { > "68000", > "68010", > "68020", > "68030", > "68040", > NULL, > }; > > struct m68k_opcode { > char *name; > unsigned long opcode; > unsigned long match; > char *args; > enum m68k_architecture arch; 207,208c223,224 < {"abcd", one(0140400), one(0170770), "DsDd"}, < {"abcd", one(0140410), one(0170770), "-s-d"}, --- > {"abcd", one(0140400), one(0170770), "DsDd", ARCH_68000 }, > {"abcd", one(0140410), one(0170770), "-s-d", ARCH_68000 }, 211,218c227,234 < {"addal", one(0150700), one(0170700), "*lAd"}, < {"addaw", one(0150300), one(0170700), "*wAd"}, < {"addib", one(0003000), one(0177700), "#b$b"}, < {"addil", one(0003200), one(0177700), "#l$l"}, < {"addiw", one(0003100), one(0177700), "#w$w"}, < {"addqb", one(0050000), one(0170700), "Qd$b"}, < {"addql", one(0050200), one(0170700), "Qd%l"}, < {"addqw", one(0050100), one(0170700), "Qd%w"}, --- > {"addal", one(0150700), one(0170700), "*lAd", ARCH_68000 }, > {"addaw", one(0150300), one(0170700), "*wAd", ARCH_68000 }, > {"addib", one(0003000), one(0177700), "#b$b", ARCH_68000 }, > {"addil", one(0003200), one(0177700), "#l$l", ARCH_68000 }, > {"addiw", one(0003100), one(0177700), "#w$w", ARCH_68000 }, > {"addqb", one(0050000), one(0170700), "Qd$b", ARCH_68000 }, > {"addql", one(0050200), one(0170700), "Qd%l", ARCH_68000 }, > {"addqw", one(0050100), one(0170700), "Qd%w", ARCH_68000 }, 281a298 > {"jfnlt", one(0062000), one(0177777), "BW"}, 292a310 > {"jfngt", one(0067400), one(0177777), "BW"}, 303a322 > {"jfeq", one(0063400), one(0177400), "BB"}, 606a626 > {"sfge", one(0056300), one(0177700), "$s"}, 607a628 > {"sfgt", one(0057300), one(0177700), "$s"}, 609a631 > {"sfle", one(0057700), one(0177700), "$s"}, 611a634 > {"sflt", one(0056700), one(0177700), "$s"}, 613a637 > {"sfneq", one(0053300), one(0177700), "$s"}, 1726a1751,1758 > > /* > * Local Variables: > * fill-column: 131 > * End: > */ > > /* end of m68k-opcode.h */ diff -r gdb-3.98/include/m88k-bcs.h gdb-4.0/include/m88k-bcs.h 102a103,108 > /* > * names of "special" sections > */ > #define _TEXT ".text" > #define _DATA ".data" > #define _BSS ".bss" diff -r gdb-3.98/include/oasys.h gdb-4.0/include/oasys.h 20c20 < typedef struct oasys_external_archive_header { --- > typedef struct oasys_extarchive_header { 31c31 < } oasys_external_archive_header_type; --- > } oasys_extarchive_header_type; 46c46 < typedef struct oasys_external_module_table_a { --- > typedef struct oasys_extmodule_table_a { 55c55 < } oasys_external_module_table_type_a_type; --- > } oasys_extmodule_table_type_a_type; 57c57 < typedef struct oasys_external_module_table_b { --- > typedef struct oasys_extmodule_table_b { 66c66 < } oasys_external_module_table_type_b_type; --- > } oasys_extmodule_table_type_b_type; diff -r gdb-3.98/include/obstack.h gdb-4.0/include/obstack.h 0a1,3 > /* This file is maintained by Cygnus Support and may bear no > resemblance to the FSF version at all. Beware. */ > 134,139d136 < struct _obstack_chunk *(*chunkfun) (); /* User's fcn to allocate a chunk. */ < void (*freefun) (); /* User's function to free a chunk. */ < }; < < /* Declare the external functions we use; they are in obstack.c. */ < 141,144c138 < extern void _obstack_newchunk (struct obstack *, int); < extern void _obstack_free (struct obstack *, void *); < extern void _obstack_begin (struct obstack *, int, int, < void *(*) (), void (*) ()); --- > void *(*chunkfun) (); /* User's fcn to allocate a chunk. */ 146,148c140 < extern void _obstack_newchunk (); < extern void _obstack_free (); < extern void _obstack_begin (); --- > char *(*chunkfun) (); /* User's fcn to allocate a chunk. */ 149a142,143 > void (*freefun) (); /* User's function to free a chunk. */ > }; 213,214c207 < _obstack_begin ((h), 0, 0, \ < (void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free) --- > _obstack_begin ((h), 0, 0, obstack_chunk_alloc, obstack_chunk_free) 217,218c210 < _obstack_begin ((h), (size), 0, \ < (void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free) --- > _obstack_begin ((h), (size), 0, obstack_chunk_alloc, obstack_chunk_free) 239,243d230 < /* Note that the call to _obstack_newchunk is enclosed in (..., 0) < so that we can avoid having void expressions < in the arms of the conditional expression. < Casting the third operand to void was tried before, < but some compilers won't accept it. */ 248c235 < ? (_obstack_newchunk (__o, __len), 0) : 0); \ --- > ? _obstack_newchunk (__o, __len) : 0); \ 257c244 < ? (_obstack_newchunk (__o, __len + 1), 0) : 0), \ --- > ? _obstack_newchunk (__o, __len + 1) : 0), \ 266c253 < ? (_obstack_newchunk (__o, 1), 0) : 0), \ --- > ? _obstack_newchunk (__o, 1) : 0), \ 277,278c264,265 < ? (_obstack_newchunk (__o, sizeof (void *)), 0) : 0), \ < *((void **)__o->next_free)++ = ((void *)datum); \ --- > ? _obstack_newchunk (__o, sizeof (void *)) : 0), \ > *(*(void ***)&__o->next_free)++ = ((void *)datum); \ 284,285c271,272 < ? (_obstack_newchunk (__o, sizeof (int)), 0) : 0), \ < *((int *)__o->next_free)++ = ((int)datum); \ --- > ? _obstack_newchunk (__o, sizeof (int)) : 0), \ > *(*(int **)&__o->next_free)++ = ((int)datum); \ 288,289c275,276 < #define obstack_ptr_grow_fast(h,aptr) (*((void **)(h)->next_free)++ = (void *)aptr) < #define obstack_int_grow_fast(h,aint) (*((int *)(h)->next_free)++ = (int)aint) --- > #define obstack_ptr_grow_fast(h,aptr) (*(*(void ***)&(h)->next_free)++ = (void *)aptr) > #define obstack_int_grow_fast(h,aint) (*(*(int **)&(h)->next_free)++ = (int)aint) 295c282 < ? (_obstack_newchunk (__o, __len), 0) : 0); \ --- > ? _obstack_newchunk (__o, __len) : 0); \ 331c318 < else _obstack_free (__o, __obj); }) --- > else (obstack_free) (__o, __obj); }) 344c331 < ? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \ --- > ? _obstack_newchunk ((h), (h)->temp) : 0), \ 351c338 < ? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0), \ --- > ? _obstack_newchunk ((h), (h)->temp + 1) : 0), \ 358c345 < ? (_obstack_newchunk ((h), 1), 0) : 0), \ --- > ? _obstack_newchunk ((h), 1) : 0), \ 363,364c350,351 < ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \ < *((char **)(((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *)datum)) --- > ? _obstack_newchunk ((h), sizeof (char *)) : 0), \ > *(*(char ***)&(h)->next_free)++ = ((char *)datum)) 368,369c355,356 < ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \ < *((int *)(((h)->next_free+=sizeof(int))-sizeof(int))) = ((int)datum)) --- > ? _obstack_newchunk ((h), sizeof (int)) : 0), \ > *(*(int **)&(h)->next_free)++ = ((int)datum)) 371,372c358,359 < #define obstack_ptr_grow_fast(h,aptr) (*((char **)(h)->next_free)++ = (char *)aptr) < #define obstack_int_grow_fast(h,aint) (*((int *)(h)->next_free)++ = (int)aint) --- > #define obstack_ptr_grow_fast(h,aptr) (*(*(char ***)&(h)->next_free)++ = (char *)aptr) > #define obstack_int_grow_fast(h,aint) (*(*(int **)&(h)->next_free)++ = (int)aint) 377c364 < ? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \ --- > ? _obstack_newchunk ((h), (h)->temp) : 0), \ 406c393 < : ((_obstack_free ((h), (h)->temp + (char *) (h)->chunk), 0), 0))) --- > : ((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0))) 413c400 < : (_obstack_free ((h), (h)->temp + (char *) (h)->chunk), 0))) --- > : (int) _obstack_free ((h), (h)->temp + (char *) (h)->chunk))) 417a405,417 > /* Declare the external functions we use; they are in obstack.c. */ > > #ifdef __STDC__ > extern int _obstack_newchunk (struct obstack *h, int length); > extern int _obstack_free (struct obstack *h, void *obj); > extern void _obstack_begin (struct obstack *h, int size, int alignment, > void *(*chunkfun) (), void (*freefun) ()); > #else > extern int _obstack_newchunk (); > extern int _obstack_free (); > extern void _obstack_begin (); > #endif > 418a419 > diff -r gdb-3.98/include/sparc-opcode.h gdb-4.0/include/sparc-opcode.h 639c639 < { opcode, (mask)|ANNUL, (lose), ",al", (flags), v6 }, \ --- > { opcode, (mask)|ANNUL, (lose), ",a l", (flags), v6 }, \ 697c697 < { opcode, (mask)|ANNUL, (lose), ",al", F_DELAYED, v6 } --- > { opcode, (mask)|ANNUL, (lose), ",a l", F_DELAYED, v6 } diff -r gdb-3.98/include/stab.def gdb-4.0/include/stab.def 16a17 > 17a19,26 > > /* Warning symbol. The text gives a warning message, the next symbol > in the table will be undefined. When the symbol is referenced, the > message is printed. > */ > > __define_stab (N_WARNING, 0x1e,"WARNING") > 160,162c169,173 < | Entries with bits 01 set are external symbols | < | N_UNDEF | N_ABS | N_TEXT | N_DATA | < | N_BSS | N_COMM | | N_FN | --- > | Entries with bit 01 set are external symbols. | > | 00 UNDEF | 02 ABS | 04 TEXT | 06 DATA | > | 08 BSS | 0A INDR* | 0C | 0E | > | 10 | 12 | 14 SETA | 16 SETT | > | 18 SETD | 1A SETB | 1C SETV | 1E FN | 163a175 > | Debug entries with bit 01 set are unused. | 194c206 < --- > * 0A INDR is also COMM (supposedly only used internally to unix ld?) Only in gdb-3.98/include/sys: Mx.h-sun.1 diff -r gdb-3.98/include/sys/h-dec3100.h gdb-4.0/include/sys/h-dec3100.h 15a16,27 > #include > #include > #define HOST_PAGE_SIZE NBPG > /* #define HOST_SEGMENT_SIZE NBPG -- we use HOST_DATA_START_ADDR */ > #define HOST_MACHINE_ARCH bfd_arch_mips > /* #define HOST_MACHINE_MACHINE */ > > #define HOST_TEXT_START_ADDR USRTEXT > #define HOST_DATA_START_ADDR USRDATA > #define HOST_STACK_END_ADDR USRSTACK > > Only in gdb-4.0/include/sys: h-hp300bsd.h diff -r gdb-3.98/include/sys/h-sun4.h gdb-4.0/include/sys/h-sun4.h 31c31 < PROTO(char *, memcpy,(char *,CONST char *,unsigned int)); --- > /* PROTO(char *, memcpy,(char *,CONST char *,unsigned int)); */ diff -r gdb-3.98/include/sysdep.h gdb-4.0/include/sysdep.h 52a53 > #define HP300BSD_SYS 17 131a133,136 > #endif > > #if HOST_SYS == HP300BSD_SYS > #include diff -r gdb-3.98/libiberty/Makefile.in gdb-4.0/libiberty/Makefile.in 7a8,11 > # Host and target-dependent makefile fragments come in here. > #### > # End of host and target-dependent makefile fragments. > 20c24 < CFLAGS = -I$(srcdir)/../include --- > CFLAGS = -I$(srcdir)/../include $(HDEFINES) 93c97 < `if [ "$(srcdir)" != "." ] ; then echo +f; fi` \ --- > `if [ "$(srcdir)" != "." ] ; then echo +subdirs; fi` \ Only in gdb-3.98/libiberty/config: hmake-dgux Only in gdb-4.0/libiberty/config: hmake-sysv Only in gdb-4.0/libiberty: config.sub diff -r gdb-3.98/libiberty/configure gdb-4.0/libiberty/configure 27c27 < # $Id: configure,v 1.22 1991/07/20 01:22:30 rich Exp $ --- > # $Id: configure,v 1.31 1991/08/23 04:50:57 rich Exp $ 57a58 > recursing= 62a64 > commontargets= 70c72 < -ansi | +ansi) --- > -ansi | +a*) 71a74 > clib=clib 76,79d78 < -forcesubdirs | +forcesubdirs | +forcesubdir | +forcesubdi | +forcesubd \ < | +forcesub | +forcesu | +forces | +force | +forc | +for | +fo | +f) < forcesubdirs=${arg} < ;; 85c84 < -gas | +gas | +ga | +g) --- > -gas | +g*) 88c87 < -help | +h | +help) --- > -help | +h*) 91c90 < -nfp | +nfp | +nf | +n) --- > -nfp | +nf*) 94c93 < -norecurse | +norecurse) --- > -norecurse | +no*) 97c96,99 < -rm | +rm) --- > -recursing) > recursing=true > ;; > -rm | +r*) 103c105,108 < -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*) --- > -subdirs | +f* | +su*) > subdirs=${arg} > ;; > -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=*) 105c110 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 111c116 < -template=* | +template=*) --- > -template=* | +template=* | +templat=* | +templa=* | +templ=* | +temp=* | +tem=* | +te=*) 114c119 < +verbose | +verbos | +verbo | +verb | +ver | +ve | +v) --- > -v | -verbose | +v*) 125c130 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 136d140 < echo targets=\"${targets}\" 145c149 < echo) 2>&1 --- > echo) 1>&2 156c160 < echo " +forcesubdirs configure in subdirectories. [in source directories]" ; --- > echo " +subdirs configure in subdirectories. [in source directories]" ; 167c171 < echo "Asking for more than one \"+target\" implies \"+forcesubdirs\". Any other" ; --- > echo "Asking for more than one \"+target\" implies \"+subdirs\". Any other" ; 185a190 > commontargets=true 192c197 < echo "Can't find template ${template}." --- > echo '***' "Can't find template ${template}." 1>&2 213c218 < echo `pwd`/configure.in has no "per-host:" line. --- > echo '***' `pwd`/configure.in has no "per-host:" line. 1>&2 218c223 < echo `pwd`/configure.in has no "per-target:" line. --- > echo '***' `pwd`/configure.in has no "per-target:" line. 1>&2 251c256,259 < echo Rebuilt configure in `pwd` --- > > if [ -n "${verbose}" ] ; then > echo Rebuilt configure in `pwd` > fi 252a261,271 > # Now update config.sub from the template directory. > if echo "$template" | grep -s 'configure$' ; then > cp `echo "$template" | sed s/configure$/config.sub/` ./config.sub.new > # mv config.sub config.sub.old > mv config.sub.new config.sub > > if [ -n "${verbose}" ] ; then > echo Rebuilt config.sub in `pwd` > fi > fi > 277c296 < echo No configure script in `pwd`/$i --- > echo Warning: No configure script in `pwd`/$i 280c299,301 < echo Warning: directory $i is missing. --- > if [ -n "${verbose}" ] ; then > echo Warning: directory $i is missing. > fi 291c312 < echo srctrigger not set in configure.in. `pwd` not configured. --- > echo Warning: srctrigger not set in configure.in. `pwd` not configured. 301a323,327 > result=`/bin/sh ./config.sub ${host}` > host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > host=${host_cpu}-${host_vendor}-${host_os} 306c332,336 < ## end of per-host part. --- > case "${host_os}" in > sysv | dgux) > host_makefile_frag=config/hmake-sysv > ;; > esac 307a338 > ## end of per-host part. 311,314c342,346 < if [ -n "${verbose}" ] ; then < echo " target=\"${target}\"" < fi < --- > result=`/bin/sh ./config.sub ${target}` > target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > target=${target_cpu}-${target_vendor}-${target_os} 326c358 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 330c362 < if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then --- > if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target- | grep -v Target-independent`" ] ; then 340c372 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 343c375 < echo "${Makefile} already exists in source directory. `pwd` not configured." --- > echo '***' "${Makefile} already exists in source directory. `pwd` not configured." 1>&2 350c382,393 < if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi --- > if [ ! -d ${targetsubdir} ] ; then > if [ -z "${commontargets}" ] ; then > mkdir ${targetsubdir} > else > if [ ! -d Target-independent ] ; then > mkdir Target-independent > fi > > ${symbolic_link} Target-independent ${targetsubdir} > fi # if target independent > fi # if no target dir yet > 357c400 < echo "Configured subdirs exist. `pwd` not configured." --- > echo '***' "Configured subdirs exist. `pwd` not configured." 1>&2 373c416 < echo "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 375c418 < echo "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 378c421 < echo \(At least ${srctrigger} is missing.\) 1>&2 --- > echo '***' \(At least ${srctrigger} is missing.\) 1>&2 392,393c435,436 < echo "${progname}: cannot create a link \"${link}\"," 1>&2 < echo "since the file \"${file}\" does not exist." 1>&2 --- > echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 > echo '***' "since the file \"${file}\" does not exist." 1>&2 403c446 < echo "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 --- > echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 406c449,452 < echo "Linked \"${link}\" to \"${srcdir}/${file}\"." --- > > if [ -n "${verbose}" ] ; then > echo "Linked \"${link}\" to \"${srcdir}/${file}\"." > fi 442c488 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 499c545,547 < echo "Created \"${Makefile}\"" in `pwd`${andusing}. --- > if [ -n "${verbose}" -o -z "${recursing}" ] ; then > echo "Created \"${Makefile}\"" in `pwd`${andusing}. > fi 518d565 < done # for each target 520,585c567,586 < # # Now build a Makefile for this host. < # if [ -n "${forcesubdirs}" ] ; then < # cd ${hostsubdir} < # cat > GNUmakefile << E!O!F < ## Makefile generated by configure for host ${host}. < # < #%: < # for i in ${targets} ; do \ < # $(MAKE) -C Target-\$i \$@ < # < #all clean stage1 stage2 stage3 stage4etags tags TAGS < #E!O!F < # fi < done # for each host < < # If there are subdirectories, then recurse. < < if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi < < # configdirs is not null < for configdir in ${configdirs} ; do < echo Configuring ${configdir}... < specifics= < commons= < < if [ -n "${defaulttargets}" ] ; then < for host in ${hosts} ; do < if [ -d ${configdir}.${host} ] ; then < newspecifics="${specifics} ${host}" < specifics=${newspecifics} < else < newcommons="${commons} ${host}" < commons=${newcommons} < fi # if target specific < done # for each host < < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${commons} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any common hosts < < if [ -n "${specifics}" ] ; then < for host in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${host}... < (cd ${configdir}.${host} ; < ./configure ${host} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < done # for host in specifics < fi # if there are any specifics < else < < for target in ${targets} ; do < if [ -d ${configdir}.${target} ] ; then < newspecifics="${specifics} ${target}" < specifics=${newspecifics} < else < newcommons="${commons} +target=${target}" < commons=${newcommons} < fi < < done # check for target specific dir override --- > # If there are subdirectories, then recurse. > if [ -z "${norecurse}" -a -n "${configdirs}" ] ; then > for configdir in ${configdirs} ; do > if [ -n "${verbose}" ] ; then > echo Configuring ${configdir}... > fi > > if [ -d ${configdir} ] ; then > (cd ${configdir} ; > ./configure -recursing ${host} +target=${target} \ > ${verbose} ${subdirs} ${removing} +destdir=${destdir}) \ > | sed 's/^/ /' > else > if [ -n "${verbose}" ] ; then > echo Warning: directory \"${configdir}\" is missing. > fi > fi > done > fi > done # for each target 587,590c588,597 < if [ -n "${verbose}" ] ; then < echo " "commons=\"${commons}\" < echo " "specifics=\"${specifics}\" < fi # if verbose --- > # Now build a Makefile for this host. > if [ -n "${subdirs}" -a ! -n "${removing}" ] ; then > cd ${hostsubdir} > cat > GNUmakefile << E!O!F > # Makefile generated by configure for host ${host}. > > ALL := $(shell ls -d Target-*) > > %: > $(foreach subdir,$(ALL),$(MAKE) -C $(subdir) \$@ &&) true 592,613c599,603 < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < ${commons} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any commons < < if [ -n "${specifics}" ] ; then < for target in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${target}... < (cd ${configdir}.${target} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < "+target=${target}" +destdir=${destdir}) \ < | sed 's/^/ /' < done < fi # if any specifics < fi # not default targets < done --- > all: > E!O!F > cd .. > fi > done # for each host 618a609,639 > # Revision 1.31 1991/08/23 04:50:57 rich > # Minor config polish. > # > # Revision 1.22 1991/08/23 03:31:43 rich > # Minor polish & config mapping. > # > # Revision 1.30 1991/08/22 07:15:51 rich > # Three part names, etc. > # > # Revision 1.29 1991/08/20 04:56:51 rich > # revisiting error messages > # > # Revision 1.28 1991/08/16 19:22:17 rich > # This is the commontargets change and should be considered > # experimental. > # > # Revision 1.27 1991/08/08 01:14:13 rich > # allow +f to stand in for +subdirs > # > # Revision 1.26 1991/08/07 19:21:32 rich > # +forcesubdirs -> +subdirs > # > # Revision 1.25 1991/08/07 07:05:30 rich > # Added make. > # > # Revision 1.24 1991/08/06 19:26:01 rich > # revised option parsing. > # > # Revision 1.23 1991/08/06 19:12:32 rich > # Host-level GNUmakefiles. > # diff -r gdb-3.98/libiberty/configure.in gdb-4.0/libiberty/configure.in 8a9 > commontargets=true 10a12,17 > > case "${host_os}" in > sysv | dgux) > host_makefile_frag=config/hmake-sysv > ;; > esac diff -r gdb-3.98/libiberty/obstack.c gdb-4.0/libiberty/obstack.c 0a1,3 > /* This file is maintained by Cygnus Support and may bear no > resemblance to the FSF version at all. Beware. */ > 4,7c7,10 < 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 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 1, or (at your option) any > later version. 16c19 < Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ --- > Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ 26,27d28 < extern int abort(); < 84c85 < h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun; --- > h->chunkfun = chunkfun; 89c90 < chunk = h->chunk = (*h->chunkfun) (h->chunk_size); --- > chunk = h->chunk = (struct _obstack_chunk *)(*h->chunkfun) (h->chunk_size); 100c101 < to the beginning of the new one. */ --- > to the beginning of the new one. 102c103,106 < void --- > The function must be "int" so it can be used in non-ANSI C > compilers in a : expression. */ > > int 120c124 < new_chunk = h->chunk = (*h->chunkfun) (new_size); --- > new_chunk = h->chunk = (struct _obstack_chunk *)(*h->chunkfun) (new_size); 144,151d147 < /* If the object just copied was the only data in OLD_CHUNK, < free that chunk and remove it from the chain. */ < if (h->object_base == old_chunk->contents) < { < new_chunk->prev = old_chunk->prev; < (*h->freefun) (old_chunk); < } < 153a150 > return(0); 177c174 < /* Free objects in obstack H, including OBJ and everything allocate --- > /* Free objects in obstack H, including OBJ and everything allocated 180d176 < #ifdef __STDC__ 182,184d177 < void < obstack_free (struct obstack *h, POINTER obj) { _obstack_free(h, obj); } < #endif 185a179 > #ifdef __STDC__ 187c181,184 < _obstack_free (h, obj) --- > obstack_free (struct obstack *h, POINTER obj) > #else > int > obstack_free (h, obj) 189a187 > #endif 201c199 < (*h->freefun) (lp); --- > (*h->freefun) ((POINTER) lp); 216a215,221 > int > _obstack_free (h, obj) > struct obstack *h; > POINTER obj; > { > obstack_free (h, obj); > } 218c223 < #if 0 --- > /* #if 0 */ 331c336 < #endif /* 0 */ --- > /* #endif 0 */ diff -r gdb-3.98/readline/Makefile.in gdb-4.0/readline/Makefile.in 154c154 < `if [ "$(srcdir)" != "." ] ; then echo +f; fi` \ --- > `if [ "$(srcdir)" != "." ] ; then echo +subdirs; fi` \ Only in gdb-4.0/readline: config.sub diff -r gdb-3.98/readline/configure gdb-4.0/readline/configure 27c27 < # $Id: configure,v 1.22 1991/07/20 01:22:30 rich Exp $ --- > # $Id: configure,v 1.31 1991/08/23 04:50:57 rich Exp $ 57a58 > recursing= 62a64 > commontargets= 70c72 < -ansi | +ansi) --- > -ansi | +a*) 71a74 > clib=clib 76,79d78 < -forcesubdirs | +forcesubdirs | +forcesubdir | +forcesubdi | +forcesubd \ < | +forcesub | +forcesu | +forces | +force | +forc | +for | +fo | +f) < forcesubdirs=${arg} < ;; 85c84 < -gas | +gas | +ga | +g) --- > -gas | +g*) 88c87 < -help | +h | +help) --- > -help | +h*) 91c90 < -nfp | +nfp | +nf | +n) --- > -nfp | +nf*) 94c93 < -norecurse | +norecurse) --- > -norecurse | +no*) 97c96,99 < -rm | +rm) --- > -recursing) > recursing=true > ;; > -rm | +r*) 103c105,108 < -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*) --- > -subdirs | +f* | +su*) > subdirs=${arg} > ;; > -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=*) 105c110 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 111c116 < -template=* | +template=*) --- > -template=* | +template=* | +templat=* | +templa=* | +templ=* | +temp=* | +tem=* | +te=*) 114c119 < +verbose | +verbos | +verbo | +verb | +ver | +ve | +v) --- > -v | -verbose | +v*) 125c130 < forcesubdirs="+forcesubdirs" --- > subdirs="+subdirs" 136d140 < echo targets=\"${targets}\" 145c149 < echo) 2>&1 --- > echo) 1>&2 156c160 < echo " +forcesubdirs configure in subdirectories. [in source directories]" ; --- > echo " +subdirs configure in subdirectories. [in source directories]" ; 167c171 < echo "Asking for more than one \"+target\" implies \"+forcesubdirs\". Any other" ; --- > echo "Asking for more than one \"+target\" implies \"+subdirs\". Any other" ; 192c196 < echo "Can't find template ${template}." --- > echo '***' "Can't find template ${template}." 1>&2 213c217 < echo `pwd`/configure.in has no "per-host:" line. --- > echo '***' `pwd`/configure.in has no "per-host:" line. 1>&2 218c222 < echo `pwd`/configure.in has no "per-target:" line. --- > echo '***' `pwd`/configure.in has no "per-target:" line. 1>&2 251c255,258 < echo Rebuilt configure in `pwd` --- > > if [ -n "${verbose}" ] ; then > echo Rebuilt configure in `pwd` > fi 252a260,270 > # Now update config.sub from the template directory. > if echo "$template" | grep -s 'configure$' ; then > cp `echo "$template" | sed s/configure$/config.sub/` ./config.sub.new > # mv config.sub config.sub.old > mv config.sub.new config.sub > > if [ -n "${verbose}" ] ; then > echo Rebuilt config.sub in `pwd` > fi > fi > 277c295 < echo No configure script in `pwd`/$i --- > echo Warning: No configure script in `pwd`/$i 280c298,300 < echo Warning: directory $i is missing. --- > if [ -n "${verbose}" ] ; then > echo Warning: directory $i is missing. > fi 291c311 < echo srctrigger not set in configure.in. `pwd` not configured. --- > echo Warning: srctrigger not set in configure.in. `pwd` not configured. 301a322,326 > result=`/bin/sh ./config.sub ${host}` > host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > host=${host_cpu}-${host_vendor}-${host_os} 308d332 < 311,314c335,339 < if [ -n "${verbose}" ] ; then < echo " target=\"${target}\"" < fi < --- > result=`/bin/sh ./config.sub ${target}` > target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` > target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` > target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` > target=${target_cpu}-${target_vendor}-${target_os} 326c351 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 330c355 < if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then --- > if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target- | grep -v Target-independent`" ] ; then 340c365 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 343c368 < echo "${Makefile} already exists in source directory. `pwd` not configured." --- > echo '***' "${Makefile} already exists in source directory. `pwd` not configured." 1>&2 350c375,386 < if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi --- > if [ ! -d ${targetsubdir} ] ; then > if [ -z "${commontargets}" ] ; then > mkdir ${targetsubdir} > else > if [ ! -d Target-independent ] ; then > mkdir Target-independent > fi > > ${symbolic_link} Target-independent ${targetsubdir} > fi # if target independent > fi # if no target dir yet > 357c393 < echo "Configured subdirs exist. `pwd` not configured." --- > echo '***' "Configured subdirs exist. `pwd` not configured." 1>&2 373c409 < echo "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 375c411 < echo "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 --- > echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 378c414 < echo \(At least ${srctrigger} is missing.\) 1>&2 --- > echo '***' \(At least ${srctrigger} is missing.\) 1>&2 392,393c428,429 < echo "${progname}: cannot create a link \"${link}\"," 1>&2 < echo "since the file \"${file}\" does not exist." 1>&2 --- > echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 > echo '***' "since the file \"${file}\" does not exist." 1>&2 403c439 < echo "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 --- > echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 406c442,445 < echo "Linked \"${link}\" to \"${srcdir}/${file}\"." --- > > if [ -n "${verbose}" ] ; then > echo "Linked \"${link}\" to \"${srcdir}/${file}\"." > fi 442c481 < if [ -n "${forcesubdirs}" ] ; then --- > if [ -n "${subdirs}" ] ; then 499c538,540 < echo "Created \"${Makefile}\"" in `pwd`${andusing}. --- > if [ -n "${verbose}" -o -z "${recursing}" ] ; then > echo "Created \"${Makefile}\"" in `pwd`${andusing}. > fi 518,574d558 < done # for each target < < # # Now build a Makefile for this host. < # if [ -n "${forcesubdirs}" ] ; then < # cd ${hostsubdir} < # cat > GNUmakefile << E!O!F < ## Makefile generated by configure for host ${host}. < # < #%: < # for i in ${targets} ; do \ < # $(MAKE) -C Target-\$i \$@ < # < #all clean stage1 stage2 stage3 stage4etags tags TAGS < #E!O!F < # fi < done # for each host < < # If there are subdirectories, then recurse. < < if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi < < # configdirs is not null < for configdir in ${configdirs} ; do < echo Configuring ${configdir}... < specifics= < commons= < < if [ -n "${defaulttargets}" ] ; then < for host in ${hosts} ; do < if [ -d ${configdir}.${host} ] ; then < newspecifics="${specifics} ${host}" < specifics=${newspecifics} < else < newcommons="${commons} ${host}" < commons=${newcommons} < fi # if target specific < done # for each host < < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${commons} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any common hosts < < if [ -n "${specifics}" ] ; then < for host in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${host}... < (cd ${configdir}.${host} ; < ./configure ${host} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ < | sed 's/^/ /' < done # for host in specifics < fi # if there are any specifics < else 576,585c560,579 < for target in ${targets} ; do < if [ -d ${configdir}.${target} ] ; then < newspecifics="${specifics} ${target}" < specifics=${newspecifics} < else < newcommons="${commons} +target=${target}" < commons=${newcommons} < fi < < done # check for target specific dir override --- > # If there are subdirectories, then recurse. > if [ -z "${norecurse}" -a -n "${configdirs}" ] ; then > for configdir in ${configdirs} ; do > if [ -n "${verbose}" ] ; then > echo Configuring ${configdir}... > fi > > if [ -d ${configdir} ] ; then > (cd ${configdir} ; > ./configure -recursing ${host} +target=${target} \ > ${verbose} ${subdirs} ${removing} +destdir=${destdir}) \ > | sed 's/^/ /' > else > if [ -n "${verbose}" ] ; then > echo Warning: directory \"${configdir}\" is missing. > fi > fi > done > fi > done # for each target 587,590c581,590 < if [ -n "${verbose}" ] ; then < echo " "commons=\"${commons}\" < echo " "specifics=\"${specifics}\" < fi # if verbose --- > # Now build a Makefile for this host. > if [ -n "${subdirs}" -a ! -n "${removing}" ] ; then > cd ${hostsubdir} > cat > GNUmakefile << E!O!F > # Makefile generated by configure for host ${host}. > > ALL := $(shell ls -d Target-*) > > %: > $(foreach subdir,$(ALL),$(MAKE) -C $(subdir) \$@ &&) true 592,613c592,596 < if [ -n "${commons}" ] ; then < if [ -d ${configdir} ] ; then < (cd ${configdir} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < ${commons} +destdir=${destdir}) \ < | sed 's/^/ /' < else < echo Warning: directory \"${configdir}\" is missing. < fi < fi # if any commons < < if [ -n "${specifics}" ] ; then < for target in ${specifics} ; do < echo Configuring target specific directory ${configdir}.${target}... < (cd ${configdir}.${target} ; < ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ < "+target=${target}" +destdir=${destdir}) \ < | sed 's/^/ /' < done < fi # if any specifics < fi # not default targets < done --- > all: > E!O!F > cd .. > fi > done # for each host 618a602,632 > # Revision 1.31 1991/08/23 04:50:57 rich > # Minor config polish. > # > # Revision 1.22 1991/08/23 03:31:43 rich > # Minor polish & config mapping. > # > # Revision 1.30 1991/08/22 07:15:51 rich > # Three part names, etc. > # > # Revision 1.29 1991/08/20 04:56:51 rich > # revisiting error messages > # > # Revision 1.28 1991/08/16 19:22:17 rich > # This is the commontargets change and should be considered > # experimental. > # > # Revision 1.27 1991/08/08 01:14:13 rich > # allow +f to stand in for +subdirs > # > # Revision 1.26 1991/08/07 19:21:32 rich > # +forcesubdirs -> +subdirs > # > # Revision 1.25 1991/08/07 07:05:30 rich > # Added make. > # > # Revision 1.24 1991/08/06 19:26:01 rich > # revised option parsing. > # > # Revision 1.23 1991/08/06 19:12:32 rich > # Host-level GNUmakefiles. > # diff -r gdb-3.98/texinfo/fsf/texinfo.tex gdb-4.0/texinfo/fsf/texinfo.tex 25c25 < \def\texinfoversion{2.51} --- > \def\texinfoversion{2.53} 2034a2035,2092 > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > % \cartouche: draw rectangle w/rounded corners around argument > \font\circle=lcircle10 > \newdimen\circthick > \newdimen\cartouter\newdimen\cartinner > \newskip\normbskip\newskip\normpskip\newskip\normlskip > \circthick=\fontdimen8\circle > % > \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth > \def\ctr{{\hskip 6pt\circle\char'010}} > \def\cbl{{\circle\char'012\hskip -6pt}} > \def\cbr{{\hskip 6pt\circle\char'011}} > \def\carttop{\hbox to \cartouter{\hskip\lskip > \ctl\leaders\hrule height\circthick\hfil\ctr > \hskip\rskip}} > \def\cartbot{\hbox to \cartouter{\hskip\lskip > \cbl\leaders\hrule height\circthick\hfil\cbr > \hskip\rskip}} > % > \newskip\lskip\newskip\rskip > > \long\def\cartouche{% > \begingroup > \lskip=\leftskip \rskip=\rightskip > \leftskip=0pt\rightskip=0pt %we want these *outside*. > \cartinner=\hsize \advance\cartinner by-\lskip > \advance\cartinner by-\rskip > \cartouter=\hsize > \advance\cartouter by 18pt % allow for 3pt kerns on either > % side, and for 6pt waste from > % each corner char > \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip > \vbox\bgroup > \baselineskip=0pt\parskip=0pt\lineskip=0pt > \carttop > \hbox\bgroup > \hskip\lskip > \vrule\kern3pt > \vbox\bgroup > \hsize=\cartinner > \kern3pt > \begingroup > \baselineskip=\normbskip > \lineskip=\normlskip > \parskip=\normpskip > \vskip -\parskip > \def\Ecartouche{% > \endgroup > \kern3pt > \egroup > \kern3pt\vrule > \hskip\rskip > \egroup > \cartbot > \egroup > \endgroup > }} > 2776c2834 < \removelastskip --- > \unskip