diff options
author | K. Richard Pixley <rich@cygnus> | 1991-03-28 16:28:29 +0000 |
---|---|---|
committer | K. Richard Pixley <rich@cygnus> | 1991-03-28 16:28:29 +0000 |
commit | dd3b648e8b12ceb7bfce66e7f179b671403aea9c (patch) | |
tree | 91119a0f4943acc9293cd8baba06943621b6e6c7 /gdb/TODO | |
parent | bd5635a1e2b38ee8432fcdaa6456079191375277 (diff) | |
download | gdb-dd3b648e8b12ceb7bfce66e7f179b671403aea9c.zip gdb-dd3b648e8b12ceb7bfce66e7f179b671403aea9c.tar.gz gdb-dd3b648e8b12ceb7bfce66e7f179b671403aea9c.tar.bz2 |
Johns release
Diffstat (limited to 'gdb/TODO')
-rw-r--r-- | gdb/TODO | 325 |
1 files changed, 325 insertions, 0 deletions
diff --git a/gdb/TODO b/gdb/TODO new file mode 100644 index 0000000..93dce62 --- /dev/null +++ b/gdb/TODO @@ -0,0 +1,325 @@ + + gdb bug list + John Gilmore, gnu@cygnus.com + +This bug list is probably not up to date or accurate, but it reflects +some known bugs in gdb, if you are into bug-hunting. + + +Update the TODO list with all the lists of gdb bugs lying around on paper. + +"share" command should not need to be manually run. It should be run +as soon as possible, automatically, both on "run" and on core files. + +It should be possible to use symbols from shared libraries before we know +exactly where the libraries will be loaded. E.g. "b perror" before running +the program. This could maybe be done as an extension of the "breakpoint +re-evaluation" after new symbols are loaded. + +Make single_step() insert and remove breakpoints in one operation. + +Speed up single stepping by avoiding extraneous ptrace calls. + +Speed up single stepping by not inserting and removing breakpoints +each time the inferior starts and stops. + +Speed up watchpoints by not single-stepping them, but do something +faster like single-line execution. + +Update gdb.texinfo to include doc on the directory structure and +the various tricks of building gdb. + +Do a tutorial in gdb.texinfo on how to do simple things in gdb. +E.g. how to set a breakpoint that just prints something and continues. +How to break on aborts. Etc. + +Do a "new features" section for release 4. + +Provide "voodoo" debugging of core files. This creates a zombie +process as a child of the debugger, and loads it up with the data, +stack, and regs of the core file. This allows you to call functions +in the executable, to manipulate the data in the core file. + +GDB reopens the source file on every line, as you "next" through it. + +Referencing the vtbl member of a struct doesn't work. It prints OK +if you print the struct, but it gets 0 if you try to deref it. + +Persistent command history: A feature where you could save off a list +of the commands you did, so you can edit it into something that will bring +the target to the same place every time you source it. Sun wants it. +This would also be useful for automated fast watchpointing; if you go +past the place where it watchpoints, you just start it over again and +do it more carefully. + +Deal with the Sun ptrace bug that loses the registers if the stack is +paged out. + +Finish the C++ exception handling stub routines. Lint points them out +as unused statics functions. + +"i source" only shows you info about files that it can read. When it +can't read a file and complains, you can't see any info about it, like +where it was compiled. Perhaps "i source" should take an argument +like that of "list". + +See if coredep.c's fetch_core_registers can be used on more machines. +E.g. MIPS (mips-xdep.c). + +coredep.c is completely broken. Needs work just to compile, it uses +"u" and doesn't declare it, etc. + +unpack_double() does not handle IEEE float on the target unless the host +is also IEEE. Death on a vax. + +Test cross-debugging Unix-to-Unix. + +Check the RAPP remote protocol. What is it? It's in Makefile.dist +and one ChangeLog entry. + +Set up interface between GDB and INFO so that you can hop into interactive +INFO and back out again. When running under Emacs, should use Emacs +info, else fork the info program. Installation of GDB should install +its texinfo files into the info tree automagically, including the readline +texinfo files.. + +Improve backtrace output to avoid line wraps. Prettify it. + +"help address" ought to find the "help set addressprint" entry. + +Remove the VTBL internal guts from printouts of C++ structs, unless +vtblprint is set. + +Remove "at 0xnnnn" from the "b foo" response, if !addressprint and if +it matches the source line indicated. + +The prompt at end of screen should accept space as well as CR. + +"List" should put you into a pseudo-"more" where you can hit space +to get more, forever to eof. + +Check STORE_RETURN_VALUE on all architectures. Check near it in tm-sparc.h +for other bogosities. + +Check for storage leaks in GDB, I'm sure there are a lot! + +vtblprint of a vtbl should demangle the names it's printing. + +Backtrace should point out what the currently selected frame is, in its +display, perhaps showing ">3 foo (bar, ...)" rather than "#3 foo (bar, ...)". + +"i program" should work for core files, and display more info, like what +actually caused it to die. + +Hitting ^Z to an inferior doesn't work right, it takes several continues +to make it actually go. + +"i fun" doesn't show misc function vector symbols. + +"x/10i" should shorten the long name, if any, on subsequent lines. + +Check through the code for FIXME comments and fix them. dbxread.c, +blockframe.c, and plenty more. + +"next" over a function that longjumps, never stops until next time you happen +to get to that spot by accident. E.g. "n" over execute_command which has +an error. + +Watchpoints seem not entirely reliable. + +"set zeroprint off", don't bother printing members of structs which are entirely +zero. Useful for those big structs with few useful members. + +GDB does four ioctl's for every command, probably switching terminal modes +to/from inferior or for readline or something. + +terminal_ours versus terminal_inferior: cache state. Switch should be a noop +if the state is the same, too. + +ptype $i6 = void??! + +Clean up invalid_float handling so gdb doesn't coredump when it tries to +access a NaN. While this might work on SPARC, other machines are not +configured right. + +"b value_at ; commands ; continue ; end" stops EVERY OTHER TIME! +Then once you enter a command, it does the command, runs two more +times, and then stops again! Bizarre... (This behaviour has been +modified, but it is not yet 100% predictable when e.g. the commands +call functions in the child, and while there, the child is interrupted +with a signal, or hits a breakpoint.) + +Symbol completion with TAB does not unmangle names! + +help completion, help history should work. + +Symbol completion doesn't handle e.g. W::f. (symtab.c, +make_symbol_completion_list). + +AMD version: ^C should do ^Ak to stop ebmon. + +Check that we can handle stack trace through varargs AND alloca in same +function, on 29K. + +wait_for_inferior loops forever if wait() gives it an error. + +"i frame" arg formatting sucks. Should wrap lines. +"bt" arg formatting needs the same treatment . + +"i frame" shows wrong "arglist at" location, doesn't show where the args +should be found, only their actual values. + +Symbolic display of addrs, (& disassembly prefixes), don't show static +fns, e.g. enable_command in gdb. + +'ptype yylval' ==> "union YYSTYPE { ..... }". However, it is not a +union YYSTYPE, but is simply a YYSTYPE, which is a typedef for an +unnamed union. + +"show all" should work. + +There should be a way for "set" commands to validate the new setting +before it takes effect. + +The "display" command should become the "always" command, e.g. + "always print XXX" + "always p/xxx XXX" + "always echo foo" + "always call XXX" + "always x/i $pc", etc. + +A mess of floating point opcodes are missing from sparc-opcode.h. +Also, a little program should test the table for bits that are +overspecified or underspecified. E.g. if the must-be-ones bits +and the must-be-zeroes bits leave some fields unexamined, and the format +string leaves them unprinted, then point this out. If multiple +non-alias patterns match, point this out too. Finally, there should +be a sparc-optest.s file that tries each pattern out. This file +should end up coming back the same (modulo transformation comments) +if fed to "gas" then the .o is fed to gdb for disassembly. + +Merge the xxx-opcode.h files with gas again... + +Eliminate all the core_file_command's in all the xdep files. +Eliminate separate declarations of registers[] everywhere. + +"ena d" is ambiguous, why? "ena delete" seems to think it is a command! + +Line numbers are off in some spots. In proceed() at 1st "oneproc = 1", +it seems to run that statement, but it doesn't actually. + +Perhaps the tdep and xdep files, and the tm and xm files, into a config +subdirectory. If not, at least straighten out their names so that +they all start with the machine name. + +inferior_status should include stop_print_frame. It won't need to be +reset in wait_for_inferior after bpstat_stop_status call, then. + +i line VAR produces "Line number not known for symbol ``var''.". I +thought we were stashing that info now! + +Make sure we can handle executables with no symbol info, e.g. /bin/csh. + +We should be able to write to executables that aren't running. + +We should be able to write to random files at hex offsets like adb. + +Tiemann: It is very painful to look at fp registers that hold +double precision values. GDB is happy to show them to you as single +precision, but you cannot look at them as doubles. Perhaps casting +should be changed to make this work; or maybe a new "set" option that +sets the default fp precision to single, double, or quad. This is not +urgent, but would be nice to get into GDB 4.0. + +Make "target xxx" command interruptible. + +Handle add_file with separate text, data, and bss addresses. Maybe +handle separate addresses for each segment in the object file? + +Handle free_named_symtab to cope with multiply-loaded object files +in a dynamic linking environment. Should remember the last copy loaded, +but not get too snowed if it finds references to the older copy. + +Implement have_memory, have_stack, have_registers, have_execution. +Memory: core, exec, child, vxworks even without child. +stack: core, child, vxworks with child +registers: core, child, vxworks with child +execution: child, vxworks with child. + +The original BFD core dump reading routine would itself coredump when fed +a garbage file as a core file. Does the current one? + +Breakpoints should not be inserted and deleted all the time. Only the +one(s) there should be removed when we have to step over one. Support +breakpoints that don't have to be removed to step over them. + +Stop reading stop_registers! + +Generalize and Standardize the RPC interface to a target program, +improve it beyond the "ptrace" interface, and see if it can become a standard +for remote debugging. Is WRS interested in donating their target-end +code? + +Remove all references to: + text_offset + data_offset + text_data_start + text_end + exec_data_offset + ... +now that we have BFD. All remaining are in machine dependent files. + +When quitting with a running program, if a core file was previously +examined, you get "Couldn't read float regs from core file"...if +indeed it can't. generic_mourn_inferior... + +... + +Check signal argument to remote proceed's and error if set. + +Handle floating point registers in core files under BFD. Currently +they are punted. + +Sort help and info output. + +Re-organize help categories into things that tend to fit on a screen +and hang together. + +When trying to print source lines but you can't find the file, +print the file name and line number, and leave it selected anyway +so "i source" will show it. + +renote-nindy.c handles interrupts poorly; it error()s out of badly +chosen places, e.g. leaving current_frame zero, which causes core dumps +on the next command. + +Add in commands like ADB's for searching for patterns, etc. We should +be able to examine and patch raw unsymboled binaries as well in gdb as +we can in adb. (E.g. increase the timeout in /bin/login without source). + +Those xdep files that call register_addr without defining it are +probably simply broken. When reconfiguring this part of gdb, I could +only make guesses about how to redo some of those files, and I +probably guessed wrong, or left them "for later" when I have a +machine that can attempt to build them. + +Use the complain() mechanism for handling all the error() calls in dbxread.c, +and in similar situations in coffread.c and mipsread.c. + +When doing "step" or "next", if a few lines of source are skipped between +the previous line and the current one, print those lines, not just the +last line of a multiline statement. + +When searching for C++ superclasses in value_cast in valops.c, we must +not search the "fields", only the "superclasses". There might be a +struct with a field name that matches the superclass name. This can +happen when the struct was defined before the superclass (before the +name became a typedef). + +For "float point[15];": +ptype &point[4] ==> Attempt to take address of non-lvalue. +p &point[4] ==> Dereferences point[4] rather than giving you point+4. + +Fix symbol reading in the presence of interrupts. It currently leaves a +cleanup to blow away the entire symbol table when a QUIT occurs. + |