1 If you find inaccuracies in this list, please send mail to
2 gdb-patches@sourceware.cygnus.com. If you would like to work on any
3 of these, you should consider sending mail to the same address, to
4 find out whether anyone else is working on it.
10 Below is a list of problems identified during the GDB 5.0 release
11 cycle. People hope to have these problems fixed in 5.1.
15 Update GDB's coding standard documentation. Known topics:
17 o alloca/malloc et.al.
29 Wow, three bug reports for the same problem in one day! We should
30 probably make fixing this a real priority :-).
32 Anyway, thanks for reporting.
34 The following patch will fix the problems with setting breakpoints in
35 dynamically loaded objects:
37 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00230.html
39 This patch isn't checked in yet (ping Michael/JimB), but I hope this
40 will be in the next GDB release.
42 There should really be a test in the testsuite for this problem, since
43 it keeps coming up :-(. Any volunteers?
49 x86 linux GDB and SIGALRM (???)
50 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00803.html
52 This problem has been fixed, but a regression test still needs to be
53 added to the testsuite:
54 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00309.html
58 [The test has been submitted for approval - cagney]
62 RFD: infrun.c: No bpstat_stop_status call after proceed over break?
63 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00665.html
65 GDB misses watchpoint triggers after proceeding over a breakpoint on
70 GDB 5.0 doesn't work on Linux/SPARC
72 There are two parts to this.
74 o GDB 5.0 doesn't work on GNU/Linux/SPARC32
76 o GDB 5.0 doesn't work on the new target
79 GDB does build on both these targets.
81 The first problem is the one that should be fixed.
85 GDB 5.1 - New features
86 ======================
88 The following new features should be included in 5.1.
92 Pascal (Pierre Muller, David Taylor)
94 Pierre Muller has contributed patches for adding Pascal Language
97 2 pascal language patches inserted in database
98 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00521.html
101 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00496.html
103 [I think this has been merged, need to confirm - cagney]
107 Java (Anthony Green, David Taylor)
109 Anthony Green has a number of Java patches that did not make it into
110 the 5.0 release. The first two are in cvs now, but the third needs
111 some fixing up before it can go in.
114 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00512.html
117 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00515.html
119 Patch: handle N_MAIN stab
120 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00527.html
126 A predicate to this is the multi-arching of SOFTWARE_SINGLE_STEP(). A
127 patch has been submitted.
134 The following code cleanups will hopefully be applied to GDB 5.1.
138 Fix copyright notices.
140 Turns out that ``1998-2000'' isn't considered valid :-(
142 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00467.html
146 GDB 5.1 - Known Problems
147 ========================
153 The z8k has suffered bit rot and is known to not build. The problem
154 was occuring in the opcodes directory.
160 The m88k has suffered bit rot and is known to not build.
164 Solaris 8 x86 CURSES_H problem
165 http://sources.redhat.com/ml/gdb/2000-07/msg00038.html
167 The original problem was worked around with:
169 2000-06-06 Michael Snyder <msnyder@cygnus.com>
171 * configure.in: Enable autoconf to find curses.h on Solaris 2.8.
172 * configure: Regenerate.
174 When building both GDB and SID using the same source tree the problem
175 will still occure. sid/component/configure.in mis-configures
176 <curses.h> and leaves wrong information in the config cache.
185 GDB 5.2 - New features
186 ======================
190 GCC 3.0 ABI support (but hopefully sooner...).
194 Objective C/C++ support (but hopefully sooner...).
198 Import of readline 4.2
205 The following cleanups have been identified as part of GDB 5.2.
209 Remove old code that does not use ui_out functions and all the related
210 "ifdef"s. This also allows the elimination of -DUI_OUT from
211 Makefile.in and configure.in.
217 Eliminate warnings for all targets on at least one host for one of the
218 -W flags. Flags up for debate include: -Wswitch -Wcomment -trigraphs
219 -Wtrigraphs -Wunused-function -Wunused-label -Wunused-variable
220 -Wunused-value -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
221 -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
222 -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
223 -Woverloaded-virtual -Winline
227 Deprecate, if not delete, the following:
233 Replaced by, on the target side
235 and on core-gdb side:
236 {read,write}_register_gen()
237 Remote.c will need to use something
238 other than REGISTER_BYTE() and
239 REGISTER_RAW_SIZE() when unpacking
242 STORE_PSEUDO_REGISTER
243 FETCH_PSEUDO_REGISTER
244 Now handed by the methods
245 gdbarch_{read,write}_register()
246 which sits between core GDB and
250 REGISTER_CONVERT_TO_RAW
251 REGISTER_CONVERT_TO_VIRTUAL
252 I think these three are redundant.
253 gdbarch_register_{read,write} can
254 do any conversion it likes.
256 REGISTER_VIRTUAL_SIZE
257 MAX_REGISTER_VIRTUAL_SIZE
258 REGISTER_VIRTUAL_TYPE
259 I think these can be replaced by
261 FRAME_REGISTER_TYPE(frame, regnum)
262 REGISTER_TYPE(regnum)
266 FRAME_REGISTER_INFO (frame, ...)
269 If nothing else rename this so that
270 how it relates to rawreg and the
274 The size of the cache can be computed
277 IS_TRAPPED_INTERNALVAR
278 The pseudo registers should eventually make
283 Obsolete the targets.
289 Obsolete the protocols:
293 ``As of version 5.3, WindRiver has removed the RDB server (RDB
294 protocol support is built into gdb).'' -- Till.
298 Restructure gdb directory tree so that it avoids any 8.3 and 14
303 Convert GDB build process to AUTOMAKE.
305 See also sub-directory configure below.
307 The current convention is (kind of) to use $(<header>_h) in all
308 dependency lists. It isn't done in a consistent way.
312 GDB 5.2 - Known Problems
313 ========================
317 Code Cleanups: General
318 ======================
320 The following are more general cleanups and fixes. They are not tied
321 to any specific release.
325 Investigate changing --target=a29k-amd-udi to a29k-*-coff* and
326 rationalize *.mt files. The got-ya is in remote-eb.c - it has its own
327 custom tty manipulation - it should be using the serial object.
331 Rename read_register{,_pid}() to read_unsigned_register{,_pid}().
335 Problem with weak functions
336 http://sourceware.cygnus.com/ml/gdb/2000-05/msg00060.html
338 Dan Nicolaescu writes:
339 > It seems that gdb-4.95.1 does not display correctly the function when
340 > stoping in weak functions.
342 > It stops in a function that is defined as weak, not in the function
343 > that is actually run...
347 Follow through `make check' with --enable-shared.
349 When the srcware tree is configured with --enable-shared, the `expect'
350 program won't run properly. Jim Wilson found out gdb has a local hack
351 to set LD_LIBRARY_PATH, but, AFAIK, no other project has been hacked
354 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00845.html
358 Delete macro TARGET_BYTE_ORDER_SELECTABLE.
360 Patches in the database.
364 printcmd.c (print_address_numeric):
366 NOTE: This assumes that the significant address information is kept in
367 the least significant bits of ADDR - the upper bits were either zero
368 or sign extended. Should ADDRESS_TO_POINTER() or some
369 ADDRESS_TO_PRINTABLE() be used to do the conversion?
373 The BFD directory requires bug-fixed AUTOMAKE et.al.
375 AUTOMAKE 1.4 incorrectly set the TEXINPUTS environment variable. It
376 contained the full path to texinfo.tex when it should have only
377 contained the directory. The bug has been fixed in the current
378 AUTOMAKE sources. Automake snapshots can be found in:
379 ftp://sourceware.cygnus.com/pub/gdb/snapshots
380 and ftp://sourceware.cygnus.com/pub/binutils
384 Find something better than DEFAULT_BFD_ARCH, DEFAULT_BFD_VEC to
385 determine the default isa/byte-order.
389 Rely on BFD_BIG_ENDIAN and BFD_LITTLE_ENDIAN instead of host dependent
390 BIG_ENDIAN and LITTLE_ENDIAN.
394 Eliminate more compiler warnings.
396 Of course there also needs to be the usual debate over which warnings
397 are valid and how to best go about this.
399 One method: choose a single option; get agreement that it is
400 reasonable; try it out to see if there isn't anything silly about it
401 (-Wunused-parameters is an example of that) then incrementally hack
404 The other method is to enable all warnings and eliminate them from one
409 Elimination of ``(catch_errors_ftype *) func''.
411 Like make_cleanup_func it isn't portable.
412 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00791.html
413 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00814.html
417 Nuke #define CONST_PTR.
425 [PATCH/5] src/intl/Makefile.in:distclean additions
426 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00363.html
428 Do not forget to merge the patch back into the trunk.
432 Rationalize the host-endian code (grep for HOST_BYTE_ORDER).
434 At present defs.h includes <endian.h> (which is linux specific) yet
435 almost nothing depends on it. Suggest "gdb_endian.h" which can also
436 handle <machine/endian.h> and only include that where it is really
441 Replace savestring() with something from libiberty.
443 An xstrldup()? but that would have different semantics.
447 Rationalize use of floatformat_unknown in GDB sources.
449 Instead of defaulting to floatformat_unknown, should hosts/targets
450 specify the value explicitly?
452 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00447.html
456 Add a ``name'' member to include/floatformat.h:struct floatformat.
457 Print that name in gdbarch.c.
461 Sort out the harris mess in include/floatformat.h (it hardwires two
462 different floating point formats).
466 See of the GDB local floatformat_do_doublest() and libiberty's
467 floatformat_to_double (which was once GDB's ...) can be merged some
472 Eliminate mmalloc(), mstrsave() et.al. from GDB.
474 Also eliminate it from defs.h.
478 Eliminate PTR. ISO-C allows ``void *''.
484 GDB should never abort. GDB should either throw ``error ()'' or
485 ``internal_error ()''. Better still GDB should naturally unwind with
490 GDB probably doesn't build on FreeBSD pre 2.2.x
491 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00378.html
493 Fixes to get FreeBSD working on 2.2.x, 3.x and 4.x caused the code to
498 Deprecate "fg". Apparently ``fg'' is actually continue.
500 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00417.html
504 Deprecate current use of ``floatformat_unknown''.
506 Require all targets to explicitly provide their float format instead
507 of defaulting to floatformat unknown. Doing the latter leads to nasty
510 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00447.html
514 Rationalize floatformat_to_double() vs floatformat_to_doublest().
516 Looks like GDB migrated floatformat_to_double() to libiberty but then
517 turned around and created a ..._to_doublest() the latter containing
520 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00472.html
524 Move floatformat_ia64_ext to libiberty/include floatformat.[ch].
526 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00466.html
530 The ``maintenance deprecate set endian big'' command doesn't notice
531 that it is deprecating ``set endian'' and not ``set endian big'' (big
532 is implemented using an enum). Is anyone going to notice this?
536 When tab expanding something like ``set arch<tab>'' ignore the
537 deprecated ``set archdebug'' and expand to ``set architecture''.
541 Eliminate ``arm_register_names[j] = (char *) regnames[j]'' and the
542 like from arm-tdep.c.
546 Fix uses of ->function.cfunc = set_function().
548 The command.c code calls sfunc() when a set command. Rather than
549 change it suggest fixing the callback function so that it is more
552 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00062.html
554 See also ``Fix implementation of ``target xxx''.'' below.
558 IRIX 3.x support is probably broken.
562 Delete sim/SIM_HAVE_BREAKPOINTS and gdb/SIM_HAS_BREAKPOINTS.
563 http://sourceware.cygnus.com/ml/gdb-patches/2000-07/msg00042.html
565 Apart from the d30v, are there any sim/common simulators that make use
568 A brief summary of what happened is that sim/common/sim-break.c was
569 created as a good idea. It turned out a better idea was to use
570 SIM_SIGBREAK and have GDB pass back sim_resume (..., SIGBREAK).
574 Move remote_remove_hw_breakpoint, remote_insert_hw_breakpoint,
575 remote_remove_watchpoint, remote_insert_watchpoint into target vector.
579 Eliminate ``extern'' from C files.
583 Replace ``STREQ()'' et.al. with ``strcmp() == 0'' et.al.
585 Extreme care is recommeded - perhaps only modify tests that are
586 exercised by the testsuite (as determined using some type of code
591 Replace the file gdb/CONTRIBUTE with a file that is generated from the
592 gdb/doc/*.texinfo directory.
596 Rewrite/break up sparcl-tdep.c so that it uses ser*.c as the mechanism
597 for accessing either the serial or UDP port.
601 New Features and Fixes
602 ======================
604 These are harder than cleanups but easier than work involving
605 fundamental architectural change.
609 Hardware watchpoint problems on x86 OSes, including Linux:
611 1. Delete/disable hardware watchpoints should free hardware debug
613 2. Watch for different values on a viariable with one hardware debug
616 According to Eli Zaretskii <eliz@delorie.com>:
618 These are not GDB/ia32 issues per se: the above features are all
619 implemented in the DJGPP port of GDB and work in v5.0. Every
620 x86-based target should be able to lift the relevant parts of
621 go32-nat.c and use them almost verbatim. You get debug register
622 sharing through reference counts, and the ability to watch large
623 regions (up to 16 bytes) using multiple registers. (The required
624 infrastructure in high-level GDB application code, mostly in
625 breakpoint.c, is also working since v5.0.)
629 Add built-by, build-date, tm, xm, nm and anything else into gdb binary
630 so that you can see how the GDB was created.
634 Add an "info bfd" command that displays supported object formats,
635 similarly to objdump -i.
637 Is there a command already?
641 Fix ``I'm sorry, Dave, I can't do that.'' from symfile.c.
643 This requires internationalization.
649 (gdb) p fwprintf(stdout,L"%S\n", f)
650 No symbol "L" in current context.
654 Cleanup configury support for optional sub-directories.
656 Check how GCC handles multiple front ends for an example of how things
657 could work. A tentative first step is to rationalize things so that
658 all sub directories are handled in a fashion similar to gdb/mi.
660 See also automake above.
664 Add a transcript mechanism to GDB.
666 Such a mechanism might log all gdb input and output to a file in a
667 form that would allow it to be replayed. It could involve ``gdb
668 --transcript=FILE'' or it could involve ``(gdb) transcript file''.
672 Can the xdep files be replaced by autoconf?
676 Document trace machinery
680 Document ui-out and ui-file.
682 http://sourceware.cygnus.com/ml/gdb/2000-04/msg00121.html
686 Update texinfo.tex to latest?
690 Incorporate agentexpr.texi into gdb.texinfo
692 agentexpr.texi mostly describes the details of the byte code used for
693 tracepoints, not the internals of the support for this in GDB. So it
694 looks like gdb.texinfo is a better place for this information.
696 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00566.html
700 Document overlay machinery.
704 ``(gdb) catch signal SIGNAL''
706 Overlaps with ``handle SIGNAL'' but the implied behavior is different.
707 You can attach commands to a catch but not a handle. A handle has a
708 limited number of hardwired actions.
714 o readline/*.h bitrot
716 The TUI isn't up-to-date with
717 respect to the readline currently
718 bundled with GDB. Importing a
719 new readline is on the 5.1 wish
720 list so this can only get worse.
722 Grep for things like term_cursor_move.
724 (To be honest, I don't see anyone
725 importing a new readline before 5.1 is
728 o tui.c:va_catch_errors() bitrot
730 This nasty piece of work used knowledge
731 of the internals of GDBs error functions :-(
732 Ever since those internals were cleaned
733 up this code has been broken. :-(
735 o tuiWin.c:c_makeVisibleWithNewHeight() broken
736 tuiLayout.c:_extractDisplayStartAddr() broken
738 Both these function call find_line_pc()
739 incorrectly (wrong args, wrong return value).
741 I suspect this bug has always been there!
742 It had been hidden because those files
743 didn't include the necessary header files
746 o tuiRegs() host dependant
748 Not suprisingly, this isn't a very portable
749 section of code. However, I'm sure people
750 could live with no regs in the short to
753 o defs.h: #include "tui.h" et.al.
755 I'm not sure where this came from.
756 It was a really bad idea.
758 To get things to compile I did a nasty
759 hack (Just declare what was needed and
760 replace any expressions like xx->y.z()
761 in GDB proper with function calls). I
762 could commit it slightly cleaned up if
765 Medium Term. the #ifdef TUI and TuiDo()
766 should be changed to hooks (like GDBTK).
767 The gdb-events.[hc] is there for that
770 o tui.c:_tuiReset() host dependant
772 tui.c contains a lump of termio[s]
773 I suspect an equivalent block of
774 code can be lifted from readline.
775 An equivalent readline function may
778 o curses.h vs ncurses.h.
780 Simple portability problem.
784 This function is a mystery - where is it?
786 o tui-file.[hc] cleanup
788 This can be significantly simplified.
790 o The code should be pacified. (-Werror -W...)
792 There are plenty of #includes,
793 duplicate #includes, missing function decls
796 Some of the problems I found were through
797 fixing a few of the warnings.
799 o The code should be GNUtified.
801 It would be very nice to have this code
802 look like the rest of GDB. That way people
803 would be more accepting of it as a true
806 Until it is GNUtified it is going to stick
807 out like a sore thumb to the programmer.
809 o The code should be clearly copyrighted
811 (FSF, with due credit to HP)
815 Add support for ``gdb --- PROGRAM ARGS ...''.
816 Add support for ``gdb -cmd=...''
818 Along with many variations. Check:
820 ????? for a full discussion.
826 Implement ``(gdb) !ls''.
828 Which is very different from ``(gdb) ! ls''. Implementing the latter
831 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00034.html
835 Change the (char *list[]) to (const char (*)[]) so that dynamic lists can
840 When tab expanding something like ``set arch<tab>'' ignore the
841 deprecated ``set archdebug'' and expand to ``set architecture''.
845 Replace the code that uses the host FPU with an emulator of the target
850 The "ocd reset" command needs to flush the dcache, which requires breaking
851 the abstraction layer between the target independent and target code. One
852 way to address this is provide a generic "reset" command and target vector.
854 http://sources.redhat.com/ml/gdb-patches/2000-10/msg00011.html
861 New languages come onto the scene all the time.
865 Re: Various C++ things
867 value_headof/value_from_vtable_info are worthless, and should be
868 removed. The one place in printcmd.c that uses it should use the RTTI
871 RTTI for g++ should be using the typeinfo functions rather than the
872 vtables. The typeinfo functions are always at offset 4 from the
873 beginning of the vtable, and are always right. The vtables will have
874 weird names like E::VB sometimes. The typeinfo function will always
875 be "E type_info function", or somesuch.
877 value_virtual_fn_field needs to be fixed so there are no failures for
878 virtual functions for C++ using g++.
880 Testsuite cases are the major priority right now for C++ support,
881 since i have to make a lot of changes that could potentially break
886 Add support for Modula3
888 Get DEC/Compaq to contribute their Modula-3 support.
892 Remote Protocol Support
893 =======================
897 Revised UDP support (was: Re: [Fwd: [patch] UDP transport support])
898 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00000.html
900 (Broken) support for GDB's remote protocol across UDP is to be
901 included in the follow-on release.
903 It should be noted that UDP can only work when the [Gg] packet fits in
906 There is also much debate over the merit of this.
910 Migrate qfThreadInfo packet -> qThreadInfo. (Andrew Cagney)
912 Add support for packet enable/disable commands with these thread
913 packets. General cleanup.
915 [PATCH] Document the ThreadInfo remote protocol queries
916 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00832.html
918 [PATCH] "info threads" queries for remote.c
919 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00831.html
923 Remote protocol doco feedback.
925 Too much feedback to mention needs to be merged in (901660). Search
926 for the word ``remote''.
929 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00023.html
930 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00056.html
931 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00382.html
935 GDB doesn't recover gracefully from remote protocol errors.
937 GDB wasn't checking for NAKs from the remote target. Instead a NAK is
938 ignored and a timeout is required before GDB retries. A pre-cursor to
939 fixing this this is making GDB's remote protocol packet more robust.
941 While downloading to a remote protocol target, gdb ignores packet
942 errors in so far as it will continue to download with chunk N+1 even
943 if chunk N was not correctly sent. This causes gdb.base/remote.exp to
944 take a painfully long time to run. As a PS that test needs to be
945 fixed so that it builds on 16 bit machines.
949 Fix the ``!'' packet.
951 JT reported that the existing targets do, in fact return ``OK'' so it
952 is possible to merge remote and extended-remote targets.
956 Drop ``<address>'' from the [SsCc] packets.
958 I don't think that GDB generates them so having it in the protocol is
963 Fix doco on the ``q'' packet.
965 It has evolved into a generic RPC. The notes should reflect this and,
966 perhaps, the ``Q'' packet can be deprecated.
968 The doco should mention that ``OK'' is a valid packet response.
970 The doco should explain why ``OK'' needs to be a valid packet
975 Add the cycle step command.
977 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00237.html
981 Resolve how to scale things to support very large packets.
985 Resolve how to handle a target that changes things like its endianess
986 on the fly - should it be returned in the ``T'' packet?
988 Underlying problem is that the register file is target endian. If the
989 target endianess changes gdb doesn't know.
991 Suggest encoding registers as NN!VALUE.
995 GDB should allow incomming packets to be larger than outgoing ones. A
996 fully loaded T packet (containing all registers) can be very large -
997 definitly larger than a corresponding Gg packet.
1004 If / when GDB starts to support the debugging of multi-processor
1005 (rather than multi-thread) applications the symtab code will need to
1006 be updated a little so that several independent symbol tables are
1007 active at a given time.
1009 The other interesting change is a clarification of the exact meaning
1010 of CORE_ADDR and that has had consequences for a few targets (that
1011 were abusing that data type).
1015 Investiagate ways of reducing memory.
1019 Investigate ways of improving load time.
1023 Get the d10v to use POINTER_TO_ADDRESS and ADDRESS_TO_POINTER.
1025 Consequence of recent symtab clarification. No marks for figuring out
1026 who maintains the d10v.
1030 Get the MIPS to correctly sign extend all address <-> pointer
1033 Consequence of recent symtab clarification. No marks for figuring out
1034 who maintains the MIPS.
1038 GDB truncates 64 bit enums.
1040 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00290.html
1047 There are never to many testcases.
1051 Better thread testsuite.
1055 Better C++ testsuite.
1059 Look at adding a GDB specific testsuite directory so that white box
1060 tests of key internals can be added (eg ui_file).
1064 Separate out tests that involve the floating point (FP).
1066 (Something for people brining up new targets). FP and non-fp tests
1067 are combined. I think there should be set of basic tests that
1068 exercise pure integer support and then a more expanded set that
1069 exercise FP and FP/integer interactions.
1071 As an example, the MIPS, for n32 as problems with passing FP's and
1072 structs. Since most inferior call tests include FP it is difficult to
1073 determine of the integer tests are ok.
1077 Architectural Changes: General
1078 ==============================
1080 These are harder than simple cleanups / fixes and, consequently
1081 involve more work. Typically an Architectural Change will be broken
1082 down into a more digestible set of cleanups and fixes.
1086 Cleanup software single step.
1088 At present many targets implement software single step by directly
1089 blatting memory (see rs6000-tdep.c). Those targets should register
1090 the applicable breakpoints using the breakpoint framework. Perhaphs a
1091 new internal breakpoint class ``step'' is needed.
1095 Replace READ_FP() with FRAME_HANDLE().
1097 READ_FP() is a hangover from the days of the vax when the ABI really
1098 did have a frame pointer register. Modern architectures typically
1099 construct a virtual frame-handle from the stack pointer and various
1100 other bits of string.
1102 Unfortunately GDB still treats this synthetic FP register as though it
1103 is real. That in turn really confuses users (arm and ``print $fp'' VS
1104 ``info registers fp''). The synthetic FP should be separated out of
1105 the true register set presented to the user.
1109 Register Cache Cleanup (below from Andrew Cagney)
1111 I would depict the current register architecture as something like:
1113 High GDB --> Low GDB
1118 register + REGISTER_BYTE(reg_nr)
1121 -------------------------
1122 | extern register[] |
1123 -------------------------
1125 where neither the high (valops.c et.al.) or low gdb (*-tdep.c) are
1126 really clear on what mechanisms they should be using to manipulate that
1127 buffer. Further, much code assumes, dangerously, that registers are
1128 contigious. Having got mips-tdep.c to support multiple ABIs, believe
1129 me, that is a bad assumption. Finally, that register cache layout is
1130 determined by the current remote/local target and _not_ the less
1131 specific target ISA. In fact, in many cases it is determined by the
1132 somewhat arbitrary layout of the [gG] packets!
1135 How I would like the register file to work is more like:
1163 The main objectives being:
1165 o a clear separation between the low
1166 level target and the high level GDB
1168 o a mechanism that solves the general
1169 problem of register aliases, overlaps
1170 etc instead of treating them as optional
1171 extras that can be wedged in as an after
1172 thought (that is a reasonable description
1173 of the current code).
1175 Identify then solve the hard case and the
1176 rest just falls out. GDB solved the easy
1177 case and then tried to ignore the real
1180 o a removal of the assumption that the
1181 mapping between the register cache
1182 and virtual registers is largely static.
1183 If you flip the USR/SSR stack register
1184 select bit in the status-register then
1185 the corresponding stack registers should
1188 o a mechanism that clearly separates the
1189 gdb internal register cache from any
1190 target (not architecture) dependent
1191 specifics such as [gG] packets.
1193 Of course, like anything, it sounds good in theory. In reality, it
1194 would have to contend with many<->many relationships at both the
1195 virt<->cache and cache<->target level. For instance:
1198 Modifying an mmx register may involve
1199 scattering values across both FP and
1200 mmpx specific parts of a buffer
1203 When writing back a SP it may need to
1204 both be written to both SP and USP.
1209 Rather than let this like the last time it was discussed, just slip, I'm
1210 first going to add this e-mail (+ references) to TODO. I'd then like to
1211 sketch out a broad strategy I think could get us there.
1214 First thing I'd suggest is separating out the ``extern registers[]''
1215 code so that we can at least identify what is using it. At present
1216 things are scattered across many files. That way we can at least
1217 pretend that there is a cache instead of a global array :-)
1219 I'd then suggest someone putting up a proposal for the pseudo-reg /
1220 high-level side interface so that code can be adopted to it. For old
1221 code, initially a blanket rename of write_register_bytes() to
1222 deprecated_write_register_bytes() would help.
1224 Following that would, finaly be the corresponding changes to the target.
1228 Check that GDB can handle all BFD architectures (Andrew Cagney)
1230 There should be a test that checks that BFD/GDB are in sync with
1231 regard to architecture changes. Something like a test that first
1232 queries GDB for all supported architectures and then feeds each back
1233 to GDB.. Anyone interested in learning how to write tests? :-)
1237 Architectural Change: Multi-arch et al.
1238 =======================================
1240 The long term objective is to remove all assumptions that there is a
1241 single target with a single address space with a single instruction
1242 set architecture and single application binary interface.
1244 This is an ongoing effort. The first milestone is to enable
1245 ``multi-arch'' where by all architectural decisions are made at
1248 It should be noted that ``gdbarch'' is really ``gdbabi'' and
1249 ``gdbisa''. Once things are multi-arched breaking that down correctly
1250 will become much easier.
1254 GDBARCH cleanup (Andrew Cagney)
1256 The non-generated parts of gdbarch.{sh,h,c} should be separated out
1257 into arch-utils.[hc].
1259 Document that gdbarch_init_ftype could easily fail because it didn't
1260 identify an architecture.
1264 Fix BELIEVE_PPC_PROMOTION. Change it to BELIEVE_PPC_PROMOTION_P?
1266 At present there is still #ifdef BELIEVE_PPC_PROMOTION code in the
1271 Fix target_signal_from_host() etc.
1273 The name is wrong for starters. ``target_signal'' should probably be
1274 ``gdb_signal''. ``from_host'' should be ``from_target_signal''.
1275 After that it needs to be multi-arched and made independent of any
1276 host signal numbering.
1278 Once this is done, the signal enum can probably be moved to
1279 include/gdb so that it is available to embedded stubs.
1283 Update ALPHA so that it uses ``struct frame_extra_info'' instead of
1286 This is a barrier to replacing mips_extra_func_info with something
1287 that works with multi-arch.
1291 Multi-arch mips_extra_func_info.
1293 This first needs the alpha to be updated so that it uses ``struct
1298 Rationalize TARGET_SINGLE_FORMAT and TARGET_SINGLE_BIT et al.
1300 Surely one of them is redundant.
1304 Convert ALL architectures to MULTI-ARCH.
1308 Select the initial multi-arch ISA / ABI based on --target or similar.
1310 At present the default is based on what ever is first in the BFD
1311 archures table. It should be determined based on the ``--target=...''
1316 Make MIPS pure multi-arch.
1318 It is only at the multi-arch enabled stage.
1324 Enable the code to recognize --enable-targets=.... like BINUTILS does.
1326 Can the tm.h and nm.h files be eliminated by multi-arch.
1330 Architectural Change: MI, LIBGDB and scripting languages
1331 ========================================================
1333 See also architectural changes related to the event loop. LIBGDB
1334 can't be finished until there is a generic event loop being used by
1337 The long term objective is it to be possible to integrate GDB into
1338 scripting languages.
1342 Implement generic ``(gdb) commmand > file''
1344 Once everything is going through ui_file it should be come fairly
1347 http://sourceware.cygnus.com/ml/gdb/2000-04/msg00104.html
1351 Replace gdb_stdtarg with gdb_targout (and possibly gdb_targerr).
1353 gdb_stdtarg is easily confused with gdb_stdarg.
1357 Extra ui_file methods - dump.
1359 Very useful for whitebox testing.
1363 Eliminate error_begin().
1365 With ui_file, there is no need for the statefull error_begin ()
1370 Send normal output to gdb_stdout.
1371 Send error messages to gdb_stderror.
1372 Send debug and log output log gdb_stdlog.
1374 GDB still contains many cases where (f)printf or printf_filtered () is
1375 used when it should be sending the messages to gdb_stderror or
1376 gdb_stdlog. The thought of #defining printf to something has crossed
1381 Re-do GDB's output pager.
1383 GDB's output pager still relies on people correctly using *_filtered
1384 for gdb_stdout and *_unfiltered for gdb_stdlog / gdb_stderr.
1385 Hopefully, with all normal output going to gdb_stdout, the pager can
1386 just look at the ui_file that the output is on and then use that to
1387 decide what to do about paging. Sounds good in theory.
1391 Check/cleanup MI documentation.
1393 The list of commands specified in the documentation needs to be
1394 checked against the mi-cmds.c table in a mechanical way (so that they
1395 two can be kept up-to-date).
1399 Convert MI into libgdb
1401 MI provides a text interface into what should be many of the libgdb
1402 functions. The implementation of those functions should be separated
1403 into the MI interface and the functions proper. Those functions being
1404 moved to gdb/lib say.
1410 The first part can already be found in defs.h.
1414 MI's input does not use buffering.
1416 At present the MI interface reads raw characters of from an unbuffered
1417 FD. This is to avoid several nasty buffer/race conditions. That code
1418 should be changed so that it registers its self with the event loop
1419 (on the input FD) and then push commands up to MI as they arrive.
1421 The serial code already does this.
1425 Make MI interface accessible from existing CLI.
1429 Add a breakpoint-edit command to MI.
1431 It would be similar to MI's breakpoint create but would apply to an
1432 existing breakpoint. It saves the need to delete/create breakpoints
1433 when ever they are changed.
1437 Add directory path to MI breakpoint.
1439 That way the GUI's task of finding the file within which the
1440 breakpoint was set is simplified.
1444 Add a mechanism to reject certain expression classes to MI
1446 There are situtations where you don't want GDB's expression
1447 parser/evaluator to perform inferior function calls or variable
1448 assignments. A way of restricting the expression parser so that such
1449 operations are not accepted would be very helpful.
1453 Remove sideffects from libgdb breakpoint create function.
1455 The user can use the CLI to create a breakpoint with partial
1456 information - no file (gdb would use the file from the last
1459 The libgdb interface currently affects that environment which can lead
1460 to confusion when a user is setting breakpoints via both the MI and
1463 This is also a good example of how getting the CLI ``right'' will be
1468 Move gdb_lasterr to ui_out?
1470 The way GDB throws errors and records them needs a re-think. ui_out
1471 handles the correct output well. It doesn't resolve what to do with
1472 output / error-messages when things go wrong.
1476 do_setshow_command contains a 1024 byte buffer.
1478 The function assumes that there will never be any more than 1024 bytes
1479 of enum. It should use mem_file.
1483 Should struct cmd_list_element . completer take the command as an
1488 Should the bulk of top.c:line_completion_function() be moved to
1489 command.[hc]? complete_on_cmdlist() and complete_on_enums() could
1490 then be made private.
1494 top.c (execute_command): Should a command being valid when the target
1495 is running be made an attribute (predicate) to the command rather than
1496 an explicit set of tests.
1500 top.c (execute_command): Should the bulk of this function be moved
1501 into command.[hc] so that top.c doesn't grub around in the command
1506 Architectural Change: Async
1507 ===========================
1509 While GDB uses an event loop when prompting the user for input. That
1510 event loop is not exploited by targets when they allow the target
1511 program to continue. Typically targets still block in (target_wait())
1512 until the program again halts.
1514 The closest a target comes to supporting full asynchronous mode are
1515 the remote targets ``async'' and ``extended-async''.
1519 Asynchronous expression evaluator
1521 Inferior function calls hang GDB.
1525 Fix implementation of ``target xxx''.
1527 At present when the user specifies ``target xxxx'', the CLI maps that
1528 directly onto a target open method. It is then assumed that the
1529 target open method should do all sorts of complicated things as this
1530 is the only chance it has. Check how the various remote targets
1531 duplicate the target operations. Check also how the various targets
1532 behave differently for purely arbitrary reasons.
1534 What should happen is that ``target xxxx'' should call a generic
1535 ``target'' function and that should then co-ordinate the opening of
1536 ``xxxx''. This becomes especially important when you're trying to
1537 open an asynchronous target that may need to perform background tasks
1538 as part of the ``attach'' phase.
1540 Unfortunately, due to limitations in the old/creaking command.h
1541 interface, that isn't possible. The function being called isn't told
1542 of the ``xxx'' or any other context information.
1544 Consequently a precursor to fixing ``target xxxx'' is to clean up the
1545 CLI code so that it passes to the callback function (attatched to a
1546 command) useful information such as the actual command and a context
1547 for that command. Other changes such as making ``struct command''
1548 opaque may also help.
1551 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00062.html
1555 Make "target xxx" command interruptible.
1557 As things become async this becomes possible. A target would start
1558 the connect and then return control to the event loop. A cntrl-c
1559 would notify the target that the operation is to be abandoned and the
1560 target code could respond.
1564 Add a "suspend" subcommand of the "continue" command to suspend gdb
1565 while continuing execution of the subprocess. Useful when you are
1566 debugging servers and you want to dodge out and initiate a connection
1567 to a server running under gdb.
1576 Frequently requested but not approved requests.
1580 Eliminate unused argument warnings using ATTRIBUTE_UNUSED.
1582 The benefits on this one are thought to be marginal - GDBs design
1583 means that unused parameters are very common. GCC 3.0 will also
1584 include the option -Wno-unused-parameter which means that ``-Wall
1585 -Wno-unused-parameters -Werror'' can be specified.
1594 This list is not up to date, and opinions vary about the importance or
1595 even desirability of some of the items. If you do fix something, it
1596 always pays to check the below.
1600 @c This does not work (yet if ever). FIXME.
1601 @c @item --parse=@var{lang} @dots{}
1602 @c Configure the @value{GDBN} expression parser to parse the listed languages.
1603 @c @samp{all} configures @value{GDBN} for all supported languages. To get a
1604 @c list of all supported languages, omit the argument. Without this
1605 @c option, @value{GDBN} is configured to parse all supported languages.
1609 START_INFERIOR_TRAPS_EXPECTED need never be defined to 2, since that
1610 is its default value. Clean this up.
1614 It should be possible to use symbols from shared libraries before we know
1615 exactly where the libraries will be loaded. E.g. "b perror" before running
1616 the program. This could maybe be done as an extension of the "breakpoint
1617 re-evaluation" after new symbols are loaded.
1621 Make single_step() insert and remove breakpoints in one operation.
1623 [If this is talking about having single_step() insert the breakpoints,
1624 run the target then pull the breakpoints then it is wrong. The
1625 function has to return as control has to eventually be passed back to
1626 the main event loop.]
1630 Speed up single stepping by avoiding extraneous ptrace calls.
1634 Speed up single stepping by not inserting and removing breakpoints
1635 each time the inferior starts and stops.
1637 Breakpoints should not be inserted and deleted all the time. Only the
1638 one(s) there should be removed when we have to step over one. Support
1639 breakpoints that don't have to be removed to step over them.
1641 [this has resulted in numerous debates. The issue isn't clear cut]
1645 Provide "voodoo" debugging of core files. This creates a zombie
1646 process as a child of the debugger, and loads it up with the data,
1647 stack, and regs of the core file. This allows you to call functions
1648 in the executable, to manipulate the data in the core file.
1654 GDB reopens the source file on every line, as you "next" through it.
1656 [still true? I've a memory of this being fixed]
1660 Perhaps "i source" should take an argument like that of "list".
1664 Remove "at 0xnnnn" from the "b foo" response, if `print address off' and if
1665 it matches the source line indicated.
1669 The prompt at end of screen should accept space as well as CR.
1673 Backtrace should point out what the currently selected frame is, in
1674 its display, perhaps showing "@3 foo (bar, ...)" or ">3 foo (bar,
1675 ...)" rather than "#3 foo (bar, ...)".
1679 "i program" should work for core files, and display more info, like what
1680 actually caused it to die.
1684 "x/10i" should shorten the long name, if any, on subsequent lines.
1688 "next" over a function that longjumps, never stops until next time you happen
1689 to get to that spot by accident. E.g. "n" over execute_command which has
1694 "set zeroprint off", don't bother printing members of structs which
1695 are entirely zero. Useful for those big structs with few useful
1700 GDB does four ioctl's for every command, probably switching terminal modes
1701 to/from inferior or for readline or something.
1705 terminal_ours versus terminal_inferior: cache state. Switch should be a noop
1706 if the state is the same, too.
1710 "i frame" shows wrong "arglist at" location, doesn't show where the args
1711 should be found, only their actual values.
1715 There should be a way for "set" commands to validate the new setting
1716 before it takes effect.
1720 "ena d" is ambiguous, why? "ena delete" seems to think it is a command!
1724 i line VAR produces "Line number not known for symbol ``var''.". I
1725 thought we were stashing that info now!
1729 We should be able to write to random files at hex offsets like adb.
1733 [elena - delete this]
1735 Handle add_file with separate text, data, and bss addresses. Maybe
1736 handle separate addresses for each segment in the object file?
1740 [Jimb/Elena delete this one]
1742 Handle free_named_symtab to cope with multiply-loaded object files
1743 in a dynamic linking environment. Should remember the last copy loaded,
1744 but not get too snowed if it finds references to the older copy.
1748 [elena delete this also]
1750 Remove all references to:
1757 now that we have BFD. All remaining are in machine dependent files.
1761 Re-organize help categories into things that tend to fit on a screen
1766 Add in commands like ADB's for searching for patterns, etc. We should
1767 be able to examine and patch raw unsymboled binaries as well in gdb as
1768 we can in adb. (E.g. increase the timeout in /bin/login without source).
1770 [actually, add ADB interface :-]
1774 When doing "step" or "next", if a few lines of source are skipped between
1775 the previous line and the current one, print those lines, not just the
1776 last line of a multiline statement.
1780 Handling of "&" address-of operator needs some serious overhaul
1781 for ANSI C and consistency on arrays and functions.
1782 For "float point[15];":
1783 ptype &point[4] ==> Attempt to take address of non-lvalue.
1784 For "char *malloc();":
1785 ptype malloc ==> "char *()"; should be same as
1786 ptype &malloc ==> "char *(*)()"
1787 call printf ("%x\n", malloc) ==> weird value, should be same as
1788 call printf ("%x\n", &malloc) ==> correct value
1792 Fix dbxread.c symbol reading in the presence of interrupts. It
1793 currently leaves a cleanup to blow away the entire symbol table when a
1794 QUIT occurs. (What's wrong with that? -kingdon, 28 Oct 1993).
1796 [I suspect that the grype was that, on a slow system, you might want
1797 to cntrl-c and get just half the symbols and then load the rest later
1798 - scary to be honest]
1802 Mipsread.c reads include files depth-first, because the dependencies
1803 in the psymtabs are way too inclusive (it seems to me). Figure out what
1804 really depends on what, to avoid recursing 20 or 30 times while reading
1809 value_add() should be subtracting the lower bound of arrays, if known,
1810 and possibly checking against the upper bound for error reporting.
1814 When listing source lines, check for a preceding \n, to verify that
1815 the file hasn't changed out from under us.
1817 [fixed by some other means I think. That hack wouldn't actually work
1818 reliably - the file might move such that another \n appears. ]
1822 Get all the remote systems (where the protocol allows it) to be able to
1823 stop the remote system when the GDB user types ^C (like remote.c
1824 does). For ebmon, use ^Ak.
1828 Possible feature: A version of the "disassemble" command which shows
1829 both source and assembly code ("set symbol-filename on" is a partial
1832 [has this been done? It was certainly done for MI and GDBtk]
1836 investigate "x/s 0" (right now stops early) (I think maybe GDB is
1837 using a 0 address for bad purposes internally).
1841 Make "info path" and path_command work again (but independent of the
1842 environment either of gdb or that we'll pass to the inferior).
1846 Make GDB understand the GCC feature for putting octal constants in
1847 enums. Make it so overflow on an enum constant does not error_type
1848 the whole type. Allow arbitrarily large enums with type attributes.
1849 Put all this stuff in the testsuite.
1853 Make TYPE_CODE_ERROR with a non-zero TYPE_LENGTH more useful (print
1854 the value in hex; process type attributes). Add this to the
1855 testsuite. This way future compilers can add new types and old
1856 versions of GDB can do something halfway reasonable.
1860 Fix mdebugread.c:parse_type to do fundamental types right (see
1861 rs6000_builtin_type in stabsread.c for what "right" is--the point is
1862 that the debug format fixes the sizes of these things and it shouldn't
1863 depend on stuff like TARGET_PTR_BIT and so on. For mdebug, there seem
1864 to be separate bt* codes for 64 bit and 32 bit things, and GDB should
1865 be aware of that). Also use a switch statement for clarity and speed.
1869 Investigate adding symbols in target_load--some targets do, some
1874 Put dirname in psymtabs and change lookup*symtab to use dirname (so
1875 /foo/bar.c works whether compiled by cc /foo/bar.c, or cd /foo; cc
1880 Merge xcoffread.c and coffread.c. Use breakpoint_re_set instead of
1885 Make a watchpoint which contains a function call an error (it is
1886 broken now, making it work is probably not worth the effort).
1890 New test case based on weird.exp but in which type numbers are not
1891 renumbered (thus multiply defining a type). This currently causes an
1892 infinite loop on "p v_comb".
1896 [Hey! Hint Hint Delete Delete!!!]
1898 Fix 386 floating point so that floating point registers are real
1899 registers (but code can deal at run-time if they are missing, like
1900 mips and 68k). This would clean up "info float" and related stuff.
1904 gcc -g -c enummask.c then gdb enummask.o, then "p v". GDB complains
1905 about not being able to access memory location 0.
1907 -------------------- enummask.c
1928 If try to modify value in file with "set write off" should give
1929 appropriate error not "cannot access memory at address 0x65e0".
1933 Allow core file without exec file on RS/6000.
1937 Make sure "shell" with no arguments works right on DOS.
1941 Make gdb.ini (as well as .gdbinit) be checked on all platforms, so
1942 the same directory can be NFS-mounted on unix or DOS, and work the
1947 [Is this another delete???]
1949 Get SECT_OFF_TEXT stuff out of objfile_relocate (might be needed to
1950 get RS/6000 to work right, might not be immediately relevant).
1954 Work out some kind of way to allow running the inferior to be done as
1955 a sub-execution of, eg. breakpoint command lists. Currently running
1956 the inferior interupts any command list execution. This would require
1957 some rewriting of wait_for_inferior & friends, and hence should
1958 probably be done in concert with the above.
1962 Add function arguments to gdb user defined functions.
1966 Add convenience variables that refer to exec file, symbol file,
1967 selected frame source file, selected frame function, selected frame
1972 Modify the handling of symbols grouped through BINCL/EINCL stabs to
1973 allocate a partial symtab for each BINCL/EINCL grouping. This will
1974 seriously decrease the size of inter-psymtab dependencies and hence
1975 lessen the amount that needs to be read in when a new source file is
1980 Add a command for searching memory, a la adb. It specifies size,
1981 mask, value, start address. ADB searches until it finds it or hits
1982 an error (or is interrupted).
1986 Remove the range and type checking code and documentation, if not