mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 20:49:43 +00:00
*** empty log message ***
This commit is contained in:
parent
07d021a6ae
commit
3f2e006b77
138
gdb/ChangeLog
138
gdb/ChangeLog
@ -1,3 +1,141 @@
|
||||
Thu Apr 4 10:09:35 1991 John Gilmore (gnu at cygint.cygnus.com)
|
||||
|
||||
* tm-i386v.h (FLOAT_INFO): Don't define it, since the code
|
||||
for printing the float info is host-dependent, not
|
||||
target-dependent. FIXME.
|
||||
* i386-pinsn.c: Move #includes to top, remove useless ones.
|
||||
* i386-tdep.c: Don't bother including <.../reg.h> since we
|
||||
don't use it (and it doesn't exist on host systems).
|
||||
|
||||
* ieee-float.c (ieee_extended_to_double): Convert NaN to Inf.
|
||||
Convert negative numbers properly.
|
||||
(ieee_test): Make numbers really random; fix format arg.
|
||||
|
||||
* infcmd.c (attach_command, detach_command): Don't repeat on CR.
|
||||
* core.c (core_detach): Unpush core_ops, which might not be on
|
||||
top. We used to just pop the top, which broke things. Don't
|
||||
need dont_repeat() any more.
|
||||
(core_file_command): Psst! Don't repeat it.
|
||||
* remote-nindy.c (nindy_detach): Don't need dont_repeat() now.
|
||||
* expprint.c (print_subexp): Avoid switch fallthru on
|
||||
BINOP_ASSIGN_MODIFY, so we can print += and such.
|
||||
* frame.h: Fix typo.
|
||||
* inflow.c (kill_command): After killing inferior, print our
|
||||
current frame in the core file, if we have one.
|
||||
(generic_mourn_inferior): When inferior dies, either select
|
||||
the current frame (in the new target, e.g. core file), or
|
||||
set both the current and selected frames to NULL.
|
||||
|
||||
Changes from Peter Schauer.
|
||||
|
||||
* infptrace.c: Avoid <sys/ptrace.h> on USG.
|
||||
|
||||
* Make all file names fit in 14 characters (sigh and damn!):
|
||||
mv hp300hpux-xdep.c hp300ux-xdep.c
|
||||
mv symmetry-xdep.c symm-xdep.c
|
||||
mv symmetry-tdep.c symm-tdep.c
|
||||
mv convex-opcode.h convx-opcode.h
|
||||
mv tm-vxworks960.h tm-vx960.h
|
||||
mv tm-vxworks68.h tm-vx68.h
|
||||
mv Makefile.srcdir Makefile.sdir
|
||||
mv gdb-int.texinfo gdbint.texinfo
|
||||
mv remote-sa.m68k.shar rem-m68k.shar
|
||||
mv remote-multi.shar rem-multi.shar
|
||||
* Makefile.dist, README, config.gdb, convex-pinsn.c,
|
||||
tconfig/symmetry, tconfig/vxworks960, tconfig/vxworks68,
|
||||
xconfig/hp300hpux, xconfig/symmetry: Change names to shorter
|
||||
names.
|
||||
|
||||
* command.c (user_info_1, user_info): New command for listing
|
||||
the user-defined commands.
|
||||
|
||||
Wed Apr 3 15:00:26 1991 John Gilmore (gnu at cygint.cygnus.com)
|
||||
|
||||
* dbxread.c (really_free_pendings): Clear file_symbols
|
||||
and global_symbols after freeing them; otherwise, running
|
||||
this function twice (if it appears twice on the cleanup
|
||||
chain), we try to free things twice.
|
||||
|
||||
* dbxread.c (read_dbx_symtab): Calculate end_of_text_addr
|
||||
based on text_addr (the address of text in core), not on addr (the
|
||||
offset between text in the .o file and in core). This change
|
||||
is from Peter Schauer.
|
||||
|
||||
* main.c: Define ALL_CLEANUPS as a cast of zero.
|
||||
(return_to_top_level): Use it.
|
||||
(main): Do all cleanups after each command run as part
|
||||
of the gdb startup sequence. Also do all cleanups before
|
||||
entering the command loop, and every time we exit the command
|
||||
loop and reenter. Before, the cleanups from the startup sequence
|
||||
were being left undone until the first error!
|
||||
(command_loop): Rename do_nothing cleanup to command_loop_marker
|
||||
so we can see it easily when examining the cleanup chain.
|
||||
(init_signals): Add another do_nothing for signal handling.
|
||||
(quit_command): Only try to kill target if it has execution.
|
||||
Problems in the target stack got us into a state where
|
||||
inferior_pid was nonzero but none of the targets had execution.
|
||||
In this state you couldn't exit gdb.
|
||||
|
||||
* dbxread.c: Two changes from Peter Schauer.
|
||||
(echo_command): Fflush output after an echo command.
|
||||
(show_history): Pass all args to cmd_show_list.
|
||||
|
||||
* utils.c (init_malloc): Call mtrace to turn on tracing
|
||||
if the environment variable MALLOC_TRACE is set to a file name.
|
||||
* mtrace.c: Add source file which provides a log of every malloc,
|
||||
free, and realloc to a trace file.
|
||||
* mtrace.awk: Add source file which analyzes the trace file.
|
||||
* Makefile.dist (GNU_MALLOC, MALLOCSRC): Add mtrace.{c,o,awk}.
|
||||
(VERSION): Roll to 3.94.3.
|
||||
|
||||
* breakpoint.c (breakpoint_1): Add a space to "i watch" output.
|
||||
(check_duplicates): Don't bother with watchpoints.
|
||||
(set_raw_breakpoint): Comment about danger of this routine.
|
||||
(watch_command): Parse and eval all args before calling
|
||||
set_raw_breakpoint.
|
||||
|
||||
* solib.c (find_solib): Avoid error in referencing memory to
|
||||
see if any more shared libraries have been added. This is
|
||||
particularly useful if the target has terminated. Bug reported
|
||||
by Peter Schauer.
|
||||
|
||||
Changes from Peter Schauer <pesrem@regent.e-technik.tu-muenchen.de>
|
||||
in bringing up 3.94.2 on the Sun-3.
|
||||
|
||||
* Makefile.dist: Include CFLAGS in rule for cplus-dem.o.
|
||||
* breakpoint.c (enable_breakpoint): Check for valid watchpoint
|
||||
expression (in scope) before reenabling watchpoint.
|
||||
* signame.c (init_sigs): Add missing declaration of i, fix
|
||||
sys_siglist declaration.
|
||||
* source.c (list_command): Fixed range computation to use
|
||||
lines_to_list ().
|
||||
* stack.c (backtrace_command): Do not allow command if target has
|
||||
no stack, print informative error message.
|
||||
* target.c (target_command): Do not write into command line
|
||||
because this fails if the target command is used in a user defined
|
||||
command. [This change was enhanced by gnu to support any-
|
||||
unique-prefix matching on target names.]
|
||||
* valops.c (value_struct_elt): Avoid infinite loop on an
|
||||
erroneous attempt to print the member of function (try p main.p).
|
||||
|
||||
Mon Apr 1 17:05:45 1991 John Gilmore (gnu at cygint.cygnus.com)
|
||||
|
||||
* expread.y (name_no_typename): Avoid reduce/reduce errors
|
||||
caused by ambiguity in handling NAME_OR_INT and NAME_OR_UINT.
|
||||
Since the GDB parser really doesn't use name_no_typename in a
|
||||
name-only context, the parser can't tell the diff between
|
||||
names and numbers here. Avoid allowing a name_no_typename
|
||||
to be a NAME_OR_*INT to resolve the conflict.
|
||||
|
||||
Sun Mar 31 20:12:07 1991 John Gilmore (gnu at cygint.cygnus.com)
|
||||
|
||||
Bugfixes from Mark Fox (markf@wrs.com) (test=testField.c):
|
||||
|
||||
* valprint.c (val_print_fields): bitfield printing didn't handle
|
||||
byte order. Indirect through a few more fns to cope.
|
||||
|
||||
* values.c (modify_field): also cope with byte order.
|
||||
|
||||
Sat Mar 23 10:02:21 1991 John Gilmore (gnu at cygint.cygnus.com)
|
||||
|
||||
Cleanup for release 3.94.2:
|
||||
|
@ -54,7 +54,7 @@ CC-LD=${CC}
|
||||
# system malloc, uncomment the following two lines.
|
||||
#GNU_MALLOC =
|
||||
#MALLOC_CFLAGS = -DNO_MALLOC_CHECK
|
||||
GNU_MALLOC = gmalloc.o mcheck.o
|
||||
GNU_MALLOC = gmalloc.o mcheck.o mtrace.o
|
||||
MALLOC_CFLAGS =
|
||||
|
||||
# Where is the "include" directory? Traditionally ../include or ./include
|
||||
@ -107,7 +107,7 @@ CDEPS = ${XM_CDEPS} ${TM_CDEPS} ${BFD_DIR}/libbfd.a
|
||||
ADD_FILES = ${OBSTACK} ${REGEX} ${ALLOCA} ${GNU_MALLOC} ${GETOPT}
|
||||
ADD_DEPS = ${OBSTACK} ${REGEX1} ${ALLOCA1} ${GNU_MALLOC} ${GETOPT}
|
||||
|
||||
VERSION = 3.94.2
|
||||
VERSION = 3.94.3
|
||||
DIST=gdb-$(VERSION)
|
||||
|
||||
LINT=/usr/5bin/lint
|
||||
@ -171,12 +171,13 @@ HFILES= breakpoint.h command.h defs.h environ.h \
|
||||
value.h
|
||||
|
||||
OPCODES = pn-opcode.h np1-opcode.h sparc-opcode.h vax-opcode.h m68k-opcode.h \
|
||||
ns32k-opcode.h convex-opcode.h pyr-opcode.h mips-opcode.h \
|
||||
ns32k-opcode.h convx-opcode.h pyr-opcode.h mips-opcode.h \
|
||||
am29k-opcode.h
|
||||
|
||||
REMOTE_EXAMPLES = remote-sa.m68k.shar remote-multi.shar
|
||||
REMOTE_EXAMPLES = rem-m68k.shar rem-multi.shar
|
||||
|
||||
MALLOCSRC = gmalloc.c mcheck.c ansidecl.h stdlib.h gmalloc.h stddef.h
|
||||
MALLOCSRC = gmalloc.c mcheck.c mtrace.c mtrace.awk \
|
||||
ansidecl.h stdlib.h gmalloc.h stddef.h
|
||||
GETOPTSRC = $(GETOPT_DIR)/getopt.c $(GETOPT_DIR)/getopt1.c
|
||||
|
||||
POSSLIBS_MAINDIR = obstack.h obstack.c regex.c regex.h alloca.c \
|
||||
@ -188,11 +189,11 @@ TESTS = testbpt.c testfun.c testrec.c testreg.c testregs.c
|
||||
# tdesc-lib cannot be named simply tdesc, because if if it were GNU make
|
||||
# would try to make it from tdesc.c.
|
||||
# tdesc-lib removed from the list due to Motorola copyrights...gnu@cygnus.com
|
||||
OTHERS = Makefile.dist depend alldeps.mak Makefile.srcdir \
|
||||
OTHERS = Makefile.dist depend alldeps.mak Makefile.sdir \
|
||||
createtags munch config.gdb config.status \
|
||||
ChangeLog ChangeLog-3.x \
|
||||
README TODO TAGS WHATS.NEW \
|
||||
gdb.texinfo gdb-int.texinfo gdbrc.tex threecol.tex \
|
||||
gdb.texinfo gdbint.texinfo gdbrc.tex threecol.tex \
|
||||
.gdbinit COPYING expread.tab.c stab.def \
|
||||
copying.c Projects Convex.notes copying.awk \
|
||||
saber.suppress standalone.c stuff.c kdb-start.c \
|
||||
@ -276,7 +277,7 @@ rapp: $(RAPP_OBS)
|
||||
${srcdir}/munch ${RAPP_OBS} > rapp_init.c
|
||||
${CC-LD} $(LDFLAGS) -o $@ rapp_init.c $(RAPP_OBS)
|
||||
|
||||
Makefiles= Makefile.srcdir $(M_MAKEFILE) \
|
||||
Makefiles= Makefile.sdir $(M_MAKEFILE) \
|
||||
${srcdir}/alldeps.mak ${srcdir}/Makefile.dist
|
||||
|
||||
MAKE_MAKEFILE= echo "M_MAKEFILE=$(M_MAKEFILE)" | \
|
||||
@ -503,4 +504,4 @@ force_update :
|
||||
# When used with GDB, the demangler should never look for leading underscores
|
||||
# because GDB strips them off during symbol read-in. Thus -Dnounderscore.
|
||||
cplus-dem.o : cplus-dem.c
|
||||
${CC} -c -Dnounderscore `echo ${srcdir}/cplus-dem.c | sed 's,^\./,,'`
|
||||
${CC} -c ${CFLAGS} -Dnounderscore `echo ${srcdir}/cplus-dem.c | sed 's,^\./,,'`
|
||||
|
@ -92,6 +92,10 @@ The child doesn't let any refs through, but when the child terminates,
|
||||
you are back to debugging the core file -- you might even want to swap
|
||||
back and forth between the two, or between two core files.
|
||||
|
||||
Add a command for searching memory, a la adb. It specifies size,
|
||||
mask, value, start address. ADB searches until it finds it or hits
|
||||
an error (or is interrupted).
|
||||
|
||||
# Local Variables:
|
||||
# mode: text
|
||||
# End:
|
||||
|
@ -1138,6 +1138,51 @@ make_command (arg, from_tty)
|
||||
shell_escape (p, from_tty);
|
||||
}
|
||||
|
||||
static void
|
||||
user_info_1 (c, stream)
|
||||
struct cmd_list_element *c;
|
||||
FILE *stream;
|
||||
{
|
||||
register struct command_line *cmdlines;
|
||||
|
||||
cmdlines = c->user_commands;
|
||||
if (!cmdlines)
|
||||
return;
|
||||
fprintf_filtered (stream, "User command %s:\n", c->name);
|
||||
while (cmdlines)
|
||||
{
|
||||
fprintf_filtered (stream, "%s\n", cmdlines->line);
|
||||
cmdlines = cmdlines->next;
|
||||
}
|
||||
fputs_filtered ("\n", stream);
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
user_info (args, from_tty)
|
||||
char *args;
|
||||
int from_tty;
|
||||
{
|
||||
struct cmd_list_element *c;
|
||||
extern struct cmd_list_element *cmdlist;
|
||||
|
||||
if (args)
|
||||
{
|
||||
c = lookup_cmd (&args, cmdlist, "", 0, 1);
|
||||
if (c->class != class_user)
|
||||
error ("Not a user command.");
|
||||
user_info_1 (c, stdout);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (c = cmdlist; c; c = c->next)
|
||||
{
|
||||
if (c->class == class_user)
|
||||
user_info_1 (c, stdout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
_initialize_command ()
|
||||
{
|
||||
@ -1147,4 +1192,8 @@ With no arguments, run an inferior shell.");
|
||||
|
||||
add_com ("make", class_support, make_command,
|
||||
"Run the ``make'' program using the rest of the line as arguments.");
|
||||
|
||||
add_info ("user", user_info, "Show definitions of user defined commands.\n\
|
||||
Argument is the name of the user defined command.\n\
|
||||
With no argument, show definitions of all user defined commands.");
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ case ${srcdir} in
|
||||
.)
|
||||
;;
|
||||
*)
|
||||
echo "srcdir=${srcdir}" >./Makefile.srcdir
|
||||
echo "srcdir=${srcdir}" >./Makefile.sdir
|
||||
grep -s "source ${srcdir}/.gdbinit" .gdbinit 2>/dev/null || \
|
||||
echo "source ${srcdir}/.gdbinit" >> .gdbinit
|
||||
if [ ! -d readline ]; then
|
||||
|
@ -73,7 +73,7 @@ struct formstr {
|
||||
unsigned i:5, j:5, k:2; /* operand formats */
|
||||
};
|
||||
|
||||
#include "convex-opcode.h"
|
||||
#include "convx-opcode.h"
|
||||
|
||||
unsigned char formdecode [] = {
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
|
@ -155,10 +155,9 @@ core_detach (args, from_tty)
|
||||
char *args;
|
||||
int from_tty;
|
||||
{
|
||||
dont_repeat ();
|
||||
if (args)
|
||||
error ("Too many arguments");
|
||||
pop_target ();
|
||||
unpush_target (&core_ops);
|
||||
if (from_tty)
|
||||
printf ("No core file now.\n");
|
||||
}
|
||||
@ -170,6 +169,7 @@ core_file_command (filename, from_tty)
|
||||
char *filename;
|
||||
int from_tty;
|
||||
{
|
||||
dont_repeat (); /* Either way, seems bogus. */
|
||||
if (!filename)
|
||||
core_detach (filename, from_tty);
|
||||
else
|
||||
|
@ -791,11 +791,14 @@ really_free_pendings (foo)
|
||||
next1 = next->next;
|
||||
free (next);
|
||||
}
|
||||
file_symbols = 0;
|
||||
|
||||
for (next = global_symbols; next; next = next1)
|
||||
{
|
||||
next1 = next->next;
|
||||
free (next);
|
||||
}
|
||||
global_symbols = 0;
|
||||
}
|
||||
|
||||
/* Take one of the lists of symbols and make a block from it.
|
||||
@ -1709,7 +1712,7 @@ read_dbx_symtab (symfile_name, addr,
|
||||
#ifdef END_OF_TEXT_DEFAULT
|
||||
end_of_text_addr = END_OF_TEXT_DEFAULT;
|
||||
#else
|
||||
end_of_text_addr = addr + text_size;
|
||||
end_of_text_addr = text_addr + text_size;
|
||||
#endif
|
||||
|
||||
symtab_input_desc = desc; /* This is needed for fill_symbuf below */
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
/* A Bison parser, made from ../expread.y */
|
||||
/* A Bison parser, made from expread.y */
|
||||
|
||||
#define INT 258
|
||||
#define CHAR 259
|
||||
@ -41,7 +41,7 @@
|
||||
#define DECREMENT 295
|
||||
#define ARROW 296
|
||||
|
||||
#line 29 "../expread.y"
|
||||
#line 29 "expread.y"
|
||||
|
||||
#include <stdio.h>
|
||||
#include "defs.h"
|
||||
@ -133,7 +133,7 @@ static enum type_pieces pop_type ();
|
||||
/* Allow debugging of parsing. */
|
||||
#define YYDEBUG 1
|
||||
|
||||
#line 125 "../expread.y"
|
||||
#line 125 "expread.y"
|
||||
typedef union
|
||||
{
|
||||
LONGEST lval;
|
||||
@ -228,7 +228,7 @@ static const short yyrline[] = { 0,
|
||||
767, 768, 770, 772, 775, 782, 784, 786, 788, 790,
|
||||
792, 794, 796, 798, 801, 804, 807, 809, 811, 813,
|
||||
817, 818, 824, 830, 839, 844, 851, 852, 853, 854,
|
||||
855, 858, 859, 860, 861
|
||||
855, 858, 859
|
||||
};
|
||||
|
||||
static const char * const yytname[] = { 0,
|
||||
@ -253,7 +253,7 @@ static const short yyr1[] = { 0,
|
||||
78, 78, 78, 78, 78, 79, 79, 79, 79, 79,
|
||||
79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
|
||||
80, 80, 80, 80, 81, 81, 82, 82, 82, 82,
|
||||
82, 83, 83, 83, 83
|
||||
82, 83, 83
|
||||
};
|
||||
|
||||
static const short yyr2[] = { 0,
|
||||
@ -268,7 +268,7 @@ static const short yyr2[] = { 0,
|
||||
1, 3, 6, 8, 9, 1, 1, 1, 1, 2,
|
||||
3, 2, 3, 2, 2, 2, 2, 1, 2, 1,
|
||||
1, 1, 1, 1, 1, 3, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1
|
||||
1, 1, 1
|
||||
};
|
||||
|
||||
static const short yydefact[] = { 0,
|
||||
@ -778,199 +778,199 @@ yyreduce:
|
||||
switch (yyn) {
|
||||
|
||||
case 3:
|
||||
#line 224 "../expread.y"
|
||||
#line 224 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_COMMA); ;
|
||||
break;}
|
||||
case 4:
|
||||
#line 229 "../expread.y"
|
||||
#line 229 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_IND); ;
|
||||
break;}
|
||||
case 5:
|
||||
#line 232 "../expread.y"
|
||||
#line 232 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_ADDR); ;
|
||||
break;}
|
||||
case 6:
|
||||
#line 235 "../expread.y"
|
||||
#line 235 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_NEG); ;
|
||||
break;}
|
||||
case 7:
|
||||
#line 239 "../expread.y"
|
||||
#line 239 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_ZEROP); ;
|
||||
break;}
|
||||
case 8:
|
||||
#line 243 "../expread.y"
|
||||
#line 243 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_LOGNOT); ;
|
||||
break;}
|
||||
case 9:
|
||||
#line 247 "../expread.y"
|
||||
#line 247 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_PREINCREMENT); ;
|
||||
break;}
|
||||
case 10:
|
||||
#line 251 "../expread.y"
|
||||
#line 251 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_PREDECREMENT); ;
|
||||
break;}
|
||||
case 11:
|
||||
#line 255 "../expread.y"
|
||||
#line 255 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_POSTINCREMENT); ;
|
||||
break;}
|
||||
case 12:
|
||||
#line 259 "../expread.y"
|
||||
#line 259 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_POSTDECREMENT); ;
|
||||
break;}
|
||||
case 13:
|
||||
#line 263 "../expread.y"
|
||||
#line 263 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_SIZEOF); ;
|
||||
break;}
|
||||
case 14:
|
||||
#line 267 "../expread.y"
|
||||
#line 267 "expread.y"
|
||||
{ write_exp_elt_opcode (STRUCTOP_PTR);
|
||||
write_exp_string (yyvsp[0].sval);
|
||||
write_exp_elt_opcode (STRUCTOP_PTR); ;
|
||||
break;}
|
||||
case 15:
|
||||
#line 273 "../expread.y"
|
||||
#line 273 "expread.y"
|
||||
{ write_exp_elt_opcode (STRUCTOP_MPTR); ;
|
||||
break;}
|
||||
case 16:
|
||||
#line 277 "../expread.y"
|
||||
#line 277 "expread.y"
|
||||
{ write_exp_elt_opcode (STRUCTOP_STRUCT);
|
||||
write_exp_string (yyvsp[0].sval);
|
||||
write_exp_elt_opcode (STRUCTOP_STRUCT); ;
|
||||
break;}
|
||||
case 17:
|
||||
#line 283 "../expread.y"
|
||||
#line 283 "expread.y"
|
||||
{ write_exp_elt_opcode (STRUCTOP_MEMBER); ;
|
||||
break;}
|
||||
case 18:
|
||||
#line 287 "../expread.y"
|
||||
#line 287 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_SUBSCRIPT); ;
|
||||
break;}
|
||||
case 19:
|
||||
#line 293 "../expread.y"
|
||||
#line 293 "expread.y"
|
||||
{ start_arglist (); ;
|
||||
break;}
|
||||
case 20:
|
||||
#line 295 "../expread.y"
|
||||
#line 295 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_FUNCALL);
|
||||
write_exp_elt_longcst ((LONGEST) end_arglist ());
|
||||
write_exp_elt_opcode (OP_FUNCALL); ;
|
||||
break;}
|
||||
case 22:
|
||||
#line 304 "../expread.y"
|
||||
#line 304 "expread.y"
|
||||
{ arglist_len = 1; ;
|
||||
break;}
|
||||
case 23:
|
||||
#line 308 "../expread.y"
|
||||
#line 308 "expread.y"
|
||||
{ arglist_len++; ;
|
||||
break;}
|
||||
case 24:
|
||||
#line 312 "../expread.y"
|
||||
#line 312 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_MEMVAL);
|
||||
write_exp_elt_type (yyvsp[-2].tval);
|
||||
write_exp_elt_opcode (UNOP_MEMVAL); ;
|
||||
break;}
|
||||
case 25:
|
||||
#line 318 "../expread.y"
|
||||
#line 318 "expread.y"
|
||||
{ write_exp_elt_opcode (UNOP_CAST);
|
||||
write_exp_elt_type (yyvsp[-2].tval);
|
||||
write_exp_elt_opcode (UNOP_CAST); ;
|
||||
break;}
|
||||
case 26:
|
||||
#line 324 "../expread.y"
|
||||
#line 324 "expread.y"
|
||||
{ ;
|
||||
break;}
|
||||
case 27:
|
||||
#line 330 "../expread.y"
|
||||
#line 330 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_REPEAT); ;
|
||||
break;}
|
||||
case 28:
|
||||
#line 334 "../expread.y"
|
||||
#line 334 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_MUL); ;
|
||||
break;}
|
||||
case 29:
|
||||
#line 338 "../expread.y"
|
||||
#line 338 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_DIV); ;
|
||||
break;}
|
||||
case 30:
|
||||
#line 342 "../expread.y"
|
||||
#line 342 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_REM); ;
|
||||
break;}
|
||||
case 31:
|
||||
#line 346 "../expread.y"
|
||||
#line 346 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_ADD); ;
|
||||
break;}
|
||||
case 32:
|
||||
#line 350 "../expread.y"
|
||||
#line 350 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_SUB); ;
|
||||
break;}
|
||||
case 33:
|
||||
#line 354 "../expread.y"
|
||||
#line 354 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_LSH); ;
|
||||
break;}
|
||||
case 34:
|
||||
#line 358 "../expread.y"
|
||||
#line 358 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_RSH); ;
|
||||
break;}
|
||||
case 35:
|
||||
#line 362 "../expread.y"
|
||||
#line 362 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_EQUAL); ;
|
||||
break;}
|
||||
case 36:
|
||||
#line 366 "../expread.y"
|
||||
#line 366 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_NOTEQUAL); ;
|
||||
break;}
|
||||
case 37:
|
||||
#line 370 "../expread.y"
|
||||
#line 370 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_LEQ); ;
|
||||
break;}
|
||||
case 38:
|
||||
#line 374 "../expread.y"
|
||||
#line 374 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_GEQ); ;
|
||||
break;}
|
||||
case 39:
|
||||
#line 378 "../expread.y"
|
||||
#line 378 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_LESS); ;
|
||||
break;}
|
||||
case 40:
|
||||
#line 382 "../expread.y"
|
||||
#line 382 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_GTR); ;
|
||||
break;}
|
||||
case 41:
|
||||
#line 386 "../expread.y"
|
||||
#line 386 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_LOGAND); ;
|
||||
break;}
|
||||
case 42:
|
||||
#line 390 "../expread.y"
|
||||
#line 390 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_LOGXOR); ;
|
||||
break;}
|
||||
case 43:
|
||||
#line 394 "../expread.y"
|
||||
#line 394 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_LOGIOR); ;
|
||||
break;}
|
||||
case 44:
|
||||
#line 398 "../expread.y"
|
||||
#line 398 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_AND); ;
|
||||
break;}
|
||||
case 45:
|
||||
#line 402 "../expread.y"
|
||||
#line 402 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_OR); ;
|
||||
break;}
|
||||
case 46:
|
||||
#line 406 "../expread.y"
|
||||
#line 406 "expread.y"
|
||||
{ write_exp_elt_opcode (TERNOP_COND); ;
|
||||
break;}
|
||||
case 47:
|
||||
#line 410 "../expread.y"
|
||||
#line 410 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_ASSIGN); ;
|
||||
break;}
|
||||
case 48:
|
||||
#line 414 "../expread.y"
|
||||
#line 414 "expread.y"
|
||||
{ write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
|
||||
write_exp_elt_opcode (yyvsp[-1].opcode);
|
||||
write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); ;
|
||||
break;}
|
||||
case 49:
|
||||
#line 420 "../expread.y"
|
||||
#line 420 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_LONG);
|
||||
if (yyvsp[0].lval == (int) yyvsp[0].lval || yyvsp[0].lval == (unsigned int) yyvsp[0].lval)
|
||||
write_exp_elt_type (builtin_type_int);
|
||||
@ -980,7 +980,7 @@ case 49:
|
||||
write_exp_elt_opcode (OP_LONG); ;
|
||||
break;}
|
||||
case 50:
|
||||
#line 430 "../expread.y"
|
||||
#line 430 "expread.y"
|
||||
{ YYSTYPE val;
|
||||
parse_number (yyvsp[0].ssym.stoken.ptr, yyvsp[0].ssym.stoken.length, 0, &val);
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
@ -993,7 +993,7 @@ case 50:
|
||||
write_exp_elt_opcode (OP_LONG); ;
|
||||
break;}
|
||||
case 51:
|
||||
#line 443 "../expread.y"
|
||||
#line 443 "expread.y"
|
||||
{
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
if (yyvsp[0].ulval == (unsigned int) yyvsp[0].ulval)
|
||||
@ -1005,7 +1005,7 @@ case 51:
|
||||
;
|
||||
break;}
|
||||
case 52:
|
||||
#line 455 "../expread.y"
|
||||
#line 455 "expread.y"
|
||||
{ YYSTYPE val;
|
||||
parse_number (yyvsp[0].ssym.stoken.ptr, yyvsp[0].ssym.stoken.length, 0, &val);
|
||||
write_exp_elt_opcode (OP_LONG);
|
||||
@ -1018,57 +1018,57 @@ case 52:
|
||||
;
|
||||
break;}
|
||||
case 53:
|
||||
#line 468 "../expread.y"
|
||||
#line 468 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_type (builtin_type_char);
|
||||
write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
|
||||
write_exp_elt_opcode (OP_LONG); ;
|
||||
break;}
|
||||
case 54:
|
||||
#line 475 "../expread.y"
|
||||
#line 475 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_DOUBLE);
|
||||
write_exp_elt_type (builtin_type_double);
|
||||
write_exp_elt_dblcst (yyvsp[0].dval);
|
||||
write_exp_elt_opcode (OP_DOUBLE); ;
|
||||
break;}
|
||||
case 56:
|
||||
#line 485 "../expread.y"
|
||||
#line 485 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_LAST);
|
||||
write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
|
||||
write_exp_elt_opcode (OP_LAST); ;
|
||||
break;}
|
||||
case 57:
|
||||
#line 491 "../expread.y"
|
||||
#line 491 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_REGISTER);
|
||||
write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
|
||||
write_exp_elt_opcode (OP_REGISTER); ;
|
||||
break;}
|
||||
case 58:
|
||||
#line 497 "../expread.y"
|
||||
#line 497 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_INTERNALVAR);
|
||||
write_exp_elt_intern (yyvsp[0].ivar);
|
||||
write_exp_elt_opcode (OP_INTERNALVAR); ;
|
||||
break;}
|
||||
case 59:
|
||||
#line 503 "../expread.y"
|
||||
#line 503 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_LONG);
|
||||
write_exp_elt_type (builtin_type_int);
|
||||
write_exp_elt_longcst ((LONGEST) TYPE_LENGTH (yyvsp[-1].tval));
|
||||
write_exp_elt_opcode (OP_LONG); ;
|
||||
break;}
|
||||
case 60:
|
||||
#line 510 "../expread.y"
|
||||
#line 510 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_STRING);
|
||||
write_exp_string (yyvsp[0].sval);
|
||||
write_exp_elt_opcode (OP_STRING); ;
|
||||
break;}
|
||||
case 61:
|
||||
#line 517 "../expread.y"
|
||||
#line 517 "expread.y"
|
||||
{ write_exp_elt_opcode (OP_THIS);
|
||||
write_exp_elt_opcode (OP_THIS); ;
|
||||
break;}
|
||||
case 62:
|
||||
#line 524 "../expread.y"
|
||||
#line 524 "expread.y"
|
||||
{
|
||||
if (yyvsp[0].ssym.sym != 0)
|
||||
yyval.bval = SYMBOL_BLOCK_VALUE (yyvsp[0].ssym.sym);
|
||||
@ -1085,7 +1085,7 @@ case 62:
|
||||
;
|
||||
break;}
|
||||
case 63:
|
||||
#line 541 "../expread.y"
|
||||
#line 541 "expread.y"
|
||||
{ struct symbol *tem
|
||||
= lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
|
||||
VAR_NAMESPACE, 0, NULL);
|
||||
@ -1095,7 +1095,7 @@ case 63:
|
||||
yyval.bval = SYMBOL_BLOCK_VALUE (tem); ;
|
||||
break;}
|
||||
case 64:
|
||||
#line 551 "../expread.y"
|
||||
#line 551 "expread.y"
|
||||
{ struct symbol *sym;
|
||||
sym = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
|
||||
VAR_NAMESPACE, 0, NULL);
|
||||
@ -1107,7 +1107,7 @@ case 64:
|
||||
write_exp_elt_opcode (OP_VAR_VALUE); ;
|
||||
break;}
|
||||
case 65:
|
||||
#line 563 "../expread.y"
|
||||
#line 563 "expread.y"
|
||||
{
|
||||
struct type *type = yyvsp[-2].tval;
|
||||
if (TYPE_CODE (type) != TYPE_CODE_STRUCT
|
||||
@ -1122,7 +1122,7 @@ case 65:
|
||||
;
|
||||
break;}
|
||||
case 66:
|
||||
#line 576 "../expread.y"
|
||||
#line 576 "expread.y"
|
||||
{
|
||||
char *name = copy_name (yyvsp[0].sval);
|
||||
struct symbol *sym;
|
||||
@ -1168,7 +1168,7 @@ case 66:
|
||||
;
|
||||
break;}
|
||||
case 67:
|
||||
#line 622 "../expread.y"
|
||||
#line 622 "expread.y"
|
||||
{ struct symbol *sym = yyvsp[0].ssym.sym;
|
||||
|
||||
if (sym)
|
||||
@ -1241,7 +1241,7 @@ case 67:
|
||||
;
|
||||
break;}
|
||||
case 69:
|
||||
#line 697 "../expread.y"
|
||||
#line 697 "expread.y"
|
||||
{
|
||||
/* This is where the interesting stuff happens. */
|
||||
int done = 0;
|
||||
@ -1276,26 +1276,26 @@ case 69:
|
||||
;
|
||||
break;}
|
||||
case 70:
|
||||
#line 732 "../expread.y"
|
||||
#line 732 "expread.y"
|
||||
{ push_type (tp_pointer); yyval.voidval = 0; ;
|
||||
break;}
|
||||
case 71:
|
||||
#line 734 "../expread.y"
|
||||
#line 734 "expread.y"
|
||||
{ push_type (tp_pointer); yyval.voidval = yyvsp[0].voidval; ;
|
||||
break;}
|
||||
case 73:
|
||||
#line 739 "../expread.y"
|
||||
#line 739 "expread.y"
|
||||
{ yyval.voidval = yyvsp[-1].voidval; ;
|
||||
break;}
|
||||
case 74:
|
||||
#line 741 "../expread.y"
|
||||
#line 741 "expread.y"
|
||||
{
|
||||
push_type ((enum type_pieces) yyvsp[0].lval);
|
||||
push_type (tp_array);
|
||||
;
|
||||
break;}
|
||||
case 75:
|
||||
#line 746 "../expread.y"
|
||||
#line 746 "expread.y"
|
||||
{
|
||||
push_type ((enum type_pieces) yyvsp[0].lval);
|
||||
push_type (tp_array);
|
||||
@ -1303,109 +1303,109 @@ case 75:
|
||||
;
|
||||
break;}
|
||||
case 76:
|
||||
#line 752 "../expread.y"
|
||||
#line 752 "expread.y"
|
||||
{ push_type (tp_function); ;
|
||||
break;}
|
||||
case 77:
|
||||
#line 754 "../expread.y"
|
||||
#line 754 "expread.y"
|
||||
{ push_type (tp_function); ;
|
||||
break;}
|
||||
case 78:
|
||||
#line 758 "../expread.y"
|
||||
#line 758 "expread.y"
|
||||
{ yyval.lval = -1; ;
|
||||
break;}
|
||||
case 79:
|
||||
#line 760 "../expread.y"
|
||||
#line 760 "expread.y"
|
||||
{ yyval.lval = yyvsp[-1].lval; ;
|
||||
break;}
|
||||
case 80:
|
||||
#line 764 "../expread.y"
|
||||
#line 764 "expread.y"
|
||||
{ yyval.voidval = 0; ;
|
||||
break;}
|
||||
case 82:
|
||||
#line 769 "../expread.y"
|
||||
#line 769 "expread.y"
|
||||
{ yyval.tval = lookup_member_type (builtin_type_int, yyvsp[-2].tval); ;
|
||||
break;}
|
||||
case 83:
|
||||
#line 771 "../expread.y"
|
||||
#line 771 "expread.y"
|
||||
{ yyval.tval = lookup_member_type (yyvsp[-5].tval, yyvsp[-3].tval); ;
|
||||
break;}
|
||||
case 84:
|
||||
#line 773 "../expread.y"
|
||||
#line 773 "expread.y"
|
||||
{ yyval.tval = lookup_member_type
|
||||
(lookup_function_type (yyvsp[-7].tval), yyvsp[-5].tval); ;
|
||||
break;}
|
||||
case 85:
|
||||
#line 776 "../expread.y"
|
||||
#line 776 "expread.y"
|
||||
{ yyval.tval = lookup_member_type
|
||||
(lookup_function_type (yyvsp[-8].tval), yyvsp[-6].tval);
|
||||
free (yyvsp[-1].tvec); ;
|
||||
break;}
|
||||
case 86:
|
||||
#line 783 "../expread.y"
|
||||
#line 783 "expread.y"
|
||||
{ yyval.tval = yyvsp[0].tsym.type; ;
|
||||
break;}
|
||||
case 87:
|
||||
#line 785 "../expread.y"
|
||||
#line 785 "expread.y"
|
||||
{ yyval.tval = builtin_type_int; ;
|
||||
break;}
|
||||
case 88:
|
||||
#line 787 "../expread.y"
|
||||
#line 787 "expread.y"
|
||||
{ yyval.tval = builtin_type_long; ;
|
||||
break;}
|
||||
case 89:
|
||||
#line 789 "../expread.y"
|
||||
#line 789 "expread.y"
|
||||
{ yyval.tval = builtin_type_short; ;
|
||||
break;}
|
||||
case 90:
|
||||
#line 791 "../expread.y"
|
||||
#line 791 "expread.y"
|
||||
{ yyval.tval = builtin_type_long; ;
|
||||
break;}
|
||||
case 91:
|
||||
#line 793 "../expread.y"
|
||||
#line 793 "expread.y"
|
||||
{ yyval.tval = builtin_type_unsigned_long; ;
|
||||
break;}
|
||||
case 92:
|
||||
#line 795 "../expread.y"
|
||||
#line 795 "expread.y"
|
||||
{ yyval.tval = builtin_type_short; ;
|
||||
break;}
|
||||
case 93:
|
||||
#line 797 "../expread.y"
|
||||
#line 797 "expread.y"
|
||||
{ yyval.tval = builtin_type_unsigned_short; ;
|
||||
break;}
|
||||
case 94:
|
||||
#line 799 "../expread.y"
|
||||
#line 799 "expread.y"
|
||||
{ yyval.tval = lookup_struct (copy_name (yyvsp[0].sval),
|
||||
expression_context_block); ;
|
||||
break;}
|
||||
case 95:
|
||||
#line 802 "../expread.y"
|
||||
#line 802 "expread.y"
|
||||
{ yyval.tval = lookup_union (copy_name (yyvsp[0].sval),
|
||||
expression_context_block); ;
|
||||
break;}
|
||||
case 96:
|
||||
#line 805 "../expread.y"
|
||||
#line 805 "expread.y"
|
||||
{ yyval.tval = lookup_enum (copy_name (yyvsp[0].sval),
|
||||
expression_context_block); ;
|
||||
break;}
|
||||
case 97:
|
||||
#line 808 "../expread.y"
|
||||
#line 808 "expread.y"
|
||||
{ yyval.tval = lookup_unsigned_typename (TYPE_NAME(yyvsp[0].tsym.type)); ;
|
||||
break;}
|
||||
case 98:
|
||||
#line 810 "../expread.y"
|
||||
#line 810 "expread.y"
|
||||
{ yyval.tval = builtin_type_unsigned_int; ;
|
||||
break;}
|
||||
case 99:
|
||||
#line 812 "../expread.y"
|
||||
#line 812 "expread.y"
|
||||
{ yyval.tval = yyvsp[0].tsym.type; ;
|
||||
break;}
|
||||
case 100:
|
||||
#line 814 "../expread.y"
|
||||
#line 814 "expread.y"
|
||||
{ yyval.tval = builtin_type_int; ;
|
||||
break;}
|
||||
case 102:
|
||||
#line 819 "../expread.y"
|
||||
#line 819 "expread.y"
|
||||
{
|
||||
yyval.tsym.stoken.ptr = "int";
|
||||
yyval.tsym.stoken.length = 3;
|
||||
@ -1413,7 +1413,7 @@ case 102:
|
||||
;
|
||||
break;}
|
||||
case 103:
|
||||
#line 825 "../expread.y"
|
||||
#line 825 "expread.y"
|
||||
{
|
||||
yyval.tsym.stoken.ptr = "long";
|
||||
yyval.tsym.stoken.length = 4;
|
||||
@ -1421,7 +1421,7 @@ case 103:
|
||||
;
|
||||
break;}
|
||||
case 104:
|
||||
#line 831 "../expread.y"
|
||||
#line 831 "expread.y"
|
||||
{
|
||||
yyval.tsym.stoken.ptr = "short";
|
||||
yyval.tsym.stoken.length = 5;
|
||||
@ -1429,37 +1429,37 @@ case 104:
|
||||
;
|
||||
break;}
|
||||
case 105:
|
||||
#line 840 "../expread.y"
|
||||
#line 840 "expread.y"
|
||||
{ yyval.tvec = (struct type **)xmalloc (sizeof (struct type *) * 2);
|
||||
yyval.tvec[0] = (struct type *)0;
|
||||
yyval.tvec[1] = yyvsp[0].tval;
|
||||
;
|
||||
break;}
|
||||
case 106:
|
||||
#line 845 "../expread.y"
|
||||
#line 845 "expread.y"
|
||||
{ int len = sizeof (struct type *) * ++(yyvsp[-2].ivec[0]);
|
||||
yyval.tvec = (struct type **)xrealloc (yyvsp[-2].tvec, len);
|
||||
yyval.tvec[yyval.ivec[0]] = yyvsp[0].tval;
|
||||
;
|
||||
break;}
|
||||
case 107:
|
||||
#line 851 "../expread.y"
|
||||
#line 851 "expread.y"
|
||||
{ yyval.sval = yyvsp[0].ssym.stoken; ;
|
||||
break;}
|
||||
case 108:
|
||||
#line 852 "../expread.y"
|
||||
#line 852 "expread.y"
|
||||
{ yyval.sval = yyvsp[0].ssym.stoken; ;
|
||||
break;}
|
||||
case 109:
|
||||
#line 853 "../expread.y"
|
||||
#line 853 "expread.y"
|
||||
{ yyval.sval = yyvsp[0].tsym.stoken; ;
|
||||
break;}
|
||||
case 110:
|
||||
#line 854 "../expread.y"
|
||||
#line 854 "expread.y"
|
||||
{ yyval.sval = yyvsp[0].ssym.stoken; ;
|
||||
break;}
|
||||
case 111:
|
||||
#line 855 "../expread.y"
|
||||
#line 855 "expread.y"
|
||||
{ yyval.sval = yyvsp[0].ssym.stoken; ;
|
||||
break;}
|
||||
}
|
||||
@ -1615,7 +1615,7 @@ yyerrhandle:
|
||||
yystate = yyn;
|
||||
goto yynewstate;
|
||||
}
|
||||
#line 864 "../expread.y"
|
||||
#line 870 "expread.y"
|
||||
|
||||
|
||||
/* Begin counting arguments for a function call,
|
||||
|
@ -857,8 +857,14 @@ name : NAME { $$ = $1.stoken; }
|
||||
|
||||
name_not_typename : NAME
|
||||
| BLOCKNAME
|
||||
| NAME_OR_INT
|
||||
| NAME_OR_UINT
|
||||
/* These would be useful if name_not_typename was useful, but it is just
|
||||
a fake for "variable", so these cause reduce/reduce conflicts because
|
||||
the parser can't tell whether NAME_OR_INT is a name_not_typename (=variable,
|
||||
=exp) or just an exp. If name_not_typename was ever used in an lvalue
|
||||
context where only a name could occur, this might be useful.
|
||||
| NAME_OR_INT
|
||||
| NAME_OR_UINT
|
||||
*/
|
||||
;
|
||||
|
||||
%%
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Print i386 instructions for GDB, the GNU debugger.
|
||||
Copyright (C) 1988, 1989 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988, 1989, 1991 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
@ -34,6 +34,11 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/* For the GDB interface at the bottom of the file... */
|
||||
#include "defs.h"
|
||||
#include "param.h"
|
||||
#include "gdbcore.h"
|
||||
|
||||
#define Eb OP_E, b_mode
|
||||
#define indirEb OP_indirE, b_mode
|
||||
#define Gb OP_G, b_mode
|
||||
@ -1812,14 +1817,6 @@ OP_rm (bytemode)
|
||||
}
|
||||
}
|
||||
|
||||
/* GDB interface */
|
||||
#include "defs.h"
|
||||
#include "param.h"
|
||||
#include "symtab.h"
|
||||
#include "frame.h"
|
||||
#include "inferior.h"
|
||||
#include "gdbcore.h"
|
||||
|
||||
#define MAXLEN 20
|
||||
print_insn (memaddr, stream)
|
||||
CORE_ADDR memaddr;
|
||||
|
@ -40,10 +40,17 @@ ieee_extended_to_double (ext_format, from, to)
|
||||
bcopy (&from[MANBYTE_L], &mant1, 4);
|
||||
exp = ((ufrom[EXPBYTE_H] & (unsigned char)~SIGNMASK) << 8) | ufrom[EXPBYTE_L];
|
||||
|
||||
#if 0
|
||||
/* We can't do anything useful with a NaN anyway, so ignore its
|
||||
difference. It will end up as Infinity or something close. */
|
||||
if (exp == EXT_EXP_NAN) {
|
||||
/* We have a NaN source. */
|
||||
dto = 0.123456789; /* Not much else useful to do */
|
||||
} else if (exp == 0 && mant0 == 0 && mant1 == 0) {
|
||||
dto = 0.123456789; /* Not much else useful to do -- we don't know if
|
||||
the host system even *has* NaNs, nor how to
|
||||
generate an innocuous one if it does. */
|
||||
} else
|
||||
#endif
|
||||
if (exp == 0 && mant0 == 0 && mant1 == 0) {
|
||||
dto = 0;
|
||||
} else {
|
||||
/* Build the result algebraically. Might go infinite, underflow, etc;
|
||||
@ -51,6 +58,8 @@ ieee_extended_to_double (ext_format, from, to)
|
||||
mant0 |= 0x80000000;
|
||||
dto = ldexp ((double)mant0, exp - EXT_EXP_BIAS - 31);
|
||||
dto += ldexp ((double)mant1, exp - EXT_EXP_BIAS - 31 - 32);
|
||||
if (ufrom[EXPBYTE_H] & SIGNMASK) /* If negative... */
|
||||
dto = -dto; /* ...negate. */
|
||||
}
|
||||
*to = dto;
|
||||
}
|
||||
@ -129,10 +138,10 @@ ieee_test (n)
|
||||
extern struct ext_format ext_format_68881;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
di.i[0] = random();
|
||||
di.i[1] = random();
|
||||
double_to_ieee_extended (ext_format_68881, &di.d, exten);
|
||||
ieee_extended_to_double (ext_format_68881, exten, &result);
|
||||
di.i[0] = (random() << 16) | (random() & 0xffff);
|
||||
di.i[1] = (random() << 16) | (random() & 0xffff);
|
||||
double_to_ieee_extended (&ext_format_68881, &di.d, exten);
|
||||
ieee_extended_to_double (&ext_format_68881, exten, &result);
|
||||
if (di.d != result)
|
||||
printf ("Differ: %x %x %g => %x %x %g\n", di.d, di.d, result, result);
|
||||
}
|
||||
|
@ -250,7 +250,6 @@ nindy_detach (name, from_tty)
|
||||
char *name;
|
||||
int from_tty;
|
||||
{
|
||||
dont_repeat ();
|
||||
if (name)
|
||||
error ("Too many arguments");
|
||||
pop_target ();
|
||||
|
@ -31,7 +31,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
static CONST char undoc[] = "unknown signal";
|
||||
|
||||
CONST char *sys_siglist[NSIG];
|
||||
char *sys_siglist[NSIG];
|
||||
#endif /* SYS_SIGLIST_MISSING */
|
||||
|
||||
/* Table of abbreviations for signals. Note: A given number can
|
||||
@ -62,6 +62,8 @@ init_sig (number, abbrev, name)
|
||||
static void init_sigs ()
|
||||
{
|
||||
#ifdef SYS_SIGLIST_MISSING
|
||||
int i;
|
||||
|
||||
/* Initialize signal names. */
|
||||
for (i = 0; i < NSIG; i++)
|
||||
sys_siglist[i] = undoc;
|
||||
|
@ -99,11 +99,16 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
#define INVALID_FLOAT(p, len) (0)
|
||||
|
||||
#if 0
|
||||
/* code to execute to print interesting information about the
|
||||
* floating point processor (if any)
|
||||
* No need to define if there is nothing to do.
|
||||
floating point processor (if any)
|
||||
No need to define if there is nothing to do.
|
||||
On the 386, unfortunately this code is host-dependent (and lives
|
||||
in the i386-xdep.c file), so we can't
|
||||
do this unless we *know* we aren't cross-debugging. FIXME.
|
||||
*/
|
||||
#define FLOAT_INFO { i386_float_info (); }
|
||||
#endif 0
|
||||
|
||||
/* Say how long (ordinary) registers are. */
|
||||
|
||||
|
10
gdb/values.c
10
gdb/values.c
@ -1111,6 +1111,11 @@ unpack_field_as_long (type, valaddr, fieldno)
|
||||
return val;
|
||||
}
|
||||
|
||||
/* Modify the value of a bitfield. ADDR points to a block of memory in
|
||||
target byte order; the bitfield starts in the byte pointed to. FIELDVAL
|
||||
is the desired value of the field, in host byte order. BITPOS and BITSIZE
|
||||
indicate which bits (in target bit order) comprise the bitfield. */
|
||||
|
||||
void
|
||||
modify_field (addr, fieldval, bitpos, bitsize)
|
||||
char *addr;
|
||||
@ -1125,14 +1130,17 @@ modify_field (addr, fieldval, bitpos, bitsize)
|
||||
error ("Value %d does not fit in %d bits.", fieldval, bitsize);
|
||||
|
||||
bcopy (addr, &oword, sizeof oword);
|
||||
SWAP_TARGET_AND_HOST (&oword, sizeof oword); /* To host format */
|
||||
|
||||
/* Shifting for bit field depends on endianness of the machine. */
|
||||
/* Shifting for bit field depends on endianness of the target machine. */
|
||||
#ifdef BITS_BIG_ENDIAN
|
||||
bitpos = sizeof (oword) * 8 - bitpos - bitsize;
|
||||
#endif
|
||||
|
||||
oword &= ~(((1 << bitsize) - 1) << bitpos);
|
||||
oword |= fieldval << bitpos;
|
||||
|
||||
SWAP_TARGET_AND_HOST (&oword, sizeof oword); /* To target format */
|
||||
bcopy (&oword, addr, sizeof oword);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user