| 1 | The highest priority item is not on this list: Fix bugs in the |
| 2 | existing testsuite, fix the GDB/compiler/shell/etc bugs which it |
| 3 | detects (particularly when they are hard to XFAIL), make it run |
| 4 | reliably without unexpected failures on the "standard" machines, etc. |
| 5 | This list exists largely as "tests we can add when we are ready to |
| 6 | risk destabilizing it again". |
| 7 | |
| 8 | There are some tests which are only run on some platforms because they |
| 9 | have not been tested on more platforms. Enable them and fix any |
| 10 | problems. A partial list: recurse.exp, watchpoint.exp |
| 11 | (test_watchpoint_triggered_in_syscall, test_complex_watchpoint). |
| 12 | |
| 13 | Test printing of structures passed by value, for the 7th, 8th, and 9th |
| 14 | arguments (PR 1714). Test printing structure arguments of |
| 15 | 2,4,6,8,12,16,and 20 bytes. Same for structure return of all those |
| 16 | sizes ("return", "finish", and call function). |
| 17 | |
| 18 | Get crossload tests to use --enable-targets and reenable them. |
| 19 | |
| 20 | corefile.exp: |
| 21 | Test ability to run program when there is a core target, then go |
| 22 | back to the core file when the program exits. |
| 23 | |
| 24 | Test handling of floating point variables |
| 25 | 1. float, double, or long double |
| 26 | 2. in register or saved register or memory. Also the case where a |
| 27 | double is in two float registers and only one of them is saved. |
| 28 | 3. print them or set them |
| 29 | 4. (Alpha) integer (32 or 64 bit) in floating point register. |
| 30 | |
| 31 | Print registers--"p $r5", "p sizeof ($r5)". Test that they print |
| 32 | appropriately (integer registers in decimal, registers which always |
| 33 | contain addresses (pc, probably sp and fp, maybe others) in hex, |
| 34 | floating point). |
| 35 | |
| 36 | Test completer. Test that it completes a variety of things correctly |
| 37 | (see the list of test cases in main.c in the gdb source). Test TAB, |
| 38 | M-?, and the "complete" command. |
| 39 | |
| 40 | Test "info line" with all kinds of linespecs. Test that the last line |
| 41 | of the file works right. |
| 42 | |
| 43 | weird.exp--test that unrecognized cross-reference types or |
| 44 | unrecognized visibility or virtual characters get skipped properly |
| 45 | (see stabs.texinfo). |
| 46 | |
| 47 | Test C++ nested types (especially if PR 1954 is fixed; even if not |
| 48 | *some* things already should work even in the presence of nested |
| 49 | types). Test classes nested more than 9 levels deep (g++ mangles |
| 50 | these differently) (both a demangle test and some tests which also |
| 51 | test the compiler). Test calling a method of a class nested more than |
| 52 | 9 levels (for gdb_mangle_name and demangling). |
| 53 | |
| 54 | Test static member functions (C++). Test that "ptype" shows them |
| 55 | correctly, both before and after they have been converted from stub |
| 56 | methods. Test that we can call them. |
| 57 | |
| 58 | Test printing complicated types, including functions, pointers to |
| 59 | arrays of pointers of functions, functions which return pointers to |
| 60 | functions, etc. |
| 61 | |
| 62 | printcmd.exp--test printing enum values. Test printing an enum |
| 63 | variable whose value is out of range. Test "p (int)enum_var", "p/x |
| 64 | enum_var". Test that in something like "enum {FOO, LAST_THING=FOO}" |
| 65 | we print FOO, not LAST_THING. |
| 66 | |
| 67 | Test GDB expressions--test all operators (and overloaded operators for |
| 68 | C++). Test integer constants which are signed or unsigned int, long, |
| 69 | or long long. Test detection of overflow of an integer constant. |
| 70 | Here are a few integer constants to test (test they get the right |
| 71 | types): 5, 5LL, 5LuL, 5L6u (invalid), 5LU. Maybe things like |
| 72 | 0x12345678, 0x87654321, etc., but their types depend on sizes of int, |
| 73 | long, etc. |
| 74 | |
| 75 | Test that printing const-qualified versions of various types works. |
| 76 | In particular, on the sparc and probably other machines, "double" is |
| 77 | handled differently from most types because it requires more alignment |
| 78 | and thus goes in a different section (there is a gcc 2.4.5 bug with |
| 79 | "const double" on sparc). |
| 80 | |
| 81 | Test that GDB's "source" command works and that things work if stdin |
| 82 | is redirected (to a file or a pipe). Test user defined command. Run |
| 83 | an inferior each of these ways (to test that inflow.c works). Test |
| 84 | that GDB works if the last line of stdin or a source'd file lacks a |
| 85 | newline. |
| 86 | |
| 87 | Test that unmatched single quotes produce error messages, both in |
| 88 | expressions and linespecs. |
| 89 | |
| 90 | Test "cd". "foo/bar/.." should get simplified to "foo". "/../.." |
| 91 | should not get simplified (for Mach). "/.." should not get simplified |
| 92 | (for other networked OSes; POSIX.1 section B.2.3.7). All these |
| 93 | examples should continue to work with trailing slashes. |
| 94 | |
| 95 | Test scoping; here is a start |
| 96 | 1 int i=2; |
| 97 | 2 int j=3; |
| 98 | 3 main() |
| 99 | 4 { |
| 100 | 5 int i; |
| 101 | 6 for (i=600; i>0; i--) |
| 102 | 7 print_line(i); |
| 103 | 8 } |
| 104 | 9 |
| 105 | 10 print_line(i) |
| 106 | 11 int i; |
| 107 | 12 { |
| 108 | 13 h(); |
| 109 | 14 printf("%d\n",i); |
| 110 | 15 } |
| 111 | 16 |
| 112 | 17 h() |
| 113 | 18 { |
| 114 | 19 printf("In h..."); |
| 115 | 20 } |
| 116 | Set a breakpoint in h, and print i, print_line::i, and main::i. Set a |
| 117 | breakpoint in main (or don't run the program), and test that |
| 118 | print_line::i is an error. But if i were static, "p main::i" should |
| 119 | work even if the program is not being run. |
| 120 | |
| 121 | Write a test for the reentracy bug with rs6000_struct_return_address |
| 122 | in rs6000-tdep.c. |
| 123 | |
| 124 | Test "return" from dummy frames. Test "return" from non-innermost |
| 125 | frame. Test that "return" from a non-innermost frame restores |
| 126 | registers which are saved not in that frame but in a frame more inner |
| 127 | (I believe this currently works on few if any architectures). |
| 128 | |
| 129 | FORTRAN common blocks (a.out and xcoff--weird.exp has the start of |
| 130 | one but it is not quite right as of 19 Nov 1993). |
| 131 | |
| 132 | Test that "x" command sets $_ and $__. Test $_ in general. |
| 133 | |
| 134 | Test that "p/a" works when given addresses in text, data, and bss |
| 135 | segments. Test that it works if program is compiled with or without |
| 136 | -g. Test that it works if preceding symbol is static or if it is |
| 137 | extern. |
| 138 | |
| 139 | Given `char abc[] = "abc\0def";' test "x/s abc" followed by "x/s" |
| 140 | (should display "abc" followed by "def"). Test this works with no |
| 141 | error message even if this is the last thing in the section (tests |
| 142 | that val_print_string ignores an error if the error occurs after the |
| 143 | '\0'). |
| 144 | |
| 145 | Test ability to process NMAGIC a.out files. |
| 146 | |
| 147 | Test shared libraries: "next" over printf, "step" into a function in |
| 148 | a shared library which has line number info, breakpoint in a function |
| 149 | in a shared library (either before or after the program is run and the |
| 150 | shared libraries are loaded--also maybe write a test where the PLT |
| 151 | will be in an unloaded state even though the shared library is loaded). |
| 152 | |
| 153 | If there are two breakpoints in the same place, and exactly one of |
| 154 | them has its condition true, test that the correct breakpoint gets |
| 155 | printed. |
| 156 | |
| 157 | Test "jump" including jump to a breakpoint (the latter will need an |
| 158 | xfail for UDI and probably VxWorks (PR 1786 for vxworks; PR 2416 |
| 159 | contains some info for 29k). |
| 160 | |
| 161 | Set a watchpoint on a local variable (to be interesting, make a few |
| 162 | calls, to be more interesting, make a recursive call). Test that it |
| 163 | gets disabled when leaving that scope. |
| 164 | |
| 165 | Test calling a function, hitting a breakpoint in the called function, |
| 166 | calling another function, and hitting a breakpoint. Test backtrace |
| 167 | works in the presence of multiple dummy frames. Test that "continue" |
| 168 | will get you out of the inner called function, and "continue" again |
| 169 | will get you back to where you were when you called the first one. |
| 170 | |
| 171 | Test special longjmp handling in wait_for_inferior (need to figure out |
| 172 | in detail what the proper behavior in each case is). Test longjmp to |
| 173 | a place where there is a breakpoint (such that |
| 174 | BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE happens). In general, test |
| 175 | interactions between longjmp and watchpoints, breakpoints, stepping, |
| 176 | call function, etc. |
| 177 | |
| 178 | Test jumping right past a breakpoint (the case where wait_for_inferior |
| 179 | passes not_a_breakpoint to bpstat_stop_status). Might already be |
| 180 | tested by some of the sun3 tests. Probably want a .s test to avoid |
| 181 | compiler dependencies. |
| 182 | |
| 183 | Test more obscure wait_for_inferior cases, expanding on the tests in |
| 184 | watchpoint.exp, signals.exp, etc. |
| 185 | |
| 186 | Test stepping into functions which are one line long and functions |
| 187 | which are on line 1 of the source file. (there is a class of bugs in |
| 188 | which gdb doesn't find the line number information, and thus doesn't |
| 189 | step into the function). |
| 190 | |
| 191 | Test that prologue recognition, backtrace, printing locals, etc., |
| 192 | still work in the presence of large frames (the point being that at |
| 193 | some point immediate fields in RISC instructions will overflow and |
| 194 | prologues will need to look different. For sparc, the immediate field |
| 195 | is 13 bits (signed), so I believe the threshold would be 4K bytes in a |
| 196 | frame). |
| 197 | |
| 198 | \f |
| 199 | (this is for editing this file with GNU emacs) |
| 200 | Local Variables: |
| 201 | mode: text |
| 202 | End: |