From b00771232fab861fb31e42dfd5f6643ba1b43cc9 Mon Sep 17 00:00:00 2001 From: John Gilmore Date: Fri, 25 Oct 1991 04:29:01 +0000 Subject: [PATCH] frame-select command. Cross funcalls to sun3. Build *.tab.c files in target dir. --- gdb/ChangeLog | 22 ++++++++++++++++++++++ gdb/Makefile.in | 22 +++++++++++----------- gdb/stack.c | 28 ++++++++++++++++++++++------ gdb/tm-sun3.h | 9 +++++++-- 4 files changed, 62 insertions(+), 19 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c5b300da7a6..4fd2a5ac685 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ Thu Oct 24 09:33:44 1991 John Gilmore (gnu at cygnus.com) + * stack.c (frame_command): Always print. Use new + frame_select_command to select a frame without printing. + * dwarfread.c: Use , since is not portable. Thu Oct 24 01:32:51 1991 Fred Fish (fnf at cygnus.com) @@ -65,6 +68,18 @@ Thu Oct 24 01:32:51 1991 Fred Fish (fnf at cygnus.com) replace them with a pointer to private data for each different flavor of object file reader to initialize appropriately. +Wed Oct 23 09:38:20 1991 John Gilmore (gnu at cygnus.com) + + * xconfig/sun[34]os4: Add note about strstr botch on sunos4.0.3c + and previous. + + * mipsread.c (fixup_undef_type): New function. If a struct / + union / enum is defined in a header file but nowhere else used, + (by typedefing, pointer referencing or declaration) the mipsread code + builds the complete tree for the structure but leaves its code as + TYPE_CODE_UNDEF as it doesn't know what kind of aggregate it is. + Guess its type based on the details of the members. + Tue Oct 22 18:04:32 1991 Stu Grossman (grossman at cygnus.com) * infrun.c (wait_for_inferior): Check return value from @@ -75,6 +90,13 @@ Mon Oct 21 17:47:03 1991 Stu Grossman (grossman at cygnus.com) * infrun.c (wait_for_inferior): fix stepi/nexti that was broken by my last edit to this routine. +Mon Oct 21 14:27:43 1991 John Gilmore (gnu at cygnus.com) + + * tm-sun3.h (FIX_CALL_DUMMY): problem with cross debugging. + FIX_CALL_DUMMY does unaligned accesses and/or forgets to byte swap + the values before putting them into the dummy code. (From Peter + Schauer) + Mon Oct 21 10:04:39 1991 Steve Chamberlain (steve at rtl.cygnus.com) * configure.in: added ebmon target. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 516571dfcb4..05c7f81e937 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -293,7 +293,7 @@ saber_gdb: $(SFILES) $(DEPFILES) copying.c version.c #load ./init.c $(SFILES) #unload ${srcdir}/c-exp.y ${srcdir}/m2-exp.y ${srcdir}/vx-share/*.h #unload ${srcdir}/nindy-share/[A-Z]* - #load ${srcdir}/c-exp.tab.c ${srcdir}/m2-exp.tab.c + #load c-exp.tab.c m2-exp.tab.c #load copying.c version.c #load `echo " "$(DEPFILES) | sed -e 's/\.o/.c/g' -e 's, , ../,g'` #load ${LIBIBERTY_DIR}/*.c @@ -589,20 +589,20 @@ copying.c : COPYING copying.awk version.c : Makefile.in echo 'char *version = "$(VERSION)";' >version.c -# c-exp.tab.c is generated in srcdir from c-exp.y, then compiled in target -# directory to c-exp.tab.o. -c-exp.tab.o: ${srcdir}/c-exp.tab.c -${srcdir}/c-exp.tab.c : $(srcdir)/c-exp.y +# c-exp.tab.c is generated in target dir from c-exp.y if it doesn't exist +# in srcdir, then compiled in target dir to c-exp.tab.o. +c-exp.tab.o: c-exp.tab.c +c-exp.tab.c: $(srcdir)/c-exp.y @echo 'Expect 4 shift/reduce conflicts.' ${YACC} $(srcdir)/c-exp.y - mv y.tab.c ${srcdir}/c-exp.tab.c + mv y.tab.c c-exp.tab.c -# m2-exp.tab.c is generated in srcdir from m2-exp.y, then compiled in target -# directory to m2-exp.tab.o. -m2-exp.tab.o: ${srcdir}/m2-exp.tab.c -${srcdir}/m2-exp.tab.c : $(srcdir)/m2-exp.y +# m2-exp.tab.c is generated in target dir from m2-exp.y if it doesn't exist +# in srcdir, then compiled in target dir to m2-exp.tab.o. +m2-exp.tab.o: m2-exp.tab.c +m2-exp.tab.c: $(srcdir)/m2-exp.y ${YACC} $(srcdir)/m2-exp.y - mv y.tab.c ${srcdir}/m2-exp.tab.c + mv y.tab.c m2-exp.tab.c # dbxread, coffread, mipsread, elfread have dependencies on BFD header files. dbxread.o: ${srcdir}/dbxread.c diff --git a/gdb/stack.c b/gdb/stack.c index 23bf9cb584e..64267014db9 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -360,7 +360,10 @@ frame_info (addr_exp) wrap_here (" "); if (funname) - printf_filtered (" in %s", funname); + { + printf_filtered (" in "); + fputs_demangled (funname, stdout, 1); + } wrap_here (" "); if (sal.symtab) printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line); @@ -925,14 +928,14 @@ find_relative_frame (frame, level_offset_ptr) return frame; } -/* The "frame" command. With no arg, print selected frame briefly. +/* The "frame_select" command. With no arg, NOP. With arg LEVEL_EXP, select the frame at level LEVEL if it is a valid level. Otherwise, treat level_exp as an address expression - and print it. See parse_frame_specification for more info on proper + and select it. See parse_frame_specification for more info on proper frame expressions. */ static void -frame_command (level_exp, from_tty) +frame_select_command (level_exp, from_tty) char *level_exp; int from_tty; { @@ -958,10 +961,18 @@ frame_command (level_exp, from_tty) level = 0; select_frame (frame, level); +} - if (!from_tty) - return; +/* The "frame" command. With no arg, print selected frame briefly. + With arg, behaves like frame_select and then prints the selected + frame. */ +static void +frame_command (level_exp, from_tty) + char *level_exp; + int from_tty; +{ + frame_select_command (level_exp, from_tty); print_stack_frame (selected_frame, selected_frame_level, 1); } @@ -1148,6 +1159,11 @@ a command file or a user-defined command."); add_com_alias ("f", "frame", class_stack, 1); + add_com ("frame-select", class_stack, frame_select_command, + "Select a stack frame without printing anything.\n\ +An argument specifies the frame to select.\n\ +It can be a stack frame number or the address of the frame.\n"); + add_com ("backtrace", class_stack, backtrace_command, "Print backtrace of all stack frames, or innermost COUNT frames.\n\ With a negative argument, print outermost -COUNT frames."); diff --git a/gdb/tm-sun3.h b/gdb/tm-sun3.h index e6860c62f7f..b3da81bbddc 100644 --- a/gdb/tm-sun3.h +++ b/gdb/tm-sun3.h @@ -120,5 +120,10 @@ taken for the arguments. */ into a call sequence of the above form stored at DUMMYNAME. */ #define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \ -{ *(int *)((char *) dummyname + 20) = nargs * 4; \ - *(int *)((char *) dummyname + 14) = fun; } +{ int temp; \ + temp = nargs * 4; \ + SWAP_TARGET_AND_HOST (temp, 4); \ + bcopy ((char *)&temp, (char *)(dummyname) + 20, 4); \ + temp = fun; \ + SWAP_TARGET_AND_HOST (temp, 4); \ + bcopy ((char *)&temp, (char *)(dummyname) + 14, 4); } -- 2.30.2