|  | The highest priority item is not on this list: Fix bugs in the | 
|  | existing testsuite, fix the GDB/compiler/shell/etc bugs which it | 
|  | detects (particularly when they are hard to XFAIL), make it run | 
|  | reliably without unexpected failures on the "standard" machines, etc. | 
|  | This list exists largely as "tests we can add when we are ready to | 
|  | risk destabilizing it again". | 
|  |  | 
|  | There are some tests which are only run on some platforms because they | 
|  | have not been tested on more platforms.  Enable them and fix any | 
|  | problems.  A partial list: recurse.exp, watchpoint.exp | 
|  | (test_watchpoint_triggered_in_syscall, test_complex_watchpoint). | 
|  |  | 
|  | Test printing of structures passed by value, for the 7th, 8th, and 9th | 
|  | arguments (PR 1714).  Test printing structure arguments of | 
|  | 2,4,6,8,12,16,and 20 bytes.  Same for structure return of all those | 
|  | sizes ("return", "finish", and call function). | 
|  |  | 
|  | Get crossload tests to use --enable-targets and reenable them. | 
|  |  | 
|  | corefile.exp: | 
|  | Test ability to run program when there is a core target, then go | 
|  | back to the core file when the program exits. | 
|  |  | 
|  | Test handling of floating point variables | 
|  | 1.  float, double, or long double | 
|  | 2.  in register or saved register or memory.  Also the case where a | 
|  | double is in two float registers and only one of them is saved. | 
|  | 3.  print them or set them | 
|  | 4.  (Alpha) integer (32 or 64 bit) in floating point register. | 
|  |  | 
|  | Print registers--"p $r5", "p sizeof ($r5)".  Test that they print | 
|  | appropriately (integer registers in decimal, registers which always | 
|  | contain addresses (pc, probably sp and fp, maybe others) in hex, | 
|  | floating point). | 
|  |  | 
|  | Test completer.  Test that it completes a variety of things correctly | 
|  | (see the list of test cases in main.c in the gdb source).  Test TAB, | 
|  | M-?, and the "complete" command. | 
|  |  | 
|  | Test "info line" with all kinds of linespecs.  Test that the last line | 
|  | of the file works right. | 
|  |  | 
|  | weird.exp--test that unrecognized cross-reference types or | 
|  | unrecognized visibility or virtual characters get skipped properly | 
|  | (see stabs.texinfo). | 
|  |  | 
|  | Test C++ nested types (especially if PR 1954 is fixed; even if not | 
|  | *some* things already should work even in the presence of nested | 
|  | types).  Test classes nested more than 9 levels deep (g++ mangles | 
|  | these differently) (both a demangle test and some tests which also | 
|  | test the compiler).  Test calling a method of a class nested more than | 
|  | 9 levels (for gdb_mangle_name and demangling). | 
|  |  | 
|  | Test static member functions (C++).  Test that "ptype" shows them | 
|  | correctly, both before and after they have been converted from stub | 
|  | methods.  Test that we can call them. | 
|  |  | 
|  | Test printing complicated types, including functions, pointers to | 
|  | arrays of pointers of functions, functions which return pointers to | 
|  | functions, etc. | 
|  |  | 
|  | printcmd.exp--test printing enum values.  Test printing an enum | 
|  | variable whose value is out of range.  Test "p (int)enum_var", "p/x | 
|  | enum_var".  Test that in something like "enum {FOO, LAST_THING=FOO}" | 
|  | we print FOO, not LAST_THING. | 
|  |  | 
|  | Test GDB expressions--test all operators (and overloaded operators for | 
|  | C++).  Test integer constants which are signed or unsigned int, long, | 
|  | or long long.  Test detection of overflow of an integer constant. | 
|  | Here are a few integer constants to test (test they get the right | 
|  | types): 5, 5LL, 5LuL, 5L6u (invalid), 5LU.  Maybe things like | 
|  | 0x12345678, 0x87654321, etc., but their types depend on sizes of int, | 
|  | long, etc. | 
|  |  | 
|  | Test that printing const-qualified versions of various types works. | 
|  | In particular, on the sparc and probably other machines, "double" is | 
|  | handled differently from most types because it requires more alignment | 
|  | and thus goes in a different section (there is a gcc 2.4.5 bug with | 
|  | "const double" on sparc). | 
|  |  | 
|  | Test that GDB's "source" command works and that things work if stdin | 
|  | is redirected (to a file or a pipe).  Test user defined command.  Run | 
|  | an inferior each of these ways (to test that inflow.c works).  Test | 
|  | that GDB works if the last line of stdin or a source'd file lacks a | 
|  | newline. | 
|  |  | 
|  | Test that unmatched single quotes produce error messages, both in | 
|  | expressions and linespecs. | 
|  |  | 
|  | Test "cd".  "foo/bar/.." should get simplified to "foo".  "/../.." | 
|  | should not get simplified (for Mach).  "/.." should not get simplified | 
|  | (for other networked OSes; POSIX.1 section B.2.3.7).  All these | 
|  | examples should continue to work with trailing slashes. | 
|  |  | 
|  | Test scoping; here is a start | 
|  | 1	int i=2; | 
|  | 2	int j=3; | 
|  | 3	main() | 
|  | 4	{ | 
|  | 5	    int i; | 
|  | 6	    for (i=600; i>0; i--) | 
|  | 7		print_line(i); | 
|  | 8	} | 
|  | 9 | 
|  | 10	print_line(i) | 
|  | 11	    int i; | 
|  | 12	{ | 
|  | 13	    h(); | 
|  | 14	    printf("%d\n",i); | 
|  | 15	} | 
|  | 16 | 
|  | 17	h() | 
|  | 18	{ | 
|  | 19	    printf("In h..."); | 
|  | 20	} | 
|  | Set a breakpoint in h, and print i, print_line::i, and main::i.  Set a | 
|  | breakpoint in main (or don't run the program), and test that | 
|  | print_line::i is an error.  But if i were static, "p main::i" should | 
|  | work even if the program is not being run. | 
|  |  | 
|  | Write a test for the reentracy bug with rs6000_struct_return_address | 
|  | in rs6000-tdep.c. | 
|  |  | 
|  | Test "return" from dummy frames.  Test "return" from non-innermost | 
|  | frame.  Test that "return" from a non-innermost frame restores | 
|  | registers which are saved not in that frame but in a frame more inner | 
|  | (I believe this currently works on few if any architectures). | 
|  |  | 
|  | FORTRAN common blocks (a.out and xcoff--weird.exp has the start of | 
|  | one but it is not quite right as of 19 Nov 1993). | 
|  |  | 
|  | Test that "x" command sets $_ and $__.  Test $_ in general. | 
|  |  | 
|  | Test that "p/a" works when given addresses in text, data, and bss | 
|  | segments.  Test that it works if program is compiled with or without | 
|  | -g.  Test that it works if preceding symbol is static or if it is | 
|  | extern. | 
|  |  | 
|  | Given `char abc[] = "abc\0def";' test "x/s abc" followed by "x/s" | 
|  | (should display "abc" followed by "def").  Test this works with no | 
|  | error message even if this is the last thing in the section (tests | 
|  | that val_print_string ignores an error if the error occurs after the | 
|  | '\0'). | 
|  |  | 
|  | Test ability to process NMAGIC a.out files. | 
|  |  | 
|  | Test shared libraries:  "next" over printf, "step" into a function in | 
|  | a shared library which has line number info, breakpoint in a function | 
|  | in a shared library (either before or after the program is run and the | 
|  | shared libraries are loaded--also maybe write a test where the PLT | 
|  | will be in an unloaded state even though the shared library is loaded). | 
|  |  | 
|  | If there are two breakpoints in the same place, and exactly one of | 
|  | them has its condition true, test that the correct breakpoint gets | 
|  | printed. | 
|  |  | 
|  | Test "jump" including jump to a breakpoint (the latter will need an | 
|  | xfail for UDI and probably VxWorks (PR 1786 for vxworks; PR 2416 | 
|  | contains some info for 29k). | 
|  |  | 
|  | Set a watchpoint on a local variable (to be interesting, make a few | 
|  | calls, to be more interesting, make a recursive call).  Test that it | 
|  | gets disabled when leaving that scope. | 
|  |  | 
|  | Test calling a function, hitting a breakpoint in the called function, | 
|  | calling another function, and hitting a breakpoint.  Test backtrace | 
|  | works in the presence of multiple dummy frames.  Test that "continue" | 
|  | will get you out of the inner called function, and "continue" again | 
|  | will get you back to where you were when you called the first one. | 
|  |  | 
|  | Test special longjmp handling in wait_for_inferior (need to figure out | 
|  | in detail what the proper behavior in each case is).  Test longjmp to | 
|  | a place where there is a breakpoint (such that | 
|  | BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE happens).  In general, test | 
|  | interactions between longjmp and watchpoints, breakpoints, stepping, | 
|  | call function, etc. | 
|  |  | 
|  | Test jumping right past a breakpoint (the case where wait_for_inferior | 
|  | passes not_a_breakpoint to bpstat_stop_status).  Might already be | 
|  | tested by some of the sun3 tests.  Probably want a .s test to avoid | 
|  | compiler dependencies. | 
|  |  | 
|  | Test more obscure wait_for_inferior cases, expanding on the tests in | 
|  | watchpoint.exp, signals.exp, etc. | 
|  |  | 
|  | Test stepping into functions which are one line long and functions | 
|  | which are on line 1 of the source file. (there is a class of bugs in | 
|  | which gdb doesn't find the line number information, and thus doesn't | 
|  | step into the function). | 
|  |  | 
|  | Test that prologue recognition, backtrace, printing locals, etc., | 
|  | still work in the presence of large frames (the point being that at | 
|  | some point immediate fields in RISC instructions will overflow and | 
|  | prologues will need to look different.  For sparc, the immediate field | 
|  | is 13 bits (signed), so I believe the threshold would be 4K bytes in a | 
|  | frame). | 
|  |  | 
|  |  | 
|  | (this is for editing this file with GNU emacs) | 
|  | Local Variables: | 
|  | mode: text | 
|  | End: |