diff options
author | Per Bothner <per@bothner.com> | 1991-12-27 21:11:37 +0000 |
---|---|---|
committer | Per Bothner <per@bothner.com> | 1991-12-27 21:11:37 +0000 |
commit | aab77d5f23a8d3f54c1976bb54d944065c45eb34 (patch) | |
tree | c30ae4ca1825c2a6db908e9424aafa923209c05b | |
parent | f3b7efd5b67fd3c5bc150650b16191fa6c86bfb0 (diff) | |
download | gdb-aab77d5f23a8d3f54c1976bb54d944065c45eb34.zip gdb-aab77d5f23a8d3f54c1976bb54d944065c45eb34.tar.gz gdb-aab77d5f23a8d3f54c1976bb54d944065c45eb34.tar.bz2 |
More changes, mostly cleanups from the last set.
Made some more progress in removing duplicate assembly opcode files.
More improvements to how mipsread and to a lesser extent dbxread work.
See the ChangeLog for details.
-rw-r--r-- | gdb/.Sanitize | 7 | ||||
-rw-r--r-- | gdb/ChangeLog | 41 | ||||
-rw-r--r-- | gdb/arm-pinsn.c | 2 | ||||
-rw-r--r-- | gdb/buildsym.c | 4 | ||||
-rw-r--r-- | gdb/buildsym.h | 8 | ||||
-rw-r--r-- | gdb/dbxread.c | 23 | ||||
-rwxr-xr-x | gdb/depend | 15 | ||||
-rw-r--r-- | gdb/gould-pinsn.c | 4 | ||||
-rw-r--r-- | gdb/m88k-pinsn.c | 2 | ||||
-rw-r--r-- | gdb/partial-stab.h | 45 | ||||
-rw-r--r-- | gdb/pyr-pinsn.c | 2 | ||||
-rw-r--r-- | gdb/sparc-pinsn.c | 118 | ||||
-rw-r--r-- | gdb/tahoe-pinsn.c | 2 | ||||
-rw-r--r-- | gdb/vax-pinsn.c | 2 |
14 files changed, 103 insertions, 172 deletions
diff --git a/gdb/.Sanitize b/gdb/.Sanitize index 96814e3..44fb343 100644 --- a/gdb/.Sanitize +++ b/gdb/.Sanitize @@ -44,7 +44,6 @@ am29k-pinsn.c am29k-tdep.c ansidecl.h arm-convert.s -arm-opcode.h arm-pinsn.c arm-tdep.c arm-xdep.c @@ -112,7 +111,6 @@ m2-exp.y m68k-pinsn.c m68k-stub.c m68k-tdep.c -m88k-opcode.h m88k-pinsn.c m88k-tdep.c m88k-xdep.c @@ -131,17 +129,14 @@ munch news-xdep.c nindy-share nindy-tdep.c -np1-opcode.h ns32k-opcode.h ns32k-pinsn.c parse.c parser-defs.h partial-stab.h -pn-opcode.h printcmd.c procfs.c putenv.c -pyr-opcode.h pyr-pinsn.c pyr-tdep.c pyr-xdep.c @@ -179,7 +174,6 @@ symm-xdep.c symmisc.c symtab.c symtab.h -tahoe-opcode.h tahoe-pinsn.c target.c target.h @@ -235,7 +229,6 @@ valops.c valprint.c value.h values.c -vax-opcode.h vax-pinsn.c vx-share xcoffexec.c diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 01bd5e4..441e642 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,44 @@ +Fri Dec 27 10:11:33 1991 Per Bothner (bothner at cygnus.com) + + * arm-opcode.h, m88k-opcode.h, pn-opcode.h, np1-opcode.h, + pyr-opcode.h, tahoe-opcode, vax-opcode.h: Removed - + these are all essentially the same as the versions + in ../include/opcode. The remaining *-opcode.h here + are not quite so obviously the same, and need study. + * arm-pinsn.c, gould-pinsn.c, m88k-pinsn.c, pyr-pinsn.c, + tahoe-pinsn.c, vax-pinsn.c: Change so these include + opcode/FOO.h (actually ../include/opcode/FOO.h) + instead of the recenntly departed opcode-FOO.h files. + * sparc-pinsn.c: Now that we're using the much tighter + opcode table in ../include/opcode/sparc.h, we shouldn't + need to sort the opcodes before dis-assembly. + + * symtab.h, symmisc.c: Make cplus_struct_default be const. + * symtab.h, buildsym.c: Add and use INIT_CPLUS_SPECIFIC macro. + * symmisc.c: Remove unused 'nfields' variable. + * buildsym.h: Add extern decl of unknown_symtype_complaint, + since it used used by partial-stab.h (included two places). + * partial-stab.h: Re-arrange DBXREAD_ONLY #ifdefs so that + we should never hit the default case (until new stab codes + are added). Hence, we can leave the complaint in the + default case in even when DBXREAD_ONLY is off. + * partial_stab.h: Recognize a pair of N_SO stabs (one for the + directory, one for the filename proper) without peeking ahead. + * dbxread.c, mipsread.c: Because of previous change, don't need + ugly CHECK_SECOND_N_SO macro. + * buildsym.h, dbxread.c, mipsread.c: Make next_symbol_text a + macro that invokes a function pointer in next_symbol_text_func. + * mipsread.c: Added comments various places to + explain what is going on. + * mipsread.c (parse_symbol): Support the new (SGI-specific?) + symbol types stStruct, stUnion, and stEnum. + Also, some fixes in the code for dealing with tags. + * mipsread.c: Change handling of startup_file_start and _end + - now just use the textlow and texhigh of a psymtab + to check if we've found the startup-file. + * mipsread.c: Replace s_idx by global cur_sdx in many places. + This is so mips_next_symbol_text can get at it. + Thu Dec 26 19:52:01 1991 Fred Fish (fnf at cygnus.com) * dbxread.c, symmisc.c: Move add_psymbol_to_plist() from diff --git a/gdb/arm-pinsn.c b/gdb/arm-pinsn.c index f4cd84a..53a3019 100644 --- a/gdb/arm-pinsn.c +++ b/gdb/arm-pinsn.c @@ -23,7 +23,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "defs.h" #include "symtab.h" -#include "arm-opcode.h" +#include "opcode/arm.h" extern char *reg_names[]; diff --git a/gdb/buildsym.c b/gdb/buildsym.c index bbcaecd..0a5aa5d 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -1704,7 +1704,7 @@ read_type (pp) type = dbx_alloc_type (typenums); TYPE_CODE (type) = code; TYPE_NAME (type) = type_name; - TYPE_CPLUS_SPECIFIC(type) = &cplus_struct_default; + INIT_CPLUS_SPECIFIC(type); TYPE_FLAGS (type) |= TYPE_FLAG_STUB; add_undefined_type (type); @@ -1921,7 +1921,7 @@ read_struct_type (pp, type) int nfn_fields = 0; TYPE_CODE (type) = TYPE_CODE_STRUCT; - TYPE_CPLUS_SPECIFIC(type) = &cplus_struct_default; + INIT_CPLUS_SPECIFIC(type); /* First comes the total size in bytes. */ diff --git a/gdb/buildsym.h b/gdb/buildsym.h index 80fad8e..e9d33a8 100644 --- a/gdb/buildsym.h +++ b/gdb/buildsym.h @@ -302,3 +302,11 @@ struct subfile_stack }; EXTERN struct subfile_stack *subfile_stack; + +extern struct complaint unknown_symtype_complaint; + +#define next_symbol_text() (*next_symbol_text_func)() + +/* Function to invoke get the next symbol. Return the symbol name. */ + +EXTERN char * (*next_symbol_text_func)(); diff --git a/gdb/dbxread.c b/gdb/dbxread.c index c80ff16..0124667 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -560,11 +560,8 @@ fill_symbuf (sym_bfd) (a \ at the end of the text of a name) call this function to get the continuation. */ -#ifdef READ_MIPS_FORMAT -extern char *next_symbol_text (); -#else char * -next_symbol_text () +dbx_next_symbol_text () { if (symbuf_idx == symbuf_end) fill_symbuf (symfile_bfd); @@ -572,7 +569,6 @@ next_symbol_text () SWAP_SYMBOL(&symbuf[symbuf_idx], symfile_bfd); return symbuf[symbuf_idx++].n_strx + stringtab_global; } -#endif /* Initializes storage for all of the partial symbols that will be created by read_dbx_symtab and subsidiaries. */ @@ -734,6 +730,7 @@ read_dbx_symtab (addr, objfile, stringtab, stringtab_size, nlistlen, symfile_bfd = objfile->obfd; /* For next_text_symbol */ abfd = objfile->obfd; symbuf_end = symbuf_idx = 0; + next_symbol_text_func = dbx_next_symbol_text; for (symnum = 0; symnum < nlistlen; symnum++) { @@ -775,23 +772,11 @@ read_dbx_symtab (addr, objfile, stringtab, stringtab_size, nlistlen, #define CUR_SYMBOL_TYPE bufp->n_type #define CUR_SYMBOL_VALUE bufp->n_value #define DBXREAD_ONLY -#define CHECK_SECOND_N_SO() \ - if (symbuf_idx == symbuf_end) \ - fill_symbuf (abfd);\ - bufp = &symbuf[symbuf_idx];\ - /* n_type is only a char, so swapping swapping is irrelevant. */\ - if (CUR_SYMBOL_TYPE == (unsigned char)N_SO)\ - {\ - SWAP_SYMBOL (bufp, abfd);\ - SET_NAMESTRING ();\ - valu = CUR_SYMBOL_VALUE;\ - symbuf_idx++;\ - symnum++;\ - } #define START_PSYMTAB(ofile,addr,fname,low,symoff,global_syms,static_syms)\ start_psymtab(ofile, addr, fname, low, symoff, global_syms, static_syms) #define END_PSYMTAB(pst,ilist,ninc,c_off,c_text,dep_list,n_deps)\ end_psymtab(pst,ilist,ninc,c_off,c_text,dep_list,n_deps) + #include "partial-stab.h" } @@ -1149,6 +1134,8 @@ dbx_psymtab_to_symtab (pst) /* FIXME POKING INSIDE BFD DATA STRUCTURES */ symbol_size = obj_symbol_entry_size (sym_bfd); + next_symbol_text_func = dbx_next_symbol_text; + /* FIXME, this uses internal BFD variables. See above in dbx_symbol_file_open where the macro is defined! */ psymtab_to_symtab_1 (pst, stringtab, stsize, @@ -7,7 +7,7 @@ am29k-tdep.o : am29k-tdep.c defs.h xm.h config.status tm.h config.status gdbcore ${srcdir}/../include/ansidecl.h ${srcdir}/../include/obstack.h frame.h value.h symtab.h \ inferior.h breakpoint.h arm-pinsn.o : arm-pinsn.c defs.h xm.h config.status tm.h config.status symtab.h ${srcdir}/../include/obstack.h \ - arm-opcode.h + ${srcdir}/../include/opcode/arm.h arm-tdep.o : arm-tdep.c defs.h xm.h config.status tm.h config.status frame.h inferior.h breakpoint.h \ value.h symtab.h ${srcdir}/../include/obstack.h arm-opcode.h gdbcore.h \ ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h @@ -73,7 +73,7 @@ findvar.o : findvar.c defs.h xm.h config.status tm.h config.status symtab.h ${sr inferior.h breakpoint.h target.h gould-pinsn.o : gould-pinsn.c defs.h xm.h config.status tm.h config.status symtab.h \ ${srcdir}/../include/obstack.h frame.h gdbcore.h ${srcdir}/../include/bfd.h \ - ${srcdir}/../include/ansidecl.h np1-opcode.h + ${srcdir}/../include/ansidecl.h ${srcdir}/../include/opcode/np1.h gould-xdep.o : gould-xdep.c defs.h xm.h config.status tm.h config.status frame.h inferior.h \ breakpoint.h value.h symtab.h ${srcdir}/../include/obstack.h gdbcore.h \ ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h @@ -123,8 +123,8 @@ m68k-pinsn.o : m68k-pinsn.c defs.h xm.h config.status tm.h config.status symtab. ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h m68k-tdep.o : m68k-tdep.c defs.h xm.h config.status tm.h config.status ieee-float.h frame.h symtab.h \ ${srcdir}/../include/obstack.h -m88k-pinsn.o : m88k-pinsn.c m88k-opcode.h defs.h xm.h config.status tm.h config.status symtab.h \ - ${srcdir}/../include/obstack.h +m88k-pinsn.o : m88k-pinsn.c ${srcdir}/../include/opcode/m88k.h defs.h xm.h config.status tm.h config.status \ + symtab.h ${srcdir}/../include/obstack.h m88k-tdep.o : m88k-tdep.c defs.h xm.h config.status tm.h config.status frame.h inferior.h breakpoint.h \ value.h symtab.h ${srcdir}/../include/obstack.h gdbcore.h ${srcdir}/../include/bfd.h \ ${srcdir}/../include/ansidecl.h /usr/include/setjmp.h @@ -172,7 +172,8 @@ printcmd.o : printcmd.c defs.h xm.h config.status tm.h config.status frame.h sym ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h gdbcmd.h command.h target.h procfs.o : procfs.c defs.h xm.h config.status tm.h config.status pyr-pinsn.o : pyr-pinsn.c defs.h xm.h config.status tm.h config.status symtab.h ${srcdir}/../include/obstack.h \ - pyr-opcode.h gdbcore.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h + ${srcdir}/../include/opcode/pyr.h gdbcore.h ${srcdir}/../include/bfd.h \ + ${srcdir}/../include/ansidecl.h pyr-tdep.o : pyr-tdep.c defs.h xm.h config.status tm.h config.status pyr-xdep.o : pyr-xdep.c defs.h xm.h config.status tm.h config.status frame.h inferior.h breakpoint.h \ value.h symtab.h ${srcdir}/../include/obstack.h gdbcore.h ${srcdir}/../include/bfd.h \ @@ -245,7 +246,7 @@ symtab.o : symtab.c defs.h xm.h config.status tm.h config.status symtab.h ${srcd gdbcore.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h frame.h target.h \ value.h symfile.h gdbcmd.h command.h regex.h language.h tahoe-pinsn.o : tahoe-pinsn.c defs.h xm.h config.status tm.h config.status symtab.h \ - ${srcdir}/../include/obstack.h tahoe-opcode.h + ${srcdir}/../include/obstack.h ${srcdir}/../include/opcode/tahoe.h target.o : target.c defs.h xm.h config.status tm.h config.status 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 symfile.h @@ -270,7 +271,7 @@ values.o : values.c defs.h xm.h config.status tm.h config.status symtab.h ${srcd value.h gdbcore.h ${srcdir}/../include/bfd.h ${srcdir}/../include/ansidecl.h frame.h \ command.h gdbcmd.h vax-pinsn.o : vax-pinsn.c defs.h xm.h config.status tm.h config.status symtab.h ${srcdir}/../include/obstack.h \ - vax-opcode.h + ${srcdir}/../include/opcode/vax.h xdr_ld.o : ${srcdir}/vx-share/xdr_ld.c ${srcdir}/vx-share/vxWorks.h ${srcdir}/vx-share/vxTypes.h \ /usr/include/rpc/rpc.h ${srcdir}/vx-share/xdr_ld.h xdr_ptrace.o : ${srcdir}/vx-share/xdr_ptrace.c diff --git a/gdb/gould-pinsn.c b/gdb/gould-pinsn.c index d4bcb60..f206a1e 100644 --- a/gdb/gould-pinsn.c +++ b/gdb/gould-pinsn.c @@ -23,9 +23,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "frame.h" #include "gdbcore.h" #if defined GOULD_PN -#include "pn-opcode.h" +#include "opcode/pn.h" #else -#include "np1-opcode.h" +#include "opcode/np1.h" #endif /* GOULD RISC instructions are never longer than this many bytes. */ diff --git a/gdb/m88k-pinsn.c b/gdb/m88k-pinsn.c index ca9c8c7..325c4ed 100644 --- a/gdb/m88k-pinsn.c +++ b/gdb/m88k-pinsn.c @@ -20,7 +20,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <stdio.h> -#include "m88k-opcode.h" +#include "opcode/m88k.h" #include "defs.h" #include "symtab.h" diff --git a/gdb/partial-stab.h b/gdb/partial-stab.h index d4b3dea..eefaf06 100644 --- a/gdb/partial-stab.h +++ b/gdb/partial-stab.h @@ -32,7 +32,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ * Standard, external, non-debugger, symbols */ -#ifdef DBXREAD_ONLY case N_TEXT | N_EXT: case N_NBTEXT | N_EXT: case N_NBDATA | N_EXT: @@ -41,6 +40,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ case N_ABS | N_EXT: case N_DATA | N_EXT: case N_BSS | N_EXT: +#ifdef DBXREAD_ONLY CUR_SYMBOL_VALUE += addr; /* Relocate */ @@ -49,7 +49,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ bss_ext_symbol: record_misc_function (namestring, CUR_SYMBOL_VALUE, CUR_SYMBOL_TYPE); /* Always */ - +#endif /* DBXREAD_ONLY */ continue; /* Standard, local, non-debugger, symbols */ @@ -64,6 +64,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ case N_FN: case N_FN_SEQ: case N_TEXT: +#ifdef DBXREAD_ONLY CUR_SYMBOL_VALUE += addr; /* Relocate */ SET_NAMESTRING(); if ((namestring[0] == '-' && namestring[1] == 'l') @@ -93,9 +94,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ past_first_source_file = 1; last_o_file_start = CUR_SYMBOL_VALUE; } +#endif /* DBXREAD_ONLY */ continue; case N_DATA: +#ifdef DBXREAD_ONLY CUR_SYMBOL_VALUE += addr; /* Relocate */ SET_NAMESTRING (); /* Check for __DYNAMIC, which is used by Sun shared libraries. @@ -108,9 +111,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ record_misc_function (namestring, CUR_SYMBOL_VALUE, CUR_SYMBOL_TYPE); /* Always */ } +#endif /* DBXREAD_ONLY */ continue; case N_UNDF | N_EXT: +#ifdef DBXREAD_ONLY if (CUR_SYMBOL_VALUE != 0) { /* This is a "Fortran COMMON" symbol. See if the target environment knows where it has been relocated to. */ @@ -125,8 +130,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ CUR_SYMBOL_VALUE = reladdr; goto bss_ext_symbol; } +#endif /* DBXREAD_ONLY */ continue; /* Just undefined, not COMMON */ -#endif /* Lots of symbol types we can just ignore. */ @@ -169,13 +174,27 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ SET_NAMESTRING(); - /* Peek at the next symbol. If it is also an N_SO, the - first one just indicates the directory. */ - CHECK_SECOND_N_SO(); valu += addr; /* Relocate */ if (pst && past_first_source_file) { + /* Some compilers (including gcc) emit a pair of initial N_SOs. + The first one is a directory name; the second the file name. + If pst exists, is empty, and has a filename ending in '/', + we assume the previous N_SO was a directory name. */ + if (global_psymbols.next + == (global_psymbols.list + pst->globals_offset) + && static_psymbols.next + == (static_psymbols.list + pst->statics_offset) + && pst->filename && pst->filename[0] + && pst->filename[strlen(pst->filename)-1] == '/') { + /* Just replace the directory name with the real filename. */ + pst->filename = + (char *) obstack_alloc (psymbol_obstack, + strlen (namestring) + 1); + strcpy (pst->filename, namestring); + continue; + } END_PSYMTAB (pst, psymtab_include_list, includes_used, first_symnum * symbol_size, valu, dependency_list, dependencies_used); @@ -193,8 +212,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ continue; } -#ifdef DBXREAD_ONLY case N_BINCL: +#ifdef DBXREAD_ONLY /* Add this bincl to the bincl_list for future EXCLs. No need to save the string; it'll be around until read_dbx_symtab function returns */ @@ -217,8 +236,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ includes_used * sizeof (char *)); } +#endif /* DBXREAD_ONLY */ continue; -#endif case N_SOL: /* Mark down an include file in the current psymtab */ @@ -261,6 +280,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ includes_used * sizeof (char *)); } continue; + case N_LSYM: /* Typedef or automatic variable. */ case N_STSYM: /* Data seg var -- static */ case N_LCSYM: /* BSS " */ @@ -294,7 +314,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ VAR_NAMESPACE, LOC_TYPEDEF, static_psymbols, CUR_SYMBOL_VALUE); check_enum: -#ifdef DBXREAD_ONLY /* If this is an enumerated type, we need to add all the enum constants to the partial symbol table. This does not cover enums without names, e.g. @@ -353,7 +372,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ p++; } } -#endif continue; case 'c': /* Constant, e.g. from "const" in Pascal. */ @@ -467,8 +485,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ continue; } -#ifdef DBXREAD_ONLY case N_EXCL: +#ifdef DBXREAD_ONLY SET_NAMESTRING(); @@ -519,12 +537,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ error ("Invalid symbol data: \"repeated\" header file not previously seen, at symtab pos %d.", symnum); } +#endif /* DBXREAD_ONLY */ continue; -#endif case N_RBRAC: #ifdef HANDLE_RBRAC HANDLE_RBRAC(CUR_SYMBOL_VALUE); + continue; #endif case N_EINCL: case N_DSLINE: @@ -551,10 +570,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ continue; default: -#ifdef DBXREAD_ONLY /* If we haven't found it yet, ignore it. It's probably some new type we don't know about yet. */ complain (&unknown_symtype_complaint, local_hex_string(CUR_SYMBOL_TYPE)); -#endif continue; } diff --git a/gdb/pyr-pinsn.c b/gdb/pyr-pinsn.c index 59d19b9..4a11dff 100644 --- a/gdb/pyr-pinsn.c +++ b/gdb/pyr-pinsn.c @@ -21,7 +21,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "defs.h" #include "symtab.h" -#include "pyr-opcode.h" +#include "opcode/pyr.h" #include "gdbcore.h" diff --git a/gdb/sparc-pinsn.c b/gdb/sparc-pinsn.c index 7fed7e9..36dad5a 100644 --- a/gdb/sparc-pinsn.c +++ b/gdb/sparc-pinsn.c @@ -26,9 +26,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "string.h" #include "target.h" -extern void qsort (); - - extern char *reg_names[]; #define freg_names (®_names[4 * 8]) @@ -92,8 +89,6 @@ is_delayed_branch (insn) return 0; } -static int opcodes_sorted = 0; - /* Print one instruction from MEMADDR on STREAM. */ int print_insn (memaddr, stream) @@ -104,14 +99,6 @@ print_insn (memaddr, stream) register unsigned int i; - if (!opcodes_sorted) - { - static int compare_opcodes (); - qsort ((char *) sparc_opcodes, NUMOPCODES, - sizeof (sparc_opcodes[0]), compare_opcodes); - opcodes_sorted = 1; - } - read_memory (memaddr, &insn, sizeof (insn)); for (i = 0; i < NUMOPCODES; ++i) @@ -231,6 +218,7 @@ print_insn (memaddr, stream) /* Check to see whether we have a 1+i, and take note of that fact. + FIXME: No longer true/relavant ??? Note: because of the way we sort the table, we will be matching 1+i rather than i+1, so it is OK to assume that i is after +, @@ -358,107 +346,3 @@ print_insn (memaddr, stream) printf_filtered ("%#8x", insn.code); return sizeof (insn); } - - -/* Compare opcodes A and B. */ - -static int -compare_opcodes (a, b) - char *a, *b; -{ - struct sparc_opcode *op0 = (struct sparc_opcode *) a; - struct sparc_opcode *op1 = (struct sparc_opcode *) b; - unsigned long int match0 = op0->match, match1 = op1->match; - unsigned long int lose0 = op0->lose, lose1 = op1->lose; - register unsigned int i; - - /* If a bit is set in both match and lose, there is something - wrong with the opcode table. */ - if (match0 & lose0) - { - fprintf (stderr, "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n", - op0->name, match0, lose0); - op0->lose &= ~op0->match; - lose0 = op0->lose; - } - - if (match1 & lose1) - { - fprintf (stderr, "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n", - op1->name, match1, lose1); - op1->lose &= ~op1->match; - lose1 = op1->lose; - } - - /* Because the bits that are variable in one opcode are constant in - another, it is important to order the opcodes in the right order. */ - for (i = 0; i < 32; ++i) - { - unsigned long int x = 1 << i; - int x0 = (match0 & x) != 0; - int x1 = (match1 & x) != 0; - - if (x0 != x1) - return x1 - x0; - } - - for (i = 0; i < 32; ++i) - { - unsigned long int x = 1 << i; - int x0 = (lose0 & x) != 0; - int x1 = (lose1 & x) != 0; - - if (x0 != x1) - return x1 - x0; - } - - /* They are functionally equal. So as long as the opcode table is - valid, we can put whichever one first we want, on aesthetic grounds. */ - - /* Our first aesthetic ground is that aliases defer to real insns. */ - { - int alias_diff = (op0->flags & F_ALIAS) - (op1->flags & F_ALIAS); - if (alias_diff != 0) - /* Put the one that isn't an alias first. */ - return alias_diff; - } - - /* Except for the above aliases, two "identical" instructions had - better have the same opcode. This is a sanity check on the table. */ - if (0 != strcmp (op0->name, op1->name)) - fprintf (stderr, "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n", - op0->name, op1->name); - - /* Fewer arguments are preferred. */ - { - int length_diff = strlen (op0->args) - strlen (op1->args); - if (length_diff != 0) - /* Put the one with fewer arguments first. */ - return length_diff; - } - - /* Put 1+i before i+1. */ - { - char *p0 = (char *) strchr(op0->args, '+'); - char *p1 = (char *) strchr(op1->args, '+'); - - if (p0 && p1) - { - /* There is a plus in both operands. Note that a plus - sign cannot be the first character in args, - so the following [-1]'s are valid. */ - if (p0[-1] == 'i' && p1[1] == 'i') - /* op0 is i+1 and op1 is 1+i, so op1 goes first. */ - return 1; - if (p0[1] == 'i' && p1[-1] == 'i') - /* op0 is 1+i and op1 is i+1, so op0 goes first. */ - return -1; - } - } - - /* They are, as far as we can tell, identical. - Since qsort may have rearranged the table partially, there is - no way to tell which one was first in the opcode table as - written, so just say there are equal. */ - return 0; -} diff --git a/gdb/tahoe-pinsn.c b/gdb/tahoe-pinsn.c index 1ba22a3..9c2efca 100644 --- a/gdb/tahoe-pinsn.c +++ b/gdb/tahoe-pinsn.c @@ -22,7 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <stdio.h> #include "defs.h" #include "symtab.h" -#include "tahoe-opcode.h" +#include "opcode/tahoe.h" /* Tahoe instructions are never longer than this. */ #define MAXLEN 62 diff --git a/gdb/vax-pinsn.c b/gdb/vax-pinsn.c index ccbf19b..d62115e 100644 --- a/gdb/vax-pinsn.c +++ b/gdb/vax-pinsn.c @@ -21,7 +21,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "defs.h" #include "symtab.h" -#include "vax-opcode.h" +#include "opcode/vax.h" /* Vax instructions are never longer than this. */ #define MAXLEN 62 |