1991-03-29 00:28:29 +08:00
|
|
|
|
/* Convex stuff for GDB.
|
1991-09-19 07:24:51 +08:00
|
|
|
|
Copyright (C) 1990, 1991 Free Software Foundation, Inc.
|
1991-03-29 00:28:29 +08:00
|
|
|
|
|
|
|
|
|
This file is part of GDB.
|
|
|
|
|
|
1991-06-04 16:31:55 +09:00
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
1991-03-29 00:28:29 +08:00
|
|
|
|
it under the terms of the GNU General Public License as published by
|
1991-06-04 16:31:55 +09:00
|
|
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
|
|
|
(at your option) any later version.
|
1991-03-29 00:28:29 +08:00
|
|
|
|
|
1991-06-04 16:31:55 +09:00
|
|
|
|
This program is distributed in the hope that it will be useful,
|
1991-03-29 00:28:29 +08:00
|
|
|
|
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
|
1991-06-04 16:31:55 +09:00
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
1991-03-29 00:28:29 +08:00
|
|
|
|
|
|
|
|
|
#include "defs.h"
|
|
|
|
|
#include "command.h"
|
|
|
|
|
#include "symtab.h"
|
|
|
|
|
#include "value.h"
|
|
|
|
|
#include "frame.h"
|
|
|
|
|
#include "inferior.h"
|
|
|
|
|
#include "wait.h"
|
|
|
|
|
|
|
|
|
|
#include <signal.h>
|
|
|
|
|
#include <fcntl.h>
|
|
|
|
|
|
|
|
|
|
#include "gdbcore.h"
|
|
|
|
|
#include <sys/param.h>
|
|
|
|
|
#include <sys/dir.h>
|
|
|
|
|
#include <sys/user.h>
|
|
|
|
|
#include <sys/ioctl.h>
|
|
|
|
|
#include <sys/pcntl.h>
|
|
|
|
|
#include <sys/thread.h>
|
|
|
|
|
#include <sys/proc.h>
|
|
|
|
|
#include <sys/file.h>
|
|
|
|
|
#include <sys/stat.h>
|
|
|
|
|
#include <sys/mman.h>
|
|
|
|
|
|
|
|
|
|
#include "gdbcmd.h"
|
|
|
|
|
|
|
|
|
|
exec_file_command (filename, from_tty)
|
|
|
|
|
char *filename;
|
|
|
|
|
int from_tty;
|
|
|
|
|
{
|
|
|
|
|
int val;
|
|
|
|
|
int n;
|
|
|
|
|
struct stat st_exec;
|
|
|
|
|
|
|
|
|
|
/* Eliminate all traces of old exec file.
|
|
|
|
|
Mark text segment as empty. */
|
|
|
|
|
|
|
|
|
|
if (execfile)
|
|
|
|
|
free (execfile);
|
|
|
|
|
execfile = 0;
|
|
|
|
|
data_start = 0;
|
|
|
|
|
data_end = 0;
|
|
|
|
|
text_start = 0;
|
|
|
|
|
text_end = 0;
|
|
|
|
|
exec_data_start = 0;
|
|
|
|
|
exec_data_end = 0;
|
|
|
|
|
if (execchan >= 0)
|
|
|
|
|
close (execchan);
|
|
|
|
|
execchan = -1;
|
|
|
|
|
|
|
|
|
|
n_exec = 0;
|
|
|
|
|
|
|
|
|
|
/* Now open and digest the file the user requested, if any. */
|
|
|
|
|
|
|
|
|
|
if (filename)
|
|
|
|
|
{
|
|
|
|
|
filename = tilde_expand (filename);
|
|
|
|
|
make_cleanup (free, filename);
|
|
|
|
|
|
|
|
|
|
execchan = openp (getenv ("PATH"), 1, filename, O_RDONLY, 0,
|
|
|
|
|
&execfile);
|
|
|
|
|
if (execchan < 0)
|
|
|
|
|
perror_with_name (filename);
|
|
|
|
|
|
|
|
|
|
if (myread (execchan, &filehdr, sizeof filehdr) < 0)
|
|
|
|
|
perror_with_name (filename);
|
|
|
|
|
|
|
|
|
|
if (! IS_SOFF_MAGIC (filehdr.h_magic))
|
|
|
|
|
error ("%s: not an executable file.", filename);
|
|
|
|
|
|
|
|
|
|
if (myread (execchan, &opthdr, filehdr.h_opthdr) <= 0)
|
|
|
|
|
perror_with_name (filename);
|
|
|
|
|
|
|
|
|
|
/* Read through the section headers.
|
|
|
|
|
For text, data, etc, record an entry in the exec file map.
|
|
|
|
|
Record text_start and text_end. */
|
|
|
|
|
|
|
|
|
|
lseek (execchan, (long) filehdr.h_scnptr, 0);
|
|
|
|
|
|
|
|
|
|
for (n = 0; n < filehdr.h_nscns; n++)
|
|
|
|
|
{
|
|
|
|
|
if (myread (execchan, &scnhdr, sizeof scnhdr) < 0)
|
|
|
|
|
perror_with_name (filename);
|
|
|
|
|
|
|
|
|
|
if ((scnhdr.s_flags & S_TYPMASK) >= S_TEXT
|
|
|
|
|
&& (scnhdr.s_flags & S_TYPMASK) <= S_COMON)
|
|
|
|
|
{
|
|
|
|
|
exec_map[n_exec].mem_addr = scnhdr.s_vaddr;
|
|
|
|
|
exec_map[n_exec].mem_end = scnhdr.s_vaddr + scnhdr.s_size;
|
|
|
|
|
exec_map[n_exec].file_addr = scnhdr.s_scnptr;
|
|
|
|
|
exec_map[n_exec].type = scnhdr.s_flags & S_TYPMASK;
|
|
|
|
|
n_exec++;
|
|
|
|
|
|
|
|
|
|
if ((scnhdr.s_flags & S_TYPMASK) == S_TEXT)
|
|
|
|
|
{
|
|
|
|
|
text_start = scnhdr.s_vaddr;
|
|
|
|
|
text_end = scnhdr.s_vaddr + scnhdr.s_size;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fstat (execchan, &st_exec);
|
|
|
|
|
exec_mtime = st_exec.st_mtime;
|
|
|
|
|
|
|
|
|
|
validate_files ();
|
|
|
|
|
}
|
|
|
|
|
else if (from_tty)
|
|
|
|
|
printf_filtered ("No exec file now.\n");
|
|
|
|
|
|
|
|
|
|
/* Tell display code (if any) about the changed file name. */
|
|
|
|
|
if (exec_file_display_hook)
|
|
|
|
|
(*exec_file_display_hook) (filename);
|
|
|
|
|
}
|
|
|
|
|
|
1995-01-28 09:32:10 +08:00
|
|
|
|
#if 0
|
1991-03-29 00:28:29 +08:00
|
|
|
|
/* Read data from SOFF exec or core file.
|
|
|
|
|
Return 0 on success, EIO if address out of bounds. */
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
xfer_core_file (memaddr, myaddr, len)
|
|
|
|
|
CORE_ADDR memaddr;
|
|
|
|
|
char *myaddr;
|
|
|
|
|
int len;
|
|
|
|
|
{
|
|
|
|
|
register int i;
|
|
|
|
|
register int n;
|
|
|
|
|
register int val;
|
|
|
|
|
int xferchan;
|
|
|
|
|
char **xferfile;
|
|
|
|
|
int fileptr;
|
|
|
|
|
int returnval = 0;
|
|
|
|
|
|
|
|
|
|
while (len > 0)
|
|
|
|
|
{
|
|
|
|
|
xferfile = 0;
|
|
|
|
|
xferchan = 0;
|
|
|
|
|
|
|
|
|
|
/* Determine which file the next bunch of addresses reside in,
|
|
|
|
|
and where in the file. Set the file's read/write pointer
|
|
|
|
|
to point at the proper place for the desired address
|
|
|
|
|
and set xferfile and xferchan for the correct file.
|
|
|
|
|
If desired address is nonexistent, leave them zero.
|
|
|
|
|
i is set to the number of bytes that can be handled
|
|
|
|
|
along with the next address. */
|
|
|
|
|
|
|
|
|
|
i = len;
|
|
|
|
|
|
|
|
|
|
for (n = 0; n < n_core; n++)
|
|
|
|
|
{
|
|
|
|
|
if (memaddr >= core_map[n].mem_addr && memaddr < core_map[n].mem_end
|
|
|
|
|
&& (core_map[n].thread == -1
|
|
|
|
|
|| core_map[n].thread == inferior_thread))
|
|
|
|
|
{
|
|
|
|
|
i = min (len, core_map[n].mem_end - memaddr);
|
|
|
|
|
fileptr = core_map[n].file_addr + memaddr - core_map[n].mem_addr;
|
|
|
|
|
if (core_map[n].file_addr)
|
|
|
|
|
{
|
|
|
|
|
xferfile = &corefile;
|
|
|
|
|
xferchan = corechan;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else if (core_map[n].mem_addr >= memaddr
|
|
|
|
|
&& core_map[n].mem_addr < memaddr + i)
|
|
|
|
|
i = core_map[n].mem_addr - memaddr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!xferfile)
|
|
|
|
|
for (n = 0; n < n_exec; n++)
|
|
|
|
|
{
|
|
|
|
|
if (memaddr >= exec_map[n].mem_addr
|
|
|
|
|
&& memaddr < exec_map[n].mem_end)
|
|
|
|
|
{
|
|
|
|
|
i = min (len, exec_map[n].mem_end - memaddr);
|
|
|
|
|
fileptr = exec_map[n].file_addr + memaddr
|
|
|
|
|
- exec_map[n].mem_addr;
|
|
|
|
|
if (exec_map[n].file_addr)
|
|
|
|
|
{
|
|
|
|
|
xferfile = &execfile;
|
|
|
|
|
xferchan = execchan;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else if (exec_map[n].mem_addr >= memaddr
|
|
|
|
|
&& exec_map[n].mem_addr < memaddr + i)
|
|
|
|
|
i = exec_map[n].mem_addr - memaddr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Now we know which file to use.
|
|
|
|
|
Set up its pointer and transfer the data. */
|
|
|
|
|
if (xferfile)
|
|
|
|
|
{
|
|
|
|
|
if (*xferfile == 0)
|
|
|
|
|
if (xferfile == &execfile)
|
|
|
|
|
error ("No program file to examine.");
|
|
|
|
|
else
|
|
|
|
|
error ("No core dump file or running program to examine.");
|
|
|
|
|
val = lseek (xferchan, fileptr, 0);
|
|
|
|
|
if (val < 0)
|
|
|
|
|
perror_with_name (*xferfile);
|
|
|
|
|
val = myread (xferchan, myaddr, i);
|
|
|
|
|
if (val < 0)
|
|
|
|
|
perror_with_name (*xferfile);
|
|
|
|
|
}
|
|
|
|
|
/* If this address is for nonexistent memory,
|
|
|
|
|
read zeros if reading, or do nothing if writing. */
|
|
|
|
|
else
|
|
|
|
|
{
|
1993-09-02 05:56:42 +08:00
|
|
|
|
memset (myaddr, '\0', i);
|
1991-03-29 00:28:29 +08:00
|
|
|
|
returnval = EIO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
memaddr += i;
|
|
|
|
|
myaddr += i;
|
|
|
|
|
len -= i;
|
|
|
|
|
}
|
|
|
|
|
return returnval;
|
|
|
|
|
}
|
1995-01-28 09:32:10 +08:00
|
|
|
|
#endif
|
1991-03-29 00:28:29 +08:00
|
|
|
|
|
|
|
|
|
/* Here from info files command to print an address map. */
|
|
|
|
|
|
|
|
|
|
print_maps ()
|
|
|
|
|
{
|
|
|
|
|
struct pmap ptrs[200];
|
|
|
|
|
int n;
|
|
|
|
|
|
|
|
|
|
/* ID strings for core and executable file sections */
|
|
|
|
|
|
|
|
|
|
static char *idstr[] =
|
|
|
|
|
{
|
|
|
|
|
"0", "text", "data", "tdata", "bss", "tbss",
|
|
|
|
|
"common", "ttext", "ctx", "tctx", "10", "11", "12",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (n = 0; n < n_core; n++)
|
|
|
|
|
{
|
|
|
|
|
core_map[n].which = 0;
|
|
|
|
|
ptrs[n] = core_map[n];
|
|
|
|
|
}
|
|
|
|
|
for (n = 0; n < n_exec; n++)
|
|
|
|
|
{
|
|
|
|
|
exec_map[n].which = 1;
|
|
|
|
|
ptrs[n_core+n] = exec_map[n];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
qsort (ptrs, n_core + n_exec, sizeof *ptrs, ptr_cmp);
|
|
|
|
|
|
|
|
|
|
for (n = 0; n < n_core + n_exec; n++)
|
|
|
|
|
{
|
|
|
|
|
struct pmap *p = &ptrs[n];
|
|
|
|
|
if (n > 0)
|
|
|
|
|
{
|
|
|
|
|
if (p->mem_addr < ptrs[n-1].mem_end)
|
|
|
|
|
p->mem_addr = ptrs[n-1].mem_end;
|
|
|
|
|
if (p->mem_addr >= p->mem_end)
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
printf_filtered ("%08x .. %08x %-6s %s\n",
|
|
|
|
|
p->mem_addr, p->mem_end, idstr[p->type],
|
|
|
|
|
p->which ? execfile : corefile);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Compare routine to put file sections in order.
|
|
|
|
|
Sort into increasing order on address, and put core file sections
|
|
|
|
|
before exec file sections if both files contain the same addresses. */
|
|
|
|
|
|
|
|
|
|
static ptr_cmp (a, b)
|
|
|
|
|
struct pmap *a, *b;
|
|
|
|
|
{
|
|
|
|
|
if (a->mem_addr != b->mem_addr) return a->mem_addr - b->mem_addr;
|
|
|
|
|
return a->which - b->which;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Trapped internal variables are used to handle special registers.
|
|
|
|
|
A trapped i.v. calls a hook here every time it is dereferenced,
|
|
|
|
|
to provide a new value for the variable, and it calls a hook here
|
|
|
|
|
when a new value is assigned, to do something with the value.
|
|
|
|
|
|
|
|
|
|
The vector registers are $vl, $vs, $vm, $vN, $VN (N in 0..7).
|
|
|
|
|
The communication registers are $cN, $CN (N in 0..63).
|
|
|
|
|
They not handled as regular registers because it's expensive to
|
|
|
|
|
read them, and their size varies, and they have too many names. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Return 1 if NAME is a trapped internal variable, else 0. */
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
is_trapped_internalvar (name)
|
|
|
|
|
char *name;
|
|
|
|
|
{
|
|
|
|
|
if ((name[0] == 'c' || name[0] == 'C')
|
|
|
|
|
&& name[1] >= '0' && name[1] <= '9'
|
|
|
|
|
&& (name[2] == '\0'
|
|
|
|
|
|| (name[2] >= '0' && name[2] <= '9'
|
|
|
|
|
&& name[3] == '\0' && name[1] != '0'))
|
|
|
|
|
&& atoi (&name[1]) < 64) return 1;
|
|
|
|
|
|
|
|
|
|
if ((name[0] == 'v' || name[0] == 'V')
|
|
|
|
|
&& (((name[1] & -8) == '0' && name[2] == '\0')
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
|| STREQ (name, "vl")
|
|
|
|
|
|| STREQ (name, "vs")
|
|
|
|
|
|| STREQ (name, "vm")))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
return 1;
|
|
|
|
|
else return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Return the value of trapped internal variable VAR */
|
|
|
|
|
|
|
|
|
|
value
|
|
|
|
|
value_of_trapped_internalvar (var)
|
|
|
|
|
struct internalvar *var;
|
|
|
|
|
{
|
|
|
|
|
char *name = var->name;
|
|
|
|
|
value val;
|
|
|
|
|
struct type *type;
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-19 04:21:32 +08:00
|
|
|
|
struct type *range_type;
|
1991-03-29 00:28:29 +08:00
|
|
|
|
long len = *read_vector_register (VL_REGNUM);
|
|
|
|
|
if (len <= 0 || len > 128) len = 128;
|
|
|
|
|
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
if (STREQ (name, "vl"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
{
|
Fix some infrastructure to be able to cope with host and target
machines with different sized basic types (ints, ptrs, etc).
(Idea from pierre@la.tce.com (Pierre Willard).)
* value.c (value_from_longest): Rename from value_from_long.
Handle pointer types as well as integers, so that targets with
different pointer sizes from the host can be accomodated.
* breakpoint.c, convex-tdep.c, eval.c, expprint.c, printcmd.c,
valarith.c, valops.c, valprint.c, value.h, values.c: Rename
uses of value_from_long to value_from_longest.
* eval.c, findvar.c, printcmd.c, valarith.c, valops.c: Pass
the correct pointer type to value_from_long{est}.
* remote-vx.c: Remove obsolete code for calling functions via
vxworks kludge interface (it referenced value_from_long).
* valops.c (value_string): Find malloc with lookup_misc_func, not
raw search.
* breakpoint.c, remote-vx.c: Reword strings printed by
catch_errors callers.
1991-09-06 16:09:40 +09:00
|
|
|
|
val = value_from_longest (builtin_type_int,
|
1991-03-29 00:28:29 +08:00
|
|
|
|
(LONGEST) *read_vector_register_1 (VL_REGNUM));
|
|
|
|
|
}
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
else if (STREQ (name, "vs"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
{
|
Fix some infrastructure to be able to cope with host and target
machines with different sized basic types (ints, ptrs, etc).
(Idea from pierre@la.tce.com (Pierre Willard).)
* value.c (value_from_longest): Rename from value_from_long.
Handle pointer types as well as integers, so that targets with
different pointer sizes from the host can be accomodated.
* breakpoint.c, convex-tdep.c, eval.c, expprint.c, printcmd.c,
valarith.c, valops.c, valprint.c, value.h, values.c: Rename
uses of value_from_long to value_from_longest.
* eval.c, findvar.c, printcmd.c, valarith.c, valops.c: Pass
the correct pointer type to value_from_long{est}.
* remote-vx.c: Remove obsolete code for calling functions via
vxworks kludge interface (it referenced value_from_long).
* valops.c (value_string): Find malloc with lookup_misc_func, not
raw search.
* breakpoint.c, remote-vx.c: Reword strings printed by
catch_errors callers.
1991-09-06 16:09:40 +09:00
|
|
|
|
val = value_from_longest (builtin_type_int,
|
1991-03-29 00:28:29 +08:00
|
|
|
|
(LONGEST) *read_vector_register_1 (VS_REGNUM));
|
|
|
|
|
}
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
else if (STREQ (name, "vm"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
{
|
|
|
|
|
long vm[4];
|
|
|
|
|
long i, *p;
|
1993-09-02 04:37:15 +08:00
|
|
|
|
memcpy (vm, read_vector_register_1 (VM_REGNUM), sizeof vm);
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-19 04:21:32 +08:00
|
|
|
|
range_type =
|
|
|
|
|
create_range_type ((struct type *) NULL, builtin_type_int, 0, len - 1);
|
|
|
|
|
type =
|
|
|
|
|
create_array_type ((struct type *) NULL, builtin_type_int, range_type);
|
1991-03-29 00:28:29 +08:00
|
|
|
|
val = allocate_value (type);
|
|
|
|
|
p = (long *) VALUE_CONTENTS (val);
|
|
|
|
|
for (i = 0; i < len; i++)
|
|
|
|
|
*p++ = !! (vm[3 - (i >> 5)] & (1 << (i & 037)));
|
|
|
|
|
}
|
|
|
|
|
else if (name[0] == 'V')
|
|
|
|
|
{
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-19 04:21:32 +08:00
|
|
|
|
range_type =
|
|
|
|
|
create_range_type ((struct type *) NULL, builtin_type_int 0, len - 1);
|
|
|
|
|
type =
|
|
|
|
|
create_array_type ((struct type *) NULL, builtin_type_long_long,
|
|
|
|
|
range_type);
|
1991-03-29 00:28:29 +08:00
|
|
|
|
val = allocate_value (type);
|
1993-09-02 04:37:15 +08:00
|
|
|
|
memcpy (VALUE_CONTENTS (val),
|
|
|
|
|
read_vector_register_1 (name[1] - '0'),
|
|
|
|
|
TYPE_LENGTH (type));
|
1991-03-29 00:28:29 +08:00
|
|
|
|
}
|
|
|
|
|
else if (name[0] == 'v')
|
|
|
|
|
{
|
|
|
|
|
long *p1, *p2;
|
* Makefile.in (VERSION): Bump to 4.7.4.
* Makefile.in (SFILES_MAINDIR): Add typeprint.c, c-typeprint.c,
m2-typeprint.c, c-valprint.c cp-valprint.c m2-valprint.c.
* Makefile.in (HFILES): Add valprint.h.
* Makefile.in (OBS): Add typeprint.o, c-typeprint.o,
m2-typeprint.o, c-valprint.o, cp-valprint.o m2-valprint.o.
* typeprint.c, typeprint.h: New files for language independent
type printing functions.
* c-typeprint.c, m2-typeprint.c: New files for language dependent
type printing functions and definitions.
* valprint.h: New include file for language independent value
printing definitions.
* c-valprint.c, cp-valprint.c, m2-valprint.c: New files for language
dependent value printing functions.
* c-exp.y (production ptype): Add range_type variable and use new
create_range_type function.
* c-exp.y (tokentab2, tokentab3), c-lang.c (c_op_print_tab),
infcmd.c (path_var_name), language.c (unk_op_print_tab),
m2-lang.c (m2_op_print_tab): Change from ANSI-obsolescent
"const static" to ANSI-conformant "static const".
* c-exp.y (c_create_fundamental_type): Remove unused nbytes.
* c-exp.y (c_language_defn, cplus_language_defn): Add c_print_type,
and c_val_print.
* c-lang.h (c_print_type, c_val_print): Add prototypes.
* coffread.c (decode_type): Add range_type variable and call to
new create_range_type function.
* complaints.c (complain): Remove unused val variable.
* complaints.c (_initialize_complaints): Make it void.
* convex-tdep.c (value_of_trapped_internalvar): Add range_type
variable and call new create_range_type function.
* defs.h (enum val_prettyprint): Move enum from value.h to here
so we can avoid having to include value.h just for prototypes that
need the enum (thanks ANSI).
* dwarfread.c (struct_type): Local anonymous_size variable is
only used if !BITS_BIG_ENDIAN.
* dwarfread.c (decode_subscript_data_item): Add rangetype
variable and call new create_range_type function.
* elfread.c (elf_symfile_read): Remove unused dbx and text_sect
variables.
* eval.c (evaluate_subexp): Remove unused local variable name
and the statement with no side effects that initializes it.
* expprint.c (print_subexp): Change local_printstr to
LA_PRINT_STRING.
* gdbtypes.c (create_range_type): New function that creates
a range type using code fragments from object file readers as
an example of what has to be initialized.
* gdbtypes.c (create_array_type): Removed index_type, low_bound,
and high_bound parameters, replaced with a single range_type
parameter. Change function body to use passed in range_type
rather than handcrafting one.
* gdbtypes.h (create_range_type): Add prototype.
* gdbtypes.h (create_array_type): Change prototype parameters.
* infrun.c (normal_stop): Remove unused local variables tem and c.
* infrun.c (hook_stop_stub): Return 0 rather than random value.
* language.c (unk_lang_print_type, unk_lang_val_print): Add
stub functions that call error if called.
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn): Add initializers unk_lang_print_type and
unk_lang_val_print.
* language.h (struct language_defn): Reformat for larger
comments, add la_print_type and la_val_print members. Add
LA_PRINT_TYPE and LA_VAL_PRINT macros. Change local_printchar
to LA_PRINT_CHAR and local_printstr to LA_PRINT_STRING.
* m2-lang.c (m2_create_fundamental_type): Remove unused local
variable nbytes.
* m2-lang.c (m2_language_defn): Add initializers m2_print_type
and m2_val_print.
* m2-lang.h (m2_print_type, m2_val_print): Add prototypes.
* main.c (execute_command): Remove unused local variable cmdlines.
* main.c (echo_command), stabsread.c (read_type), printcmd.c
(clear_displays), symmisc.c (block_depth), values.c
(clear_value_history):
Make testing of truth value of assignment result explicit.
* mipsread.c (upgrade_type): Update FIXME to include future use
of create_range_type.
* printcmd.c (ptype_command, ptype_eval, whatis_command,
whatis_exp, maintenance_print_type): Move prototypes and functions
to new typeprint.c.
* printcmd.c (_initialize_printcmd): Move add_com calls for
ptype_command and whatis_command to new typeprint.c.
* ser-bsd.c (serial_open): Remove unused variable sgttyb.
* source.c (find_source_lines): Local variable c only used
when LSEEK_NOT_LINEAR is defined.
* stabsread.c (read_array_type): Use new create_range_type
function.
* stabsread.c (read_range_type): Add new index_type variable and
call new create_range_type function rather than handcrafting
range types.
* symmisc.c (type_print_1): Change usages to LA_PRINT_TYPE.
* symtab.c (typedef_print usages): Use c_typedef_print, renamed.
* symtab.c (type_print_base usages): Use c_type_print_base.
* symtab.c (type_print_varspec_prefix usages): Use
c_type_print_varspec_prefix.
* symtab.c (type_print_method_args usages): Use
cp_type_print_method_args.
* valprint.c: Completely ripped apart and the fragments used
to create c-valprint.c, cp-valprint.c, m2-valprint.c, and
valprint.h. Remaining stuff is language independent.
* value.h (struct fn_field): Forward declare for prototypes.
* value.h (type_print_1): Remove prototype.
* value.h (enum val_prettyprint): Moved to defs.h.
* value.h (typedef_print): Prototype renamed to c_typedef_print.
* value.h (baseclass_offset): Add prototype.
**** start-sanitize-chill ****
* Makefile.in (SFILES_MAINDIR): Add ch-typeprint.c, ch-valprint.c.
* Makefile.in (OBS): Add ch-typeprint.o, ch-valprint.o.
* ch-typeprint.c: New file for language dependent type printing.
* ch-valprint.c: New file for language dependent value printing.
* ch-exp.y (parse_number): Remove prototype and stub function.
* ch-exp.y (decode_integer_literal): Removed unused digits and
temp variables.
* ch-exp.y (convert_float): Completely ifdef out for now.
* ch-exp.y (tokentab2, tokentab3, tokentab4, tokentab5),
ch-lang.c (chill_op_print_tab):
Change from ANSI-obsolescent "const static" to ANSI-conformant
"static const".
* ch-exp.y (yylex): Add unhandled storage class enumeration
literals to switch statement for completeness.
* ch-lang.c (chill_create_fundamental_types): Remove unused
nbytes variable. Change dummy type to 2 bytes to match int.
Handle FT_VOID types gratuituously added to chill DWARF by
compiler. Change FT_CHAR case to generate an TYPE_CODE_CHAR
type rather than a one byte TYPE_CODE_INT type.
* ch-lang.c (chill_language_defn): Add chill_print_type and
chill_val_print.
* ch-lang.h (chill_print_type, chill_val_print): Add prototypes.
**** end-sanitize-chill ****
1992-12-19 04:21:32 +08:00
|
|
|
|
range_type =
|
|
|
|
|
create_range_type ((struct type *) NULL, builtin_type_int 0, len - 1);
|
|
|
|
|
type =
|
|
|
|
|
create_array_type ((struct type *) NULL, builtin_type_long,
|
|
|
|
|
range_type);
|
1991-03-29 00:28:29 +08:00
|
|
|
|
val = allocate_value (type);
|
|
|
|
|
p1 = read_vector_register_1 (name[1] - '0');
|
|
|
|
|
p2 = (long *) VALUE_CONTENTS (val);
|
|
|
|
|
while (--len >= 0) {p1++; *p2++ = *p1++;}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else if (name[0] == 'c')
|
Fix some infrastructure to be able to cope with host and target
machines with different sized basic types (ints, ptrs, etc).
(Idea from pierre@la.tce.com (Pierre Willard).)
* value.c (value_from_longest): Rename from value_from_long.
Handle pointer types as well as integers, so that targets with
different pointer sizes from the host can be accomodated.
* breakpoint.c, convex-tdep.c, eval.c, expprint.c, printcmd.c,
valarith.c, valops.c, valprint.c, value.h, values.c: Rename
uses of value_from_long to value_from_longest.
* eval.c, findvar.c, printcmd.c, valarith.c, valops.c: Pass
the correct pointer type to value_from_long{est}.
* remote-vx.c: Remove obsolete code for calling functions via
vxworks kludge interface (it referenced value_from_long).
* valops.c (value_string): Find malloc with lookup_misc_func, not
raw search.
* breakpoint.c, remote-vx.c: Reword strings printed by
catch_errors callers.
1991-09-06 16:09:40 +09:00
|
|
|
|
val = value_from_longest (builtin_type_int,
|
1991-03-29 00:28:29 +08:00
|
|
|
|
read_comm_register (atoi (&name[1])));
|
|
|
|
|
else if (name[0] == 'C')
|
Fix some infrastructure to be able to cope with host and target
machines with different sized basic types (ints, ptrs, etc).
(Idea from pierre@la.tce.com (Pierre Willard).)
* value.c (value_from_longest): Rename from value_from_long.
Handle pointer types as well as integers, so that targets with
different pointer sizes from the host can be accomodated.
* breakpoint.c, convex-tdep.c, eval.c, expprint.c, printcmd.c,
valarith.c, valops.c, valprint.c, value.h, values.c: Rename
uses of value_from_long to value_from_longest.
* eval.c, findvar.c, printcmd.c, valarith.c, valops.c: Pass
the correct pointer type to value_from_long{est}.
* remote-vx.c: Remove obsolete code for calling functions via
vxworks kludge interface (it referenced value_from_long).
* valops.c (value_string): Find malloc with lookup_misc_func, not
raw search.
* breakpoint.c, remote-vx.c: Reword strings printed by
catch_errors callers.
1991-09-06 16:09:40 +09:00
|
|
|
|
val = value_from_longest (builtin_type_long_long,
|
1991-03-29 00:28:29 +08:00
|
|
|
|
read_comm_register (atoi (&name[1])));
|
|
|
|
|
|
|
|
|
|
VALUE_LVAL (val) = lval_internalvar;
|
|
|
|
|
VALUE_INTERNALVAR (val) = var;
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Handle a new value assigned to a trapped internal variable */
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
set_trapped_internalvar (var, val, bitpos, bitsize, offset)
|
|
|
|
|
struct internalvar *var;
|
|
|
|
|
value val;
|
|
|
|
|
int bitpos, bitsize, offset;
|
|
|
|
|
{
|
|
|
|
|
char *name = var->name;
|
|
|
|
|
long long newval = value_as_long (val);
|
|
|
|
|
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
if (STREQ (name, "vl"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
write_vector_register (VL_REGNUM, 0, newval);
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
else if (STREQ (name, "vs"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
write_vector_register (VS_REGNUM, 0, newval);
|
|
|
|
|
else if (name[0] == 'c' || name[0] == 'C')
|
|
|
|
|
write_comm_register (atoi (&name[1]), newval);
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
else if (STREQ (name, "vm"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
error ("can't assign to $vm");
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
offset /= bitsize / 8;
|
|
|
|
|
write_vector_register (name[1] - '0', offset, newval);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Print an integer value when no format was specified. gdb normally
|
|
|
|
|
prints these values in decimal, but the the leading 0x80000000 of
|
|
|
|
|
pointers produces intolerable 10-digit negative numbers.
|
|
|
|
|
If it looks like an address, print it in hex instead. */
|
|
|
|
|
|
|
|
|
|
decout (stream, type, val)
|
|
|
|
|
FILE *stream;
|
|
|
|
|
struct type *type;
|
|
|
|
|
LONGEST val;
|
|
|
|
|
{
|
|
|
|
|
long lv = val;
|
|
|
|
|
|
|
|
|
|
switch (output_radix)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
if ((lv == val || (unsigned) lv == val)
|
|
|
|
|
&& ((lv & 0xf0000000) == 0x80000000
|
|
|
|
|
|| ((lv & 0xf0000000) == 0xf0000000 && lv < STACK_END_ADDR)))
|
|
|
|
|
{
|
|
|
|
|
fprintf_filtered (stream, "%#x", lv);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 10:
|
|
|
|
|
fprintf_filtered (stream, TYPE_UNSIGNED (type) ? "%llu" : "%lld", val);
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
case 8:
|
|
|
|
|
if (TYPE_LENGTH (type) <= sizeof lv)
|
|
|
|
|
fprintf_filtered (stream, "%#o", lv);
|
|
|
|
|
else
|
|
|
|
|
fprintf_filtered (stream, "%#llo", val);
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
case 16:
|
|
|
|
|
if (TYPE_LENGTH (type) <= sizeof lv)
|
|
|
|
|
fprintf_filtered (stream, "%#x", lv);
|
|
|
|
|
else
|
|
|
|
|
fprintf_filtered (stream, "%#llx", val);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Change the default output radix to 10 or 16, or set it to 0 (heuristic).
|
|
|
|
|
This command is mostly obsolete now that the print command allows
|
|
|
|
|
formats to apply to aggregates, but is still handy occasionally. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
set_base_command (arg)
|
|
|
|
|
char *arg;
|
|
|
|
|
{
|
|
|
|
|
int new_radix;
|
|
|
|
|
|
|
|
|
|
if (!arg)
|
|
|
|
|
output_radix = 0;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
new_radix = atoi (arg);
|
|
|
|
|
if (new_radix != 10 && new_radix != 16 && new_radix != 8)
|
|
|
|
|
error ("base must be 8, 10 or 16, or null");
|
|
|
|
|
else output_radix = new_radix;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Turn pipelining on or off in the inferior. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
set_pipelining_command (arg)
|
|
|
|
|
char *arg;
|
|
|
|
|
{
|
|
|
|
|
if (!arg)
|
|
|
|
|
{
|
|
|
|
|
sequential = !sequential;
|
|
|
|
|
printf_filtered ("%s\n", sequential ? "off" : "on");
|
|
|
|
|
}
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
else if (STREQ (arg, "on"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
sequential = 0;
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
else if (STREQ (arg, "off"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
sequential = 1;
|
|
|
|
|
else error ("valid args are `on', to allow instructions to overlap, or\n\
|
|
|
|
|
`off', to prevent it and thereby pinpoint exceptions.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Enable, disable, or force parallel execution in the inferior. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
set_parallel_command (arg)
|
|
|
|
|
char *arg;
|
|
|
|
|
{
|
|
|
|
|
struct rlimit rl;
|
|
|
|
|
int prevparallel = parallel;
|
|
|
|
|
|
|
|
|
|
if (!strncmp (arg, "fixed", strlen (arg)))
|
|
|
|
|
parallel = 2;
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
else if (STREQ (arg, "on"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
parallel = 1;
|
* defs.h (STRCMP, STREQ, STREQN): New macros.
* defs.h (demangle_and_match): Remove prototype.
* dwarfread.c (STREQ, STREQN): Remove macros, replaced with STREQ
and STREQN defined in defs.h.
* dwarfread.c (set_cu_language): For completely unknown languages,
try to deduce the language from the filename. Retain behavior
that for known languages we don't know how to handle, we use
language_unknown.
* dwarfread.c (enum_type, symthesize_typedef): Initialize language
and demangled name fields in symbol.
* dwarfread.c, mipsread.c, partial-stab.h: For all usages of
ADD_PSYMBOL_TO_LIST, add language and objfile parameters.
* dwarfread.c (new_symbol): Attempt to demangle C++ symbol names
and cache the results in SYMBOL_DEMANGLED_NAME for the symbol.
* elfread.c (STREQ): Remove macro, use STREQ defined in defs.h.
Replace usages throughout.
* elfread.c (demangle.h): Include.
* elfread.c (record_minimal_symbol): Remove prototype and function.
* gdbtypes.h, symtab.h (B_SET, B_CLR, B_TST, B_TYPE, B_BYTES,
B_CLRALL): Moved from symtab.h to gdbtypes.h.
* infcmd.c (jump_command): Remove code to demangle name and add
it to a cleanup list. Now just use SYMBOL_DEMANGLED_NAME.
* minsyms.c (demangle.h): Include.
* minsyms.c (lookup_minimal_symbol): Indent comment to match code.
* minsyms.c (install_minimal_symbols): Attempt to demangle symbol
names as C++ names, and cache them in SYMBOL_DEMANGLED_NAME.
* mipsread.c (psymtab_language): Add static variable.
* stabsread.c (demangle.h): Include.
* stabsread.c (define_symbol): Attempt to demangle C++ symbol
names and cache them in the SYMBOL_DEMANGLED_NAME field.
* stack.c (return_command): Remove explicit demangling of name
and use of cleanups. Just use SYMBOL_DEMANGLED_NAME.
* symfile.c (demangle.h): Include.
* symfile.c (add_psymbol_to_list, add_psymbol_addr_to_list): Fix
to match macros in symfile.h and allow them to be compiled
if INLINE_ADD_PSYMBOL is not true.
* symfile.h (INLINE_ADD_PSYMBOL): Default to true if not set.
* symfile.h (ADD_PSYMBOL_*): Add language and objfile parameters.
Add code to demangle and cache C++ symbol names. Use macro form
if INLINE_ADD_PSYMBOL is true, otherwise use C function form.
* symmisc.c (add_psymbol_to_list, add_psymbol_addr_to_list):
Remove, also defined in symfile.c, which we already fixed.
* symtab.c (expensive_mangler): Remove prototype and function.
* symtab.c (find_methods): Remove physnames parameter and fix
prototype to match.
* symtab.c (completion_list_add_symbol): Name changed to
completion_list_add_name.
* symtab.c (COMPLETION_LIST_ADD_SYMBOL): New macro, adds both
the normal symbol name and the cached C++ demangled name.
* symtab.c (lookup_demangled_partial_symbol,
lookup_demangled_block_symbol): Remove prototypes and functions.
* symtab.c (lookup_symbol): Remove use of expensive_mangler,
use lookup_block_symbol instead of lookup_demangled_block_symbol.
Remove code to try demangling names and matching them.
* symtab.c (lookup_partial_symbol, lookup_block_symbol):
Fix to try matching the cached demangled name if no match is
found using the regular symbol name.
* symtab.c (find_methods): Remove unused physnames array.
* symtab.c (name_match, NAME_MATCH): Remove function and macro,
replaced with SYMBOL_MATCHES_REGEXP from symtab.h.
* symtab.c (completion_list_add_symbol): Rewrite to use cached
C++ demangled symbol names.
* symtab.h: Much reformatting of structures and such to add
whitespace to make them more readable, and make them more
consistent with other gdb structure definitions.
* symtab.h (general_symbol_info): New struct containing fields
common to all symbols.
* symtab.h (SYMBOL_LANGUAGE, SYMBOL_DEMANGLED_NAME,
SYMBOL_SOURCE_NAME, SYMBOL_LINKAGE_NAME, SYMBOL_MATCHES_NAME,
SYMBOL_MATCHES_REGEXP, MSYMBOL_INFO, MSYMBOL_TYPE): New macros.
* symtab. (struct minimal_symbol, struct partial_symbol, struct
symbol): Use general_symbol_info struct.
* utils.c (demangle_and_match): Remove, no longer used.
* valops.c (demangle.h): Include.
* xcoffexec.c (eq): Remove macro, replace usages with STREQ.
* blockframe.c, breakpoint.c, c-exp.y, c-valprint.c, dbxread.c,
infcmd.c, m2-exp.y, minsyms.c, objfiles.h, solib.c, stack.c,
symmisc.c, symtab.c, valops.c: Replace references to minimal
symbol fields with appropriate macros.
* breakpoint.c, buildsym.c, c-exp.y, c-typeprint.c, c-valprint.c,
coffread.c, command.c, convex-tdep.c, cp-valprint.c, dbxread.c,
demangle.c, elfread.c, energize.c, environ.c, exec.c,
gdbtypes.c, i960-tdep.c, infrun.c, infrun-hacked.c, language.c,
main.c, minsyms.c, mipsread.c, partial-stab.h, remote-es1800.c,
remote-nindy.c, remote-udi.c, rs6000-tdep.c, solib.c, source.c,
sparc-pinsn.c, stabsread.c, standalone.c, state.c, stuff.c,
symfile.c, symmisc.c, symtab.c, symtab.h, tm-sysv4.h,
tm-ultra3.h, values.c, xcoffexec.c, xcoffread.c: Replace strcmp
and strncmp usages with STREQ, STREQN, or STRCMP as appropriate.
* breakpoint.c, buildsym.c, c-typeprint.c, expprint.c, findvar.c,
mipsread.c, printcmd.c, source.c, stabsread.c, stack.c,
symmisc.c, tm-29k.h, valops.c, values.c: Replace SYMBOL_NAME
references with SYMBOL_SOURCE_NAME or SYMBOL_LINKAGE_NAME as
appropriate.
* buildsym.c (start_subfile, patch_subfile_names): Default the
source language to what can be deduced from the filename.
* buildsym.c (end_symtab): Update the source language in the
allocated symtab to match what we have been using.
* buildsym.h (struct subfile): Add a language field.
* c-typeprint.c (c_print_type): Remove code to do explicit
demangling.
* dbxread.c (psymtab_language): Add static variable.
* dbxread.c (start_psymtab): Initialize psymtab_language using
deduce_language_from_filename.
1992-12-23 14:34:57 +08:00
|
|
|
|
else if (STREQ (arg, "off"))
|
1991-03-29 00:28:29 +08:00
|
|
|
|
parallel = 0;
|
|
|
|
|
else error ("valid args are `on', to allow multiple threads, or\n\
|
|
|
|
|
`fixed', to force multiple threads, or\n\
|
|
|
|
|
`off', to run with one thread only.");
|
|
|
|
|
|
|
|
|
|
if ((prevparallel == 0) != (parallel == 0) && inferior_pid)
|
|
|
|
|
printf_filtered ("will take effect at next run.\n");
|
|
|
|
|
|
|
|
|
|
getrlimit (RLIMIT_CONCUR, &rl);
|
|
|
|
|
rl.rlim_cur = parallel ? rl.rlim_max : 1;
|
|
|
|
|
setrlimit (RLIMIT_CONCUR, &rl);
|
|
|
|
|
|
|
|
|
|
if (inferior_pid)
|
|
|
|
|
set_fixed_scheduling (inferior_pid, parallel == 2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Add a new name for an existing command. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
alias_command (arg)
|
|
|
|
|
char *arg;
|
|
|
|
|
{
|
|
|
|
|
static char *aliaserr = "usage is `alias NEW OLD', no args allowed";
|
|
|
|
|
char *newname = arg;
|
|
|
|
|
struct cmd_list_element *new, *old;
|
|
|
|
|
|
|
|
|
|
if (!arg)
|
|
|
|
|
error_no_arg ("newname oldname");
|
|
|
|
|
|
|
|
|
|
new = lookup_cmd (&arg, cmdlist, "", -1);
|
|
|
|
|
if (new && !strncmp (newname, new->name, strlen (new->name)))
|
|
|
|
|
{
|
|
|
|
|
newname = new->name;
|
|
|
|
|
if (!(*arg == '-'
|
|
|
|
|
|| (*arg >= 'a' && *arg <= 'z')
|
|
|
|
|
|| (*arg >= 'A' && *arg <= 'Z')
|
|
|
|
|
|| (*arg >= '0' && *arg <= '9')))
|
|
|
|
|
error (aliaserr);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
arg = newname;
|
|
|
|
|
while (*arg == '-'
|
|
|
|
|
|| (*arg >= 'a' && *arg <= 'z')
|
|
|
|
|
|| (*arg >= 'A' && *arg <= 'Z')
|
|
|
|
|
|| (*arg >= '0' && *arg <= '9'))
|
|
|
|
|
arg++;
|
|
|
|
|
if (*arg != ' ' && *arg != '\t')
|
|
|
|
|
error (aliaserr);
|
|
|
|
|
*arg = '\0';
|
|
|
|
|
arg++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
old = lookup_cmd (&arg, cmdlist, "", 0);
|
|
|
|
|
|
|
|
|
|
if (*arg != '\0')
|
|
|
|
|
error (aliaserr);
|
|
|
|
|
|
|
|
|
|
if (new && !strncmp (newname, new->name, strlen (new->name)))
|
|
|
|
|
{
|
|
|
|
|
char *tem;
|
|
|
|
|
if (new->class == (int) class_user || new->class == (int) class_alias)
|
|
|
|
|
tem = "Redefine command \"%s\"? ";
|
|
|
|
|
else
|
|
|
|
|
tem = "Really redefine built-in command \"%s\"? ";
|
|
|
|
|
if (!query (tem, new->name))
|
|
|
|
|
error ("Command \"%s\" not redefined.", new->name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
add_com (newname, class_alias, old->function, old->doc);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Print the current thread number, and any threads with signals in the
|
|
|
|
|
queue. */
|
|
|
|
|
|
|
|
|
|
thread_info ()
|
|
|
|
|
{
|
|
|
|
|
struct threadpid *p;
|
|
|
|
|
|
|
|
|
|
if (have_inferior_p ())
|
|
|
|
|
{
|
|
|
|
|
ps.pi_buffer = (char *) &comm_registers;
|
|
|
|
|
ps.pi_nbytes = sizeof comm_registers;
|
|
|
|
|
ps.pi_offset = 0;
|
|
|
|
|
ps.pi_thread = inferior_thread;
|
|
|
|
|
ioctl (inferior_fd, PIXRDCREGS, &ps);
|
|
|
|
|
}
|
|
|
|
|
|
* target.h: Add enum target_waitkind, enum target_signal, and
struct target_waitstatus. Change status argument to target_wait to
be struct target_waitstatus * instead of int *.
* target.h, infrun.c, all targets: Change type of signal arguments
to resume(), proceed(), and target_resume() from int to enum
target_signal.
* All targets (*_wait, *_resume): Change accordingly.
* infcmd.c (program_info, signal_command), throughout infrun.c,
* fork-child.c, solib.c, hppa-tdep.c, osfsolib.c: Use this stuff.
* convex-xdep.c, convex-tdep.c: Add FIXME's (getting the Convex
signal code stuff right with the new signals would be non-trivial).
* inferior.h (stop_signal): Make it enum target_signal not int.
* target.c, target.h (target_signal_to_string, target_signal_to_name,
target_signal_from_name): New functions.
* inftarg.c, target.h (target_signal_to_host, target_signal_from_host,
store_waitstatus): New functions.
* procfs.c (procfs_notice_signals): Use them.
* i960-tdep.c (i960_fault_to_signal): New function, to replace
print_fault.
* config/i960/tm-i960.h: Don't define PRINT_RANDOM_SIGNAL.
1994-01-05 05:53:53 +08:00
|
|
|
|
/* FIXME: stop_signal is from target.h but stop_sigcode is a
|
|
|
|
|
convex-specific thing. */
|
1991-03-29 00:28:29 +08:00
|
|
|
|
printf_filtered ("Current thread %d stopped with signal %d.%d (%s).\n",
|
|
|
|
|
inferior_thread, stop_signal, stop_sigcode,
|
|
|
|
|
subsig_name (stop_signal, stop_sigcode));
|
|
|
|
|
|
|
|
|
|
for (p = signal_stack; p->pid; p--)
|
|
|
|
|
printf_filtered ("Thread %d stopped with signal %d.%d (%s).\n",
|
|
|
|
|
p->thread, p->signo, p->subsig,
|
|
|
|
|
subsig_name (p->signo, p->subsig));
|
|
|
|
|
|
|
|
|
|
if (iscrlbit (comm_registers.crctl.lbits.cc, 64+13))
|
|
|
|
|
printf_filtered ("New thread start pc %#x\n",
|
|
|
|
|
(long) (comm_registers.crreg.pcpsw >> 32));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Return string describing a signal.subcode number */
|
|
|
|
|
|
|
|
|
|
static char *
|
|
|
|
|
subsig_name (signo, subcode)
|
|
|
|
|
int signo, subcode;
|
|
|
|
|
{
|
|
|
|
|
static char *subsig4[] = {
|
|
|
|
|
"error exit", "privileged instruction", "unknown",
|
|
|
|
|
"unknown", "undefined opcode",
|
|
|
|
|
0};
|
|
|
|
|
static char *subsig5[] = {0,
|
|
|
|
|
"breakpoint", "single step", "fork trap", "exec trap", "pfork trap",
|
|
|
|
|
"join trap", "idle trap", "last thread", "wfork trap",
|
|
|
|
|
"process breakpoint", "trap instruction",
|
|
|
|
|
0};
|
|
|
|
|
static char *subsig8[] = {0,
|
|
|
|
|
"int overflow", "int divide check", "float overflow",
|
|
|
|
|
"float divide check", "float underflow", "reserved operand",
|
|
|
|
|
"sqrt error", "exp error", "ln error", "sin error", "cos error",
|
|
|
|
|
0};
|
|
|
|
|
static char *subsig10[] = {0,
|
|
|
|
|
"invalid inward ring address", "invalid outward ring call",
|
|
|
|
|
"invalid inward ring return", "invalid syscall gate",
|
|
|
|
|
"invalid rtn frame length", "invalid comm reg address",
|
|
|
|
|
"invalid trap gate",
|
|
|
|
|
0};
|
|
|
|
|
static char *subsig11[] = {0,
|
|
|
|
|
"read access denied", "write access denied", "execute access denied",
|
|
|
|
|
"segment descriptor fault", "page table fault", "data reference fault",
|
|
|
|
|
"i/o access denied", "levt pte invalid",
|
|
|
|
|
0};
|
|
|
|
|
|
|
|
|
|
static char **subsig_list[] =
|
|
|
|
|
{0, 0, 0, 0, subsig4, subsig5, 0, 0, subsig8, 0, subsig10, subsig11, 0};
|
|
|
|
|
|
|
|
|
|
int i;
|
1992-04-23 00:46:47 +08:00
|
|
|
|
char *p;
|
1991-03-29 00:28:29 +08:00
|
|
|
|
|
1992-04-23 00:46:47 +08:00
|
|
|
|
if ((p = strsignal (signo)) == NULL)
|
|
|
|
|
p = "unknown";
|
1991-03-29 00:28:29 +08:00
|
|
|
|
if (signo >= (sizeof subsig_list / sizeof *subsig_list)
|
|
|
|
|
|| !subsig_list[signo])
|
|
|
|
|
return p;
|
|
|
|
|
for (i = 1; subsig_list[signo][i]; i++)
|
|
|
|
|
if (i == subcode)
|
|
|
|
|
return subsig_list[signo][subcode];
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Print a compact display of thread status, essentially x/i $pc
|
|
|
|
|
for all active threads. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
threadstat ()
|
|
|
|
|
{
|
|
|
|
|
int t;
|
|
|
|
|
|
|
|
|
|
for (t = 0; t < n_threads; t++)
|
|
|
|
|
if (thread_state[t] == PI_TALIVE)
|
|
|
|
|
{
|
|
|
|
|
printf_filtered ("%d%c %08x%c %d.%d ", t,
|
|
|
|
|
(t == inferior_thread ? '*' : ' '), thread_pc[t],
|
|
|
|
|
(thread_is_in_kernel[t] ? '#' : ' '),
|
|
|
|
|
thread_signal[t], thread_sigcode[t]);
|
|
|
|
|
print_insn (thread_pc[t], stdout);
|
|
|
|
|
printf_filtered ("\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Change the current thread to ARG. */
|
|
|
|
|
|
|
|
|
|
set_thread_command (arg)
|
|
|
|
|
char *arg;
|
|
|
|
|
{
|
|
|
|
|
int thread;
|
|
|
|
|
|
|
|
|
|
if (!arg)
|
|
|
|
|
{
|
|
|
|
|
threadstat ();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
thread = parse_and_eval_address (arg);
|
|
|
|
|
|
|
|
|
|
if (thread < 0 || thread > n_threads || thread_state[thread] != PI_TALIVE)
|
|
|
|
|
error ("no such thread.");
|
|
|
|
|
|
|
|
|
|
select_thread (thread);
|
|
|
|
|
|
|
|
|
|
stop_pc = read_pc ();
|
|
|
|
|
flush_cached_frames ();
|
|
|
|
|
select_frame (get_current_frame (), 0);
|
1991-09-11 10:49:50 +09:00
|
|
|
|
print_stack_frame (selected_frame, selected_frame_level, -1);
|
1991-03-29 00:28:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Here on CONT command; gdb's dispatch address is changed to come here.
|
|
|
|
|
Set global variable ALL_CONTINUE to tell resume() that it should
|
|
|
|
|
start up all threads, and that a thread switch will not blow gdb's
|
|
|
|
|
mind. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
convex_cont_command (proc_count_exp, from_tty)
|
|
|
|
|
char *proc_count_exp;
|
|
|
|
|
int from_tty;
|
|
|
|
|
{
|
|
|
|
|
all_continue = 1;
|
|
|
|
|
cont_command (proc_count_exp, from_tty);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Here on 1CONT command. Resume only the current thread. */
|
|
|
|
|
|
|
|
|
|
one_cont_command (proc_count_exp, from_tty)
|
|
|
|
|
char *proc_count_exp;
|
|
|
|
|
int from_tty;
|
|
|
|
|
{
|
|
|
|
|
cont_command (proc_count_exp, from_tty);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Print the contents and lock bits of all communication registers,
|
|
|
|
|
or just register ARG if ARG is a communication register,
|
|
|
|
|
or the 3-word resource structure in memory at address ARG. */
|
|
|
|
|
|
|
|
|
|
comm_registers_info (arg)
|
|
|
|
|
char *arg;
|
|
|
|
|
{
|
|
|
|
|
int i, regnum;
|
|
|
|
|
|
|
|
|
|
if (arg)
|
|
|
|
|
{
|
1991-09-19 07:24:51 +08:00
|
|
|
|
if (sscanf (arg, "$c%d", ®num) == 1) {
|
1991-03-29 00:28:29 +08:00
|
|
|
|
;
|
1991-09-19 07:24:51 +08:00
|
|
|
|
} else if (sscanf (arg, "$C%d", ®num) == 1) {
|
1991-03-29 00:28:29 +08:00
|
|
|
|
;
|
1991-09-19 07:24:51 +08:00
|
|
|
|
} else {
|
1991-03-29 00:28:29 +08:00
|
|
|
|
regnum = parse_and_eval_address (arg);
|
1991-09-19 07:24:51 +08:00
|
|
|
|
if (regnum > 0)
|
|
|
|
|
regnum &= ~0x8000;
|
|
|
|
|
}
|
1991-03-29 00:28:29 +08:00
|
|
|
|
|
|
|
|
|
if (regnum >= 64)
|
|
|
|
|
error ("%s: invalid register name.", arg);
|
|
|
|
|
|
|
|
|
|
/* if we got a (user) address, examine the resource struct there */
|
|
|
|
|
|
|
|
|
|
if (regnum < 0)
|
|
|
|
|
{
|
|
|
|
|
static int buf[3];
|
|
|
|
|
read_memory (regnum, buf, sizeof buf);
|
|
|
|
|
printf_filtered ("%08x %08x%08x%s\n", regnum, buf[1], buf[2],
|
|
|
|
|
buf[0] & 0xff ? " locked" : "");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ps.pi_buffer = (char *) &comm_registers;
|
|
|
|
|
ps.pi_nbytes = sizeof comm_registers;
|
|
|
|
|
ps.pi_offset = 0;
|
|
|
|
|
ps.pi_thread = inferior_thread;
|
|
|
|
|
ioctl (inferior_fd, PIXRDCREGS, &ps);
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 64; i++)
|
|
|
|
|
if (!arg || i == regnum)
|
|
|
|
|
printf_filtered ("%2d 0x8%03x %016llx%s\n", i, i,
|
|
|
|
|
comm_registers.crreg.r4[i],
|
|
|
|
|
(iscrlbit (comm_registers.crctl.lbits.cc, i)
|
|
|
|
|
? " locked" : ""));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Print the psw */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
psw_info (arg)
|
|
|
|
|
char *arg;
|
|
|
|
|
{
|
|
|
|
|
struct pswbit
|
|
|
|
|
{
|
|
|
|
|
int bit;
|
|
|
|
|
int pos;
|
|
|
|
|
char *text;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct pswbit pswbit[] =
|
|
|
|
|
{
|
|
|
|
|
{ 0x80000000, -1, "A carry" },
|
|
|
|
|
{ 0x40000000, -1, "A integer overflow" },
|
|
|
|
|
{ 0x20000000, -1, "A zero divide" },
|
|
|
|
|
{ 0x10000000, -1, "Integer overflow enable" },
|
|
|
|
|
{ 0x08000000, -1, "Trace" },
|
|
|
|
|
{ 0x06000000, 25, "Frame length" },
|
|
|
|
|
{ 0x01000000, -1, "Sequential" },
|
|
|
|
|
{ 0x00800000, -1, "S carry" },
|
|
|
|
|
{ 0x00400000, -1, "S integer overflow" },
|
|
|
|
|
{ 0x00200000, -1, "S zero divide" },
|
|
|
|
|
{ 0x00100000, -1, "Zero divide enable" },
|
|
|
|
|
{ 0x00080000, -1, "Floating underflow" },
|
|
|
|
|
{ 0x00040000, -1, "Floating overflow" },
|
|
|
|
|
{ 0x00020000, -1, "Floating reserved operand" },
|
|
|
|
|
{ 0x00010000, -1, "Floating zero divide" },
|
|
|
|
|
{ 0x00008000, -1, "Floating error enable" },
|
|
|
|
|
{ 0x00004000, -1, "Floating underflow enable" },
|
|
|
|
|
{ 0x00002000, -1, "IEEE" },
|
|
|
|
|
{ 0x00001000, -1, "Sequential stores" },
|
|
|
|
|
{ 0x00000800, -1, "Intrinsic error" },
|
|
|
|
|
{ 0x00000400, -1, "Intrinsic error enable" },
|
|
|
|
|
{ 0x00000200, -1, "Trace thread creates" },
|
|
|
|
|
{ 0x00000100, -1, "Thread init trap" },
|
|
|
|
|
{ 0x000000e0, 5, "Reserved" },
|
|
|
|
|
{ 0x0000001f, 0, "Intrinsic error code" },
|
|
|
|
|
{0, 0, 0},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
long psw;
|
|
|
|
|
struct pswbit *p;
|
|
|
|
|
|
|
|
|
|
if (arg)
|
|
|
|
|
psw = parse_and_eval_address (arg);
|
|
|
|
|
else
|
|
|
|
|
psw = read_register (PS_REGNUM);
|
|
|
|
|
|
|
|
|
|
for (p = pswbit; p->bit; p++)
|
|
|
|
|
{
|
|
|
|
|
if (p->pos < 0)
|
|
|
|
|
printf_filtered ("%08x %s %s\n", p->bit,
|
|
|
|
|
(psw & p->bit) ? "yes" : "no ", p->text);
|
|
|
|
|
else
|
|
|
|
|
printf_filtered ("%08x %3d %s\n", p->bit,
|
|
|
|
|
(psw & p->bit) >> p->pos, p->text);
|
|
|
|
|
}
|
|
|
|
|
}
|
General cleanup and simplication of disassembler interface.
* a29k-pinsn.c, arm-pinsn.c, convex-pinsn.c, gould-pinsn.c,
hppa-pinsn.c, i386-pinsn.c, i960-pinsn.c, m68k-pinsn.c,
m88k-pinsn.c, mips-pinsn.c, ns32k-pinsn.c, pyr-pinsn.c,
rs6000-pinsn.c, sparc-pinsn.c, tahoe-pinsn.c, vax-pinsn.c: Remove.
* gould-tdep.c, ns32k-tdep.c, tahoe-tdep.c, vax-tdep.c: New files,
had been -pinsn.c files.
* Makefile.in (ALLDEPFILES): Remove removed files.
(a29k-pinsn.o, arm-pinsn.o, convex-pinsn.o, gould-pinsn.o,
hppa-pinsn.o, i386-pinsn.o, i960-pinsn.o, m68k-pinsn.o,
m88k-pinsn.o, mips-pinsn.o, ns32k-pinsn.o, pyr-pinsn.o,
rs6000-pinsn.o, sparc-pinsn.o, tahoe-pinsn.o, vax-pinsn.o):
Remove compile actions.
* arm-tdep.o, gould-tdep.o, ns32k-tdep.o, tahoe-tdep.o,
vax-tdep.o: Add compile actions.
* defs.h (tm_print_insn): New global.
* a29k-tdep.c (gdb_print_insn_a29k): New function.
(_initialize_a29k_tdep): Rename from _initialize_29k,
set tm_print_insn.
* alpha-tdep.c (print_insn): Remove.
(_initialize_alpha_tdep): Set tm_print_insn.
* arm-tdep.c (arm_print_insn): New function, was print_insn
in arm-pinsn.c.
* convex-tdep.c (convex_print_insn): New function, was print_insn
in convex-pinsn.c.
* h8300-tdep.c (print_insn): Remove.
(gdb_print_insn_h8300): New function.
(_initialize_h8300_tdep): New function.
* h8500-tdep.c (print_insn): Remove.
(_initialize_h8500_tdep): New function.
* hppa-tdep.c (_initialize_hppa_tdep): Set tm_print_insn.
* i386-tdep.c (_initialize_i386_tdep): New function.
* i960-tdep.c (mem, next_insn): New functions, were in
i960-pinsn.c.
(_initialize_i960_tdep): Set tm_print_insn.
* m68k-tdep.c (_initialize_m68k_tdep): New function.
* m88k-tdep.c (_initialize_m88k_tdep): New function.
* mips-tdep.c (gdb_print_insn_mips): New function.
(_initialize_mips_tdep): Set tm_print_insn.
* pyr-tdep.c (pyr_print_insn): New function, was print_insn
in pyr-pinsn.c.
* rs6000-tdep.c (_initialize_rs6000_tdep): New function.
* sh-tdep.c (print_insn): Remove.
(gdb_print_insn_sh): New function.
(_initialize_sh_tdep): Set tm_print_insn.
* sparc-tdep.c (_initialize_sparc_tdep): New function.
* w65-tdep.c (print_insn): Remove.
(_initialize_w65_tdep): New function.
* z8k-tdep.c (print_insn): Remove.
(gdb_print_insn_z8k): New function.
(_initialize_z8k_tdep): Set tm_print_insn.
* printcmd.c (print_insn): New function, generic disassembler.
* config/*/*.mt (TDEPFILES): Remove refs to *-pinsn.o.
* defs.h (query_hook, error_hook): Fix prototypes.
1995-01-17 12:36:51 +08:00
|
|
|
|
|
|
|
|
|
#include "symtab.h"
|
|
|
|
|
|
|
|
|
|
/* reg (fmt_field, inst_field) --
|
|
|
|
|
the {first,second,third} operand of instruction as fmt_field = [ijk]
|
|
|
|
|
gets the value of the field from the [ijk] position of the instruction */
|
|
|
|
|
|
|
|
|
|
#define reg(a,b) ((char (*)[3])(op[fmt->a]))[inst.f0.b]
|
|
|
|
|
|
|
|
|
|
/* lit (fmt_field) -- field [ijk] is a literal (PSW, VL, eg) */
|
|
|
|
|
|
|
|
|
|
#define lit(i) op[fmt->i]
|
|
|
|
|
|
|
|
|
|
/* aj[j] -- name for A register j */
|
|
|
|
|
|
|
|
|
|
#define aj ((char (*)[3])(op[A]))
|
|
|
|
|
|
|
|
|
|
union inst {
|
|
|
|
|
struct {
|
|
|
|
|
unsigned : 7;
|
|
|
|
|
unsigned i : 3;
|
|
|
|
|
unsigned j : 3;
|
|
|
|
|
unsigned k : 3;
|
|
|
|
|
unsigned : 16;
|
|
|
|
|
unsigned : 32;
|
|
|
|
|
} f0;
|
|
|
|
|
struct {
|
|
|
|
|
unsigned : 8;
|
|
|
|
|
unsigned indir : 1;
|
|
|
|
|
unsigned len : 1;
|
|
|
|
|
unsigned j : 3;
|
|
|
|
|
unsigned k : 3;
|
|
|
|
|
unsigned : 16;
|
|
|
|
|
unsigned : 32;
|
|
|
|
|
} f1;
|
|
|
|
|
unsigned char byte[8];
|
|
|
|
|
unsigned short half[4];
|
|
|
|
|
char signed_byte[8];
|
|
|
|
|
short signed_half[4];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct opform {
|
|
|
|
|
int mask; /* opcode mask */
|
|
|
|
|
int shift; /* opcode align */
|
|
|
|
|
struct formstr *formstr[3]; /* ST, E0, E1 */
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct formstr {
|
|
|
|
|
unsigned lop:8, rop:5; /* opcode */
|
|
|
|
|
unsigned fmt:5; /* inst format */
|
|
|
|
|
unsigned i:5, j:5, k:2; /* operand formats */
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#include "opcode/convex.h"
|
|
|
|
|
|
|
|
|
|
CONST unsigned char formdecode [] = {
|
|
|
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
|
|
|
|
9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
|
|
|
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
|
|
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
|
|
|
|
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
|
|
|
|
|
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
|
|
|
|
|
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
|
|
|
|
|
4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
CONST struct opform opdecode[] = {
|
|
|
|
|
0x7e00, 9, format0, e0_format0, e1_format0,
|
|
|
|
|
0x3f00, 8, format1, e0_format1, e1_format1,
|
|
|
|
|
0x1fc0, 6, format2, e0_format2, e1_format2,
|
|
|
|
|
0x0fc0, 6, format3, e0_format3, e1_format3,
|
|
|
|
|
0x0700, 8, format4, e0_format4, e1_format4,
|
|
|
|
|
0x03c0, 6, format5, e0_format5, e1_format5,
|
|
|
|
|
0x01f8, 3, format6, e0_format6, e1_format6,
|
|
|
|
|
0x00f8, 3, format7, e0_format7, e1_format7,
|
|
|
|
|
0x0000, 0, formatx, formatx, formatx,
|
|
|
|
|
0x0f80, 7, formatx, formatx, formatx,
|
|
|
|
|
0x0f80, 7, formatx, formatx, formatx,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Print the instruction at address MEMADDR in debugged memory,
|
|
|
|
|
on STREAM. Returns length of the instruction, in bytes. */
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
convex_print_insn (memaddr, stream)
|
|
|
|
|
CORE_ADDR memaddr;
|
|
|
|
|
FILE *stream;
|
|
|
|
|
{
|
|
|
|
|
union inst inst;
|
|
|
|
|
struct formstr *fmt;
|
|
|
|
|
register int format, op1, pfx;
|
|
|
|
|
int l;
|
|
|
|
|
|
|
|
|
|
read_memory (memaddr, &inst, sizeof inst);
|
|
|
|
|
|
|
|
|
|
/* Remove and note prefix, if present */
|
|
|
|
|
|
|
|
|
|
pfx = inst.half[0];
|
|
|
|
|
if ((pfx & 0xfff0) == 0x7ef0)
|
|
|
|
|
{
|
|
|
|
|
pfx = ((pfx >> 3) & 1) + 1;
|
|
|
|
|
*(long long *) &inst = *(long long *) &inst.half[1];
|
|
|
|
|
}
|
|
|
|
|
else pfx = 0;
|
|
|
|
|
|
|
|
|
|
/* Split opcode into format.op1 and look up in appropriate table */
|
|
|
|
|
|
|
|
|
|
format = formdecode[inst.byte[0]];
|
|
|
|
|
op1 = (inst.half[0] & opdecode[format].mask) >> opdecode[format].shift;
|
|
|
|
|
if (format == 9)
|
|
|
|
|
{
|
|
|
|
|
if (pfx)
|
|
|
|
|
fmt = formatx;
|
|
|
|
|
else if (inst.f1.j == 0)
|
|
|
|
|
fmt = &format1a[op1];
|
|
|
|
|
else if (inst.f1.j == 1)
|
|
|
|
|
fmt = &format1b[op1];
|
|
|
|
|
else
|
|
|
|
|
fmt = formatx;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
fmt = &opdecode[format].formstr[pfx][op1];
|
|
|
|
|
|
|
|
|
|
/* Print it */
|
|
|
|
|
|
|
|
|
|
if (fmt->fmt == xxx)
|
|
|
|
|
{
|
|
|
|
|
/* noninstruction */
|
|
|
|
|
fprintf (stream, "0x%04x", pfx ? pfx : inst.half[0]);
|
|
|
|
|
return 2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (pfx)
|
|
|
|
|
pfx = 2;
|
|
|
|
|
|
|
|
|
|
fprintf (stream, "%s%s%s", lop[fmt->lop], rop[fmt->rop],
|
|
|
|
|
&" "[strlen(lop[fmt->lop]) + strlen(rop[fmt->rop])]);
|
|
|
|
|
|
|
|
|
|
switch (fmt->fmt)
|
|
|
|
|
{
|
|
|
|
|
case rrr: /* three register */
|
|
|
|
|
fprintf (stream, "%s,%s,%s", reg(i,i), reg(j,j), reg(k,k));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case rr: /* two register */
|
|
|
|
|
fprintf (stream, "%s,%s", reg(i,j), reg(j,k));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case rxr: /* two register, reversed i and j fields */
|
|
|
|
|
fprintf (stream, "%s,%s", reg(i,k), reg(j,j));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case r: /* one register */
|
|
|
|
|
fprintf (stream, "%s", reg(i,k));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case nops: /* no operands */
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case nr: /* short immediate, one register */
|
|
|
|
|
fprintf (stream, "#%d,%s", inst.f0.j, reg(i,k));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case pcrel: /* pc relative */
|
|
|
|
|
print_address (memaddr + 2 * inst.signed_byte[1], stream);
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case lr: /* literal, one register */
|
|
|
|
|
fprintf (stream, "%s,%s", lit(i), reg(j,k));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case rxl: /* one register, literal */
|
|
|
|
|
fprintf (stream, "%s,%s", reg(i,k), lit(j));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case rlr: /* register, literal, register */
|
|
|
|
|
fprintf (stream, "%s,%s,%s", reg(i,j), lit(j), reg(k,k));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case rrl: /* register, register, literal */
|
|
|
|
|
fprintf (stream, "%s,%s,%s", reg(i,j), reg(j,k), lit(k));
|
|
|
|
|
return pfx + 2;
|
|
|
|
|
|
|
|
|
|
case iml: /* immediate, literal */
|
|
|
|
|
if (inst.f1.len)
|
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "#%#x,%s",
|
|
|
|
|
(inst.signed_half[1] << 16) + inst.half[2], lit(i));
|
|
|
|
|
return pfx + 6;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "#%d,%s", inst.signed_half[1], lit(i));
|
|
|
|
|
return pfx + 4;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case imr: /* immediate, register */
|
|
|
|
|
if (inst.f1.len)
|
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "#%#x,%s",
|
|
|
|
|
(inst.signed_half[1] << 16) + inst.half[2], reg(i,k));
|
|
|
|
|
return pfx + 6;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fprintf (stream, "#%d,%s", inst.signed_half[1], reg(i,k));
|
|
|
|
|
return pfx + 4;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case a1r: /* memory, register */
|
|
|
|
|
l = print_effa (inst, stream);
|
|
|
|
|
fprintf (stream, ",%s", reg(i,k));
|
|
|
|
|
return pfx + l;
|
|
|
|
|
|
|
|
|
|
case a1l: /* memory, literal */
|
|
|
|
|
l = print_effa (inst, stream);
|
|
|
|
|
fprintf (stream, ",%s", lit(i));
|
|
|
|
|
return pfx + l;
|
|
|
|
|
|
|
|
|
|
case a2r: /* register, memory */
|
|
|
|
|
fprintf (stream, "%s,", reg(i,k));
|
|
|
|
|
return pfx + print_effa (inst, stream);
|
|
|
|
|
|
|
|
|
|
case a2l: /* literal, memory */
|
|
|
|
|
fprintf (stream, "%s,", lit(i));
|
|
|
|
|
return pfx + print_effa (inst, stream);
|
|
|
|
|
|
|
|
|
|
case a3: /* memory */
|
|
|
|
|
return pfx + print_effa (inst, stream);
|
|
|
|
|
|
|
|
|
|
case a4: /* system call */
|
|
|
|
|
l = 29; goto a4a5;
|
|
|
|
|
case a5: /* trap */
|
|
|
|
|
l = 27;
|
|
|
|
|
a4a5:
|
|
|
|
|
if (inst.f1.len)
|
|
|
|
|
{
|
|
|
|
|
unsigned int m = (inst.signed_half[1] << 16) + inst.half[2];
|
|
|
|
|
fprintf (stream, "#%d,#%d", m >> l, m & (-1 >> (32-l)));
|
|
|
|
|
return pfx + 6;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
unsigned int m = inst.signed_half[1];
|
|
|
|
|
fprintf (stream, "#%d,#%d", m >> l, m & (-1 >> (32-l)));
|
|
|
|
|
return pfx + 4;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* print effective address @nnn(aj), return instruction length */
|
|
|
|
|
|
|
|
|
|
int print_effa (inst, stream)
|
|
|
|
|
union inst inst;
|
|
|
|
|
FILE *stream;
|
|
|
|
|
{
|
|
|
|
|
int n, l;
|
|
|
|
|
|
|
|
|
|
if (inst.f1.len)
|
|
|
|
|
{
|
|
|
|
|
n = (inst.signed_half[1] << 16) + inst.half[2];
|
|
|
|
|
l = 6;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
n = inst.signed_half[1];
|
|
|
|
|
l = 4;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (inst.f1.indir)
|
|
|
|
|
printf ("@");
|
|
|
|
|
|
|
|
|
|
if (!inst.f1.j)
|
|
|
|
|
{
|
|
|
|
|
print_address (n, stream);
|
|
|
|
|
return l;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fprintf (stream, (n & 0xf0000000) == 0x80000000 ? "%#x(%s)" : "%d(%s)",
|
|
|
|
|
n, aj[inst.f1.j]);
|
|
|
|
|
|
|
|
|
|
return l;
|
|
|
|
|
}
|
|
|
|
|
|
1991-03-29 00:28:29 +08:00
|
|
|
|
|
* Makefile.in (init.c): Generate using the source, not munch. This
cleans up all kinds of hassles (which nm to use in munch, etc). The
new formatting conventions (mostly already followed) are that
the name of the _initialize_* routines must start in column zero,
and must not be inside #if.
* munch: Removed.
* Makefile.in: Remove references to munch.
* serial.c, remote.c, infptrace.c, maint.c, convex-tdep.c,
alpha-tdep.c, hp300ux-nat.c, hppab-nat.c, osfsolib.c, remote-es.c,
procfs.c, remote-udi.c, ser-go32.c, ultra3-xdep.c, sh-tdep.c,
i960-tdep.c, hppa-tdep.c, h8500-tdep.c, dpx2-nat.c, delta68-nat.c,
z8k-tdep.c: Make sure the above conventions are followed. Make
sure they are all declared as returning void. Clean up
miscellaneous comments and such.
1993-10-22 13:55:58 +08:00
|
|
|
|
void
|
1991-03-29 00:28:29 +08:00
|
|
|
|
_initialize_convex_dep ()
|
|
|
|
|
{
|
|
|
|
|
add_com ("alias", class_support, alias_command,
|
|
|
|
|
"Add a new name for an existing command.");
|
|
|
|
|
|
|
|
|
|
add_cmd ("base", class_vars, set_base_command,
|
|
|
|
|
"Change the integer output radix to 8, 10 or 16\n\
|
|
|
|
|
or use just `set base' with no args to return to the ad-hoc default,\n\
|
|
|
|
|
which is 16 for integers that look like addresses, 10 otherwise.",
|
|
|
|
|
&setlist);
|
|
|
|
|
|
|
|
|
|
add_cmd ("pipeline", class_run, set_pipelining_command,
|
|
|
|
|
"Enable or disable overlapped execution of instructions.\n\
|
|
|
|
|
With `set pipe off', exceptions are reported with\n\
|
|
|
|
|
$pc pointing at the instruction after the faulting one.\n\
|
|
|
|
|
The default is `set pipe on', which runs faster.",
|
|
|
|
|
&setlist);
|
|
|
|
|
|
|
|
|
|
add_cmd ("parallel", class_run, set_parallel_command,
|
|
|
|
|
"Enable or disable multi-threaded execution of parallel code.\n\
|
|
|
|
|
`set parallel off' means run the program on a single CPU.\n\
|
|
|
|
|
`set parallel fixed' means run the program with all CPUs assigned to it.\n\
|
|
|
|
|
`set parallel on' means run the program on any CPUs that are available.",
|
|
|
|
|
&setlist);
|
|
|
|
|
|
|
|
|
|
add_com ("1cont", class_run, one_cont_command,
|
|
|
|
|
"Continue the program, activating only the current thread.\n\
|
|
|
|
|
Args are the same as the `cont' command.");
|
|
|
|
|
|
|
|
|
|
add_com ("thread", class_run, set_thread_command,
|
|
|
|
|
"Change the current thread, the one under scrutiny and control.\n\
|
|
|
|
|
With no arg, show the active threads, the current one marked with *.");
|
|
|
|
|
|
|
|
|
|
add_info ("threads", thread_info,
|
|
|
|
|
"List status of active threads.");
|
|
|
|
|
|
|
|
|
|
add_info ("comm-registers", comm_registers_info,
|
|
|
|
|
"List communication registers and their contents.\n\
|
|
|
|
|
A communication register name as argument means describe only that register.\n\
|
|
|
|
|
An address as argument means describe the resource structure at that address.\n\
|
|
|
|
|
`Locked' means that the register has been sent to but not yet received from.");
|
|
|
|
|
|
|
|
|
|
add_info ("psw", psw_info,
|
|
|
|
|
"Display $ps, the processor status word, bit by bit.\n\
|
|
|
|
|
An argument means display that value's interpretation as a psw.");
|
|
|
|
|
|
|
|
|
|
add_cmd ("convex", no_class, 0, "Convex-specific commands.\n\
|
|
|
|
|
32-bit registers $pc $ps $sp $ap $fp $a1-5 $s0-7 $v0-7 $vl $vs $vm $c0-63\n\
|
|
|
|
|
64-bit registers $S0-7 $V0-7 $C0-63\n\
|
|
|
|
|
\n\
|
|
|
|
|
info threads display info on stopped threads waiting to signal\n\
|
|
|
|
|
thread display list of active threads\n\
|
|
|
|
|
thread N select thread N (its registers, stack, memory, etc.)\n\
|
|
|
|
|
step, next, etc step selected thread only\n\
|
|
|
|
|
1cont continue selected thread only\n\
|
|
|
|
|
cont continue all threads\n\
|
|
|
|
|
info comm-registers display contents of comm register(s) or a resource struct\n\
|
|
|
|
|
info psw display processor status word $ps\n\
|
|
|
|
|
set base N change integer radix used by `print' without a format\n\
|
|
|
|
|
set pipeline off exceptions are precise, $pc points after the faulting insn\n\
|
|
|
|
|
set pipeline on normal mode, $pc is somewhere ahead of faulting insn\n\
|
|
|
|
|
set parallel off program runs on a single CPU\n\
|
|
|
|
|
set parallel fixed all CPUs are assigned to the program\n\
|
|
|
|
|
set parallel on normal mode, parallel execution on random available CPUs\n\
|
|
|
|
|
",
|
|
|
|
|
&cmdlist);
|
|
|
|
|
|
|
|
|
|
}
|