* TODO: Delete all thread items. The thread code was overhauled.
[binutils-gdb.git] / gdb / TODO
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.
5
6
7 GDB 5.1 - Fixes
8 ===============
9
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.
12
13 -- 2001-03-08
14
15 Update GDB's coding standard documentation. Known topics:
16
17 o alloca/malloc et.al.
18
19 o typedef and structs
20
21 o ISO-C
22
23 and most likely also:
24
25 o include conventions
26
27 --
28
29 Wow, three bug reports for the same problem in one day! We should
30 probably make fixing this a real priority :-).
31
32 Anyway, thanks for reporting.
33
34 The following patch will fix the problems with setting breakpoints in
35 dynamically loaded objects:
36
37 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00230.html
38
39 This patch isn't checked in yet (ping Michael/JimB), but I hope this
40 will be in the next GDB release.
41
42 There should really be a test in the testsuite for this problem, since
43 it keeps coming up :-(. Any volunteers?
44
45 Mark
46
47 --
48
49 x86 linux GDB and SIGALRM (???)
50 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00803.html
51
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
55
56 Mark
57
58 [The test has been submitted for approval - cagney]
59
60 --
61
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
64
65 GDB misses watchpoint triggers after proceeding over a breakpoint on
66 x86 targets.
67
68 --
69
70 GDB 5.0 doesn't work on Linux/SPARC
71
72 There are two parts to this.
73
74 o GDB 5.0 doesn't work on GNU/Linux/SPARC32
75
76 o GDB 5.0 doesn't work on the new target
77 GNU/Linux/SPARC64
78
79 GDB does build on both these targets.
80
81 The first problem is the one that should be fixed.
82
83 --
84
85 GDB 5.1 - New features
86 ======================
87
88 The following new features should be included in 5.1.
89
90 --
91
92 Pascal (Pierre Muller, David Taylor)
93
94 Pierre Muller has contributed patches for adding Pascal Language
95 support to GDB.
96
97 2 pascal language patches inserted in database
98 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00521.html
99
100 Indent -gnu ?
101 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00496.html
102
103 [I think this has been merged, need to confirm - cagney]
104
105 --
106
107 Java (Anthony Green, David Taylor)
108
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.
112
113 Patch: java tests
114 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00512.html
115
116 Patch: java booleans
117 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00515.html
118
119 Patch: handle N_MAIN stab
120 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00527.html
121
122 -- 2001-03-08
123
124 Add CRIS target.
125
126 A predicate to this is the multi-arching of SOFTWARE_SINGLE_STEP(). A
127 patch has been submitted.
128
129 --
130
131 GDB 5.1 - Cleanups
132 ==================
133
134 The following code cleanups will hopefully be applied to GDB 5.1.
135
136 --
137
138 Fix copyright notices.
139
140 Turns out that ``1998-2000'' isn't considered valid :-(
141
142 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00467.html
143
144 --
145
146 GDB 5.1 - Known Problems
147 ========================
148
149 --
150
151 z8k
152
153 The z8k has suffered bit rot and is known to not build. The problem
154 was occuring in the opcodes directory.
155
156 --
157
158 m88k
159
160 The m88k has suffered bit rot and is known to not build.
161
162 --
163
164 Solaris 8 x86 CURSES_H problem
165 http://sources.redhat.com/ml/gdb/2000-07/msg00038.html
166
167 The original problem was worked around with:
168
169 2000-06-06 Michael Snyder <msnyder@cygnus.com>
170
171 * configure.in: Enable autoconf to find curses.h on Solaris 2.8.
172 * configure: Regenerate.
173
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.
177
178 --
179
180 GDB 5.2 - Fixes
181 ===============
182
183 --
184
185 GDB 5.2 - New features
186 ======================
187
188 --
189
190 GCC 3.0 ABI support (but hopefully sooner...).
191
192 --
193
194 Objective C/C++ support (but hopefully sooner...).
195
196 --
197
198 Import of readline 4.2
199
200 --
201
202 GDB 5.2 - Cleanups
203 ==================
204
205 The following cleanups have been identified as part of GDB 5.2.
206
207 --
208
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.
212
213 --
214
215 Compiler warnings.
216
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
224
225 --
226
227 Deprecate, if not delete, the following:
228
229 register[]
230 register_valid[]
231 register_buffer()
232 REGISTER_BYTE()
233 Replaced by, on the target side
234 supply_register()
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
240 [gG] packets.
241
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
247 the register cache.
248
249 REGISTER_CONVERTIBLE
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.
255
256 REGISTER_VIRTUAL_SIZE
257 MAX_REGISTER_VIRTUAL_SIZE
258 REGISTER_VIRTUAL_TYPE
259 I think these can be replaced by
260 the pair:
261 FRAME_REGISTER_TYPE(frame, regnum)
262 REGISTER_TYPE(regnum)
263
264 DO_REGISTERS_INFO
265 Replace with
266 FRAME_REGISTER_INFO (frame, ...)
267
268 REGISTER_SIM_REGNO()
269 If nothing else rename this so that
270 how it relates to rawreg and the
271 regnum is clear.
272
273 REGISTER_BYTES
274 The size of the cache can be computed
275 on the fly.
276
277 IS_TRAPPED_INTERNALVAR
278 The pseudo registers should eventually make
279 this redundant.
280
281 --
282
283 Obsolete the targets.
284
285 arm*-wince-pe
286 mips*-*-pe
287 sh*-*-pe
288
289 Obsolete the protocols:
290
291 RDB
292
293 ``As of version 5.3, WindRiver has removed the RDB server (RDB
294 protocol support is built into gdb).'' -- Till.
295
296 --
297
298 Restructure gdb directory tree so that it avoids any 8.3 and 14
299 filename problems.
300
301 --
302
303 Convert GDB build process to AUTOMAKE.
304
305 See also sub-directory configure below.
306
307 The current convention is (kind of) to use $(<header>_h) in all
308 dependency lists. It isn't done in a consistent way.
309
310 --
311
312 GDB 5.2 - Known Problems
313 ========================
314
315 --
316
317 Code Cleanups: General
318 ======================
319
320 The following are more general cleanups and fixes. They are not tied
321 to any specific release.
322
323 --
324
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.
328
329 --
330
331 Rename read_register{,_pid}() to read_unsigned_register{,_pid}().
332
333 --
334
335 Problem with weak functions
336 http://sourceware.cygnus.com/ml/gdb/2000-05/msg00060.html
337
338 Dan Nicolaescu writes:
339 > It seems that gdb-4.95.1 does not display correctly the function when
340 > stoping in weak functions.
341 >
342 > It stops in a function that is defined as weak, not in the function
343 > that is actually run...
344
345 --
346
347 Follow through `make check' with --enable-shared.
348
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
352 similarly.
353
354 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00845.html
355
356 --
357
358 Delete macro TARGET_BYTE_ORDER_SELECTABLE.
359
360 Patches in the database.
361
362 --
363
364 printcmd.c (print_address_numeric):
365
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?
370
371 --
372
373 The BFD directory requires bug-fixed AUTOMAKE et.al.
374
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
381
382 --
383
384 Find something better than DEFAULT_BFD_ARCH, DEFAULT_BFD_VEC to
385 determine the default isa/byte-order.
386
387 --
388
389 Rely on BFD_BIG_ENDIAN and BFD_LITTLE_ENDIAN instead of host dependent
390 BIG_ENDIAN and LITTLE_ENDIAN.
391
392 --
393
394 Eliminate more compiler warnings.
395
396 Of course there also needs to be the usual debate over which warnings
397 are valid and how to best go about this.
398
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
402 away.
403
404 The other method is to enable all warnings and eliminate them from one
405 file at a time.
406
407 --
408
409 Elimination of ``(catch_errors_ftype *) func''.
410
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
414
415 --
416
417 Nuke #define CONST_PTR.
418
419 --
420
421 Nuke USG define.
422
423 --
424
425 [PATCH/5] src/intl/Makefile.in:distclean additions
426 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00363.html
427
428 Do not forget to merge the patch back into the trunk.
429
430 --
431
432 Rationalize the host-endian code (grep for HOST_BYTE_ORDER).
433
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
437 needed.
438
439 --
440
441 Replace savestring() with something from libiberty.
442
443 An xstrldup()? but that would have different semantics.
444
445 --
446
447 Rationalize use of floatformat_unknown in GDB sources.
448
449 Instead of defaulting to floatformat_unknown, should hosts/targets
450 specify the value explicitly?
451
452 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00447.html
453
454 --
455
456 Add a ``name'' member to include/floatformat.h:struct floatformat.
457 Print that name in gdbarch.c.
458
459 --
460
461 Sort out the harris mess in include/floatformat.h (it hardwires two
462 different floating point formats).
463
464 --
465
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
468 how.
469
470 --
471
472 Eliminate mmalloc(), mstrsave() et.al. from GDB.
473
474 Also eliminate it from defs.h.
475
476 --
477
478 Eliminate PTR. ISO-C allows ``void *''.
479
480 --
481
482 Eliminate abort ().
483
484 GDB should never abort. GDB should either throw ``error ()'' or
485 ``internal_error ()''. Better still GDB should naturally unwind with
486 an error status.
487
488 --
489
490 GDB probably doesn't build on FreeBSD pre 2.2.x
491 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00378.html
492
493 Fixes to get FreeBSD working on 2.2.x, 3.x and 4.x caused the code to
494 suffer bit rot.
495
496 --
497
498 Deprecate "fg". Apparently ``fg'' is actually continue.
499
500 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00417.html
501
502 --
503
504 Deprecate current use of ``floatformat_unknown''.
505
506 Require all targets to explicitly provide their float format instead
507 of defaulting to floatformat unknown. Doing the latter leads to nasty
508 bugs.
509
510 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00447.html
511
512 --
513
514 Rationalize floatformat_to_double() vs floatformat_to_doublest().
515
516 Looks like GDB migrated floatformat_to_double() to libiberty but then
517 turned around and created a ..._to_doublest() the latter containing
518 several bug fixes.
519
520 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00472.html
521
522 --
523
524 Move floatformat_ia64_ext to libiberty/include floatformat.[ch].
525
526 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00466.html
527
528 --
529
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?
533
534 --
535
536 When tab expanding something like ``set arch<tab>'' ignore the
537 deprecated ``set archdebug'' and expand to ``set architecture''.
538
539 --
540
541 Eliminate ``arm_register_names[j] = (char *) regnames[j]'' and the
542 like from arm-tdep.c.
543
544 --
545
546 Fix uses of ->function.cfunc = set_function().
547
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
550 useful. See:
551
552 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00062.html
553
554 See also ``Fix implementation of ``target xxx''.'' below.
555
556 --
557
558 IRIX 3.x support is probably broken.
559
560 --
561
562 Delete sim/SIM_HAVE_BREAKPOINTS and gdb/SIM_HAS_BREAKPOINTS.
563 http://sourceware.cygnus.com/ml/gdb-patches/2000-07/msg00042.html
564
565 Apart from the d30v, are there any sim/common simulators that make use
566 of this?
567
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).
571
572 --
573
574 Move remote_remove_hw_breakpoint, remote_insert_hw_breakpoint,
575 remote_remove_watchpoint, remote_insert_watchpoint into target vector.
576
577 --
578
579 Eliminate ``extern'' from C files.
580
581 --
582
583 Replace ``STREQ()'' et.al. with ``strcmp() == 0'' et.al.
584
585 Extreme care is recommeded - perhaps only modify tests that are
586 exercised by the testsuite (as determined using some type of code
587 coverage analysis).
588
589 --
590
591 Replace the file gdb/CONTRIBUTE with a file that is generated from the
592 gdb/doc/*.texinfo directory.
593
594 --
595
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.
598
599 --
600
601 New Features and Fixes
602 ======================
603
604 These are harder than cleanups but easier than work involving
605 fundamental architectural change.
606
607 --
608
609 Hardware watchpoint problems on x86 OSes, including Linux:
610
611 1. Delete/disable hardware watchpoints should free hardware debug
612 registers.
613 2. Watch for different values on a viariable with one hardware debug
614 register.
615
616 According to Eli Zaretskii <eliz@delorie.com>:
617
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.)
626
627 --
628
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.
631
632 --
633
634 Add an "info bfd" command that displays supported object formats,
635 similarly to objdump -i.
636
637 Is there a command already?
638
639 --
640
641 Fix ``I'm sorry, Dave, I can't do that.'' from symfile.c.
642
643 This requires internationalization.
644
645 --
646
647 Add support for:
648
649 (gdb) p fwprintf(stdout,L"%S\n", f)
650 No symbol "L" in current context.
651
652 --
653
654 Cleanup configury support for optional sub-directories.
655
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.
659
660 See also automake above.
661
662 --
663
664 Add a transcript mechanism to GDB.
665
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''.
669
670 --
671
672 Can the xdep files be replaced by autoconf?
673
674 --
675
676 Document trace machinery
677
678 --
679
680 Document ui-out and ui-file.
681
682 http://sourceware.cygnus.com/ml/gdb/2000-04/msg00121.html
683
684 --
685
686 Update texinfo.tex to latest?
687
688 --
689
690 Incorporate agentexpr.texi into gdb.texinfo
691
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.
695
696 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00566.html
697
698 --
699
700 Document overlay machinery.
701
702 --
703
704 ``(gdb) catch signal SIGNAL''
705
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.
709
710 --
711
712 Fix TUI
713
714 o readline/*.h bitrot
715
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.
721
722 Grep for things like term_cursor_move.
723
724 (To be honest, I don't see anyone
725 importing a new readline before 5.1 is
726 out)
727
728 o tui.c:va_catch_errors() bitrot
729
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. :-(
734
735 o tuiWin.c:c_makeVisibleWithNewHeight() broken
736 tuiLayout.c:_extractDisplayStartAddr() broken
737
738 Both these function call find_line_pc()
739 incorrectly (wrong args, wrong return value).
740
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
744 from gdb proper :-(
745
746 o tuiRegs() host dependant
747
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
751 medium term.
752
753 o defs.h: #include "tui.h" et.al.
754
755 I'm not sure where this came from.
756 It was a really bad idea.
757
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
763 you like.
764
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
768 purpose (1)
769
770 o tui.c:_tuiReset() host dependant
771
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
776 even be available.
777
778 o curses.h vs ncurses.h.
779
780 Simple portability problem.
781
782 o subsetCompare()
783
784 This function is a mystery - where is it?
785
786 o tui-file.[hc] cleanup
787
788 This can be significantly simplified.
789
790 o The code should be pacified. (-Werror -W...)
791
792 There are plenty of #includes,
793 duplicate #includes, missing function decls
794 and the like.
795
796 Some of the problems I found were through
797 fixing a few of the warnings.
798
799 o The code should be GNUtified.
800
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
804 gdb component.
805
806 Until it is GNUtified it is going to stick
807 out like a sore thumb to the programmer.
808
809 o The code should be clearly copyrighted
810
811 (FSF, with due credit to HP)
812
813 --
814
815 Add support for ``gdb --- PROGRAM ARGS ...''.
816 Add support for ``gdb -cmd=...''
817
818 Along with many variations. Check:
819
820 ????? for a full discussion.
821
822 for a discussion.
823
824 --
825
826 Implement ``(gdb) !ls''.
827
828 Which is very different from ``(gdb) ! ls''. Implementing the latter
829 is trivial.
830
831 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00034.html
832
833 --
834
835 Change the (char *list[]) to (const char (*)[]) so that dynamic lists can
836 be passed.
837
838 --
839
840 When tab expanding something like ``set arch<tab>'' ignore the
841 deprecated ``set archdebug'' and expand to ``set architecture''.
842
843 --
844
845 Replace the code that uses the host FPU with an emulator of the target
846 FPU.
847
848 --
849
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.
853
854 http://sources.redhat.com/ml/gdb-patches/2000-10/msg00011.html
855
856 --
857
858 Language Support
859 ================
860
861 New languages come onto the scene all the time.
862
863 --
864
865 Re: Various C++ things
866
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
869 functions.
870
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.
876
877 value_virtual_fn_field needs to be fixed so there are no failures for
878 virtual functions for C++ using g++.
879
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
882 each other.
883
884 --
885
886 Add support for Modula3
887
888 Get DEC/Compaq to contribute their Modula-3 support.
889
890 --
891
892 Remote Protocol Support
893 =======================
894
895 --
896
897 Revised UDP support (was: Re: [Fwd: [patch] UDP transport support])
898 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00000.html
899
900 (Broken) support for GDB's remote protocol across UDP is to be
901 included in the follow-on release.
902
903 It should be noted that UDP can only work when the [Gg] packet fits in
904 a single UDP packet.
905
906 There is also much debate over the merit of this.
907
908 --
909
910 Migrate qfThreadInfo packet -> qThreadInfo. (Andrew Cagney)
911
912 Add support for packet enable/disable commands with these thread
913 packets. General cleanup.
914
915 [PATCH] Document the ThreadInfo remote protocol queries
916 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00832.html
917
918 [PATCH] "info threads" queries for remote.c
919 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00831.html
920
921 --
922
923 Remote protocol doco feedback.
924
925 Too much feedback to mention needs to be merged in (901660). Search
926 for the word ``remote''.
927
928
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
932
933 --
934
935 GDB doesn't recover gracefully from remote protocol errors.
936
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.
940
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.
946
947 --
948
949 Fix the ``!'' packet.
950
951 JT reported that the existing targets do, in fact return ``OK'' so it
952 is possible to merge remote and extended-remote targets.
953
954 --
955
956 Drop ``<address>'' from the [SsCc] packets.
957
958 I don't think that GDB generates them so having it in the protocol is
959 silly.
960
961 --
962
963 Fix doco on the ``q'' packet.
964
965 It has evolved into a generic RPC. The notes should reflect this and,
966 perhaps, the ``Q'' packet can be deprecated.
967
968 The doco should mention that ``OK'' is a valid packet response.
969
970 The doco should explain why ``OK'' needs to be a valid packet
971 response.
972
973 --
974
975 Add the cycle step command.
976
977 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00237.html
978
979 --
980
981 Resolve how to scale things to support very large packets.
982
983 --
984
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?
987
988 Underlying problem is that the register file is target endian. If the
989 target endianess changes gdb doesn't know.
990
991 Suggest encoding registers as NN!VALUE.
992
993 --
994
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.
998
999 --
1000
1001 Symbol Support
1002 ==============
1003
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.
1008
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).
1012
1013 --
1014
1015 Investiagate ways of reducing memory.
1016
1017 --
1018
1019 Investigate ways of improving load time.
1020
1021 --
1022
1023 Get the d10v to use POINTER_TO_ADDRESS and ADDRESS_TO_POINTER.
1024
1025 Consequence of recent symtab clarification. No marks for figuring out
1026 who maintains the d10v.
1027
1028 --
1029
1030 Get the MIPS to correctly sign extend all address <-> pointer
1031 conversions.
1032
1033 Consequence of recent symtab clarification. No marks for figuring out
1034 who maintains the MIPS.
1035
1036 --
1037
1038 GDB truncates 64 bit enums.
1039
1040 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00290.html
1041
1042 --
1043
1044 Testsuite Support
1045 =================
1046
1047 There are never to many testcases.
1048
1049 --
1050
1051 Better thread testsuite.
1052
1053 --
1054
1055 Better C++ testsuite.
1056
1057 --
1058
1059 Look at adding a GDB specific testsuite directory so that white box
1060 tests of key internals can be added (eg ui_file).
1061
1062 --
1063
1064 Separate out tests that involve the floating point (FP).
1065
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.
1070
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.
1074
1075 --
1076
1077 Architectural Changes: General
1078 ==============================
1079
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.
1083
1084 --
1085
1086 Cleanup software single step.
1087
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.
1092
1093 --
1094
1095 Replace READ_FP() with FRAME_HANDLE().
1096
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.
1101
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.
1106
1107 --
1108
1109 Register Cache Cleanup (below from Andrew Cagney)
1110
1111 I would depict the current register architecture as something like:
1112
1113 High GDB --> Low GDB
1114 | |
1115 \|/ \|/
1116 --- REG NR -----
1117 |
1118 register + REGISTER_BYTE(reg_nr)
1119 |
1120 \|/
1121 -------------------------
1122 | extern register[] |
1123 -------------------------
1124
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!
1133
1134
1135 How I would like the register file to work is more like:
1136
1137
1138 High GDB
1139 |
1140 \|/
1141 pseudo reg-nr
1142 |
1143 map pseudo <->
1144 random cache
1145 bytes
1146 |
1147 \|/
1148 ------------
1149 | register |
1150 | cache |
1151 ------------
1152 /|\
1153 |
1154 map random cache
1155 bytes to target
1156 dependent i-face
1157 /|\
1158 |
1159 target dependent
1160 such as [gG] packet
1161 or ptrace buffer
1162
1163 The main objectives being:
1164
1165 o a clear separation between the low
1166 level target and the high level GDB
1167
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).
1174
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
1178 world :-)
1179
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
1186 reflect the change.
1187
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.
1192
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:
1196
1197 virt<->cache
1198 Modifying an mmx register may involve
1199 scattering values across both FP and
1200 mmpx specific parts of a buffer
1201
1202 cache<->target
1203 When writing back a SP it may need to
1204 both be written to both SP and USP.
1205
1206
1207 Hmm,
1208
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.
1212
1213
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 :-)
1218
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.
1223
1224 Following that would, finaly be the corresponding changes to the target.
1225
1226 --
1227
1228 Check that GDB can handle all BFD architectures (Andrew Cagney)
1229
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? :-)
1234
1235 --
1236
1237 Architectural Change: Multi-arch et al.
1238 =======================================
1239
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.
1243
1244 This is an ongoing effort. The first milestone is to enable
1245 ``multi-arch'' where by all architectural decisions are made at
1246 runtime.
1247
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.
1251
1252 --
1253
1254 GDBARCH cleanup (Andrew Cagney)
1255
1256 The non-generated parts of gdbarch.{sh,h,c} should be separated out
1257 into arch-utils.[hc].
1258
1259 Document that gdbarch_init_ftype could easily fail because it didn't
1260 identify an architecture.
1261
1262 --
1263
1264 Fix BELIEVE_PPC_PROMOTION. Change it to BELIEVE_PPC_PROMOTION_P?
1265
1266 At present there is still #ifdef BELIEVE_PPC_PROMOTION code in the
1267 symtab file.
1268
1269 --
1270
1271 Fix target_signal_from_host() etc.
1272
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.
1277
1278 Once this is done, the signal enum can probably be moved to
1279 include/gdb so that it is available to embedded stubs.
1280
1281 --
1282
1283 Update ALPHA so that it uses ``struct frame_extra_info'' instead of
1284 EXTRA_FRAME_INFO.
1285
1286 This is a barrier to replacing mips_extra_func_info with something
1287 that works with multi-arch.
1288
1289 --
1290
1291 Multi-arch mips_extra_func_info.
1292
1293 This first needs the alpha to be updated so that it uses ``struct
1294 frame_extra_info''.
1295
1296 --
1297
1298 Rationalize TARGET_SINGLE_FORMAT and TARGET_SINGLE_BIT et al.
1299
1300 Surely one of them is redundant.
1301
1302 --
1303
1304 Convert ALL architectures to MULTI-ARCH.
1305
1306 --
1307
1308 Select the initial multi-arch ISA / ABI based on --target or similar.
1309
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=...''
1312 name.
1313
1314 --
1315
1316 Make MIPS pure multi-arch.
1317
1318 It is only at the multi-arch enabled stage.
1319
1320 --
1321
1322 Truly multi-arch.
1323
1324 Enable the code to recognize --enable-targets=.... like BINUTILS does.
1325
1326 Can the tm.h and nm.h files be eliminated by multi-arch.
1327
1328 --
1329
1330 Architectural Change: MI, LIBGDB and scripting languages
1331 ========================================================
1332
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
1335 all targets.
1336
1337 The long term objective is it to be possible to integrate GDB into
1338 scripting languages.
1339
1340 --
1341
1342 Implement generic ``(gdb) commmand > file''
1343
1344 Once everything is going through ui_file it should be come fairly
1345 easy.
1346
1347 http://sourceware.cygnus.com/ml/gdb/2000-04/msg00104.html
1348
1349 --
1350
1351 Replace gdb_stdtarg with gdb_targout (and possibly gdb_targerr).
1352
1353 gdb_stdtarg is easily confused with gdb_stdarg.
1354
1355 --
1356
1357 Extra ui_file methods - dump.
1358
1359 Very useful for whitebox testing.
1360
1361 --
1362
1363 Eliminate error_begin().
1364
1365 With ui_file, there is no need for the statefull error_begin ()
1366 function.
1367
1368 --
1369
1370 Send normal output to gdb_stdout.
1371 Send error messages to gdb_stderror.
1372 Send debug and log output log gdb_stdlog.
1373
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
1377 peoples minds ;-)
1378
1379 --
1380
1381 Re-do GDB's output pager.
1382
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.
1388
1389 --
1390
1391 Check/cleanup MI documentation.
1392
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).
1396
1397 --
1398
1399 Convert MI into libgdb
1400
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.
1405
1406 --
1407
1408 Create libgdb.h
1409
1410 The first part can already be found in defs.h.
1411
1412 --
1413
1414 MI's input does not use buffering.
1415
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.
1420
1421 The serial code already does this.
1422
1423 --
1424
1425 Make MI interface accessible from existing CLI.
1426
1427 --
1428
1429 Add a breakpoint-edit command to MI.
1430
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.
1434
1435 --
1436
1437 Add directory path to MI breakpoint.
1438
1439 That way the GUI's task of finding the file within which the
1440 breakpoint was set is simplified.
1441
1442 --
1443
1444 Add a mechanism to reject certain expression classes to MI
1445
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.
1450
1451 --
1452
1453 Remove sideffects from libgdb breakpoint create function.
1454
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
1457 breakpoint).
1458
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
1461 the CLI.
1462
1463 This is also a good example of how getting the CLI ``right'' will be
1464 hard.
1465
1466 --
1467
1468 Move gdb_lasterr to ui_out?
1469
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.
1473
1474 --
1475
1476 do_setshow_command contains a 1024 byte buffer.
1477
1478 The function assumes that there will never be any more than 1024 bytes
1479 of enum. It should use mem_file.
1480
1481 --
1482
1483 Should struct cmd_list_element . completer take the command as an
1484 argument?
1485
1486 --
1487
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.
1491
1492 --
1493
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.
1497
1498 --
1499
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
1502 internals?
1503
1504 --
1505
1506 Architectural Change: Async
1507 ===========================
1508
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.
1513
1514 The closest a target comes to supporting full asynchronous mode are
1515 the remote targets ``async'' and ``extended-async''.
1516
1517 --
1518
1519 Asynchronous expression evaluator
1520
1521 Inferior function calls hang GDB.
1522
1523 --
1524
1525 Fix implementation of ``target xxx''.
1526
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.
1533
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.
1539
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.
1543
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.
1549
1550 See also:
1551 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00062.html
1552
1553 --
1554
1555 Make "target xxx" command interruptible.
1556
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.
1561
1562 --
1563
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.
1568
1569 [hey async!!]
1570
1571 --
1572
1573 TODO FAQ
1574 ========
1575
1576 Frequently requested but not approved requests.
1577
1578 --
1579
1580 Eliminate unused argument warnings using ATTRIBUTE_UNUSED.
1581
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.
1586
1587 --
1588
1589
1590
1591 Legacy Wish List
1592 ================
1593
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.
1597
1598 --
1599
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.
1606
1607 --
1608
1609 START_INFERIOR_TRAPS_EXPECTED need never be defined to 2, since that
1610 is its default value. Clean this up.
1611
1612 --
1613
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.
1618
1619 --
1620
1621 Make single_step() insert and remove breakpoints in one operation.
1622
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.]
1627
1628 --
1629
1630 Speed up single stepping by avoiding extraneous ptrace calls.
1631
1632 --
1633
1634 Speed up single stepping by not inserting and removing breakpoints
1635 each time the inferior starts and stops.
1636
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.
1640
1641 [this has resulted in numerous debates. The issue isn't clear cut]
1642
1643 --
1644
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.
1649
1650 [you wish]
1651
1652 --
1653
1654 GDB reopens the source file on every line, as you "next" through it.
1655
1656 [still true? I've a memory of this being fixed]
1657
1658 --
1659
1660 Perhaps "i source" should take an argument like that of "list".
1661
1662 --
1663
1664 Remove "at 0xnnnn" from the "b foo" response, if `print address off' and if
1665 it matches the source line indicated.
1666
1667 --
1668
1669 The prompt at end of screen should accept space as well as CR.
1670
1671 --
1672
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, ...)".
1676
1677 --
1678
1679 "i program" should work for core files, and display more info, like what
1680 actually caused it to die.
1681
1682 --
1683
1684 "x/10i" should shorten the long name, if any, on subsequent lines.
1685
1686 --
1687
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
1690 an error.
1691
1692 --
1693
1694 "set zeroprint off", don't bother printing members of structs which
1695 are entirely zero. Useful for those big structs with few useful
1696 members.
1697
1698 --
1699
1700 GDB does four ioctl's for every command, probably switching terminal modes
1701 to/from inferior or for readline or something.
1702
1703 --
1704
1705 terminal_ours versus terminal_inferior: cache state. Switch should be a noop
1706 if the state is the same, too.
1707
1708 --
1709
1710 "i frame" shows wrong "arglist at" location, doesn't show where the args
1711 should be found, only their actual values.
1712
1713 --
1714
1715 There should be a way for "set" commands to validate the new setting
1716 before it takes effect.
1717
1718 --
1719
1720 "ena d" is ambiguous, why? "ena delete" seems to think it is a command!
1721
1722 --
1723
1724 i line VAR produces "Line number not known for symbol ``var''.". I
1725 thought we were stashing that info now!
1726
1727 --
1728
1729 We should be able to write to random files at hex offsets like adb.
1730
1731 --
1732
1733 [elena - delete this]
1734
1735 Handle add_file with separate text, data, and bss addresses. Maybe
1736 handle separate addresses for each segment in the object file?
1737
1738 --
1739
1740 [Jimb/Elena delete this one]
1741
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.
1745
1746 --
1747
1748 [elena delete this also]
1749
1750 Remove all references to:
1751 text_offset
1752 data_offset
1753 text_data_start
1754 text_end
1755 exec_data_offset
1756 ...
1757 now that we have BFD. All remaining are in machine dependent files.
1758
1759 --
1760
1761 Re-organize help categories into things that tend to fit on a screen
1762 and hang together.
1763
1764 --
1765
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).
1769
1770 [actually, add ADB interface :-]
1771
1772 --
1773
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.
1777
1778 --
1779
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
1789
1790 --
1791
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).
1795
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]
1799
1800 --
1801
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
1805 real symtabs.
1806
1807 --
1808
1809 value_add() should be subtracting the lower bound of arrays, if known,
1810 and possibly checking against the upper bound for error reporting.
1811
1812 --
1813
1814 When listing source lines, check for a preceding \n, to verify that
1815 the file hasn't changed out from under us.
1816
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. ]
1819
1820 --
1821
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.
1825
1826 --
1827
1828 Possible feature: A version of the "disassemble" command which shows
1829 both source and assembly code ("set symbol-filename on" is a partial
1830 solution).
1831
1832 [has this been done? It was certainly done for MI and GDBtk]
1833
1834 --
1835
1836 investigate "x/s 0" (right now stops early) (I think maybe GDB is
1837 using a 0 address for bad purposes internally).
1838
1839 --
1840
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).
1843
1844 --
1845
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.
1850
1851 --
1852
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.
1857
1858 --
1859
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.
1866
1867 --
1868
1869 Investigate adding symbols in target_load--some targets do, some
1870 don't.
1871
1872 --
1873
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
1876 bar.c).
1877
1878 --
1879
1880 Merge xcoffread.c and coffread.c. Use breakpoint_re_set instead of
1881 fixup_breakpoints.
1882
1883 --
1884
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).
1887
1888 --
1889
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".
1893
1894 --
1895
1896 [Hey! Hint Hint Delete Delete!!!]
1897
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.
1901
1902 --
1903
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.
1906
1907 -------------------- enummask.c
1908 enum mask
1909 {
1910 ANIMAL = 0,
1911 VEGETABLE = 1,
1912 MINERAL = 2,
1913 BASIC_CATEGORY = 3,
1914
1915 WHITE = 0,
1916 BLUE = 4,
1917 GREEN = 8,
1918 BLACK = 0xc,
1919 COLOR = 0xc,
1920
1921 ALIVE = 0x10,
1922
1923 LARGE = 0x20
1924 } v;
1925
1926 --
1927
1928 If try to modify value in file with "set write off" should give
1929 appropriate error not "cannot access memory at address 0x65e0".
1930
1931 --
1932
1933 Allow core file without exec file on RS/6000.
1934
1935 --
1936
1937 Make sure "shell" with no arguments works right on DOS.
1938
1939 --
1940
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
1943 same way.
1944
1945 --
1946
1947 [Is this another delete???]
1948
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).
1951
1952 --
1953
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.
1959
1960 --
1961
1962 Add function arguments to gdb user defined functions.
1963
1964 --
1965
1966 Add convenience variables that refer to exec file, symbol file,
1967 selected frame source file, selected frame function, selected frame
1968 line number, etc.
1969
1970 --
1971
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
1976 accessed.
1977
1978 --
1979
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).
1983
1984 --
1985
1986 Remove the range and type checking code and documentation, if not
1987 going to implement.
1988
1989 # Local Variables:
1990 # mode: text
1991 # End: