* xcoffread.c (scan_xcoff_symtab): Ignore symbols beginning with
[deliverable/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 Enable MI by default. Old code can be deleted after 5.1 is out.
93
94 Issues:
95
96 o syntax change where a list would
97 look like:
98 [ foo=a, foo=b, foo=c ]
99 instead of
100 { foo=a, foo=b, foo=c }
101
102 o kill off the idea of a reverse
103 query.
104
105 o review test cases
106
107 o enable it
108
109 --
110
111 Pascal (Pierre Muller, David Taylor)
112
113 Pierre Muller has contributed patches for adding Pascal Language
114 support to GDB.
115
116 2 pascal language patches inserted in database
117 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00521.html
118
119 Indent -gnu ?
120 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00496.html
121
122 [I think this has been merged, need to confirm - cagney]
123
124 --
125
126 Java (Anthony Green, David Taylor)
127
128 Anthony Green has a number of Java patches that did not make it into
129 the 5.0 release. The first two are in cvs now, but the third needs
130 some fixing up before it can go in.
131
132 Patch: java tests
133 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00512.html
134
135 Patch: java booleans
136 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00515.html
137
138 Patch: handle N_MAIN stab
139 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00527.html
140
141 -- 2001-03-08
142
143 Add CRIS target.
144
145 A predicate to this is the multi-arching of SOFTWARE_SINGLE_STEP(). A
146 patch has been submitted.
147
148 --
149
150 GDB 5.1 - Cleanups
151 ==================
152
153 The following code cleanups will hopefully be applied to GDB 5.1.
154
155 -- 2001-03-26
156
157 Resolve the build status of all broken targets as identified by the
158 MAINTAINERS file.
159
160 o arm-* vs NetBSD's lack of ``unix''
161 o arm-* vs IRIX (see below)
162
163 o delete mpw?
164
165 -- 2001-03-15
166
167 Obsolete some targets.
168
169 Possible selection criteria are:
170
171 o uses a deprecated feature
172
173 o doesn't build
174
175 o doesn't have a maintainer
176
177 Steps:
178
179 o Identify TUPPLE : CPU / HOST / TARGET
180 combinations.
181
182 TUPPLE CPU HOST TARGET ZAPPED
183 ------ --- ---- ------ ------
184 ns32k-*-mach3* ns32k ns32km3 ns32km3 yes
185 ns32k-umax-* ns32k umax - yes
186 ns32k-utek-sysv* ns32k merlin merlin yes
187 ns32k-utek-* ns32k - umax yes
188 tic80-* tic80 - tic80 yes
189 m68*-isi-* m68k isi isi
190 m68*-sony-* m68k news news
191 m68030-sony-* m68k news1000 -
192 m68*-rom68k-* m68k - (monitor)
193 m68*-*bug-* m68k - (monitor)
194 m68*-monitor-* m68k - (monitor)
195 m68*-est-* m68k - (monitor)
196 a29k-*-* a29k ultra3 - yes
197 a29k-*-sym1* a29k - ultra3 yes
198 a29k-*-kern* a29k - a29k-kern yes
199 powerpcle-*-solaris* powerpc solaris solaris yes
200 powerpcle-*-cygwin* powerpc cygwin cygwin yes
201 powerpc-*-netware* powerpc - ppc-nw yes
202 w65-*-* w65 - w65 yes
203 i[3456]86-*-sunos* i386 sun386 sun386 yes
204
205 (DONE)
206
207 o post proposals to gdb@
208 (DONE)
209
210 o post revised proposals to gdb-announce@
211 crossed with gdb@ reply-to to gdb@
212 (DONE)
213
214 o clobber the tupple and files:
215 configure.host
216 configure.tgt
217 config/CPU/*HOST*
218 config/CPU/*TARGET*
219 *-tdep.c *-nat.c *-xdep.c
220
221 o update NEWS
222
223 --
224
225 Zap still more of that nonexistant romp target.
226
227 --
228
229 Fix copyright notices.
230
231 Turns out that ``1998-2000'' isn't considered valid :-(
232
233 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00467.html
234
235 --
236
237 GDB 5.1 - Known Problems
238 ========================
239
240 --
241
242 z8k
243
244 The z8k has suffered bit rot and is known to not build. The problem
245 was occuring in the opcodes directory.
246
247 --
248
249 m88k
250
251 The m88k has suffered bit rot and is known to not build.
252
253 --
254
255 Solaris 8 x86 CURSES_H problem
256 http://sources.redhat.com/ml/gdb/2000-07/msg00038.html
257
258 The original problem was worked around with:
259
260 2000-06-06 Michael Snyder <msnyder@cygnus.com>
261
262 * configure.in: Enable autoconf to find curses.h on Solaris 2.8.
263 * configure: Regenerate.
264
265 When building both GDB and SID using the same source tree the problem
266 will still occure. sid/component/configure.in mis-configures
267 <curses.h> and leaves wrong information in the config cache.
268
269 --
270
271 GDB 5.2 - Fixes
272 ===============
273
274 --
275
276 Thread support. Right now, as soon as a thread finishes and exits,
277 you're hosed. This problem is reported once a week or so.
278
279 --
280
281 GDB 5.2 - New features
282 ======================
283
284 --
285
286 GCC 3.0 ABI support (but hopefully sooner...).
287
288 --
289
290 Objective C/C++ support (but hopefully sooner...).
291
292 --
293
294 GDB 5.2 - Cleanups
295 ==================
296
297 The following cleanups have been identified as part of GDB 5.2.
298
299 --
300
301 Remove old code that does not use ui_out functions and all the related
302 "ifdef"s. This also allows the elimination of -DUI_OUT from
303 Makefile.in and configure.in.
304
305 --
306
307 Compiler warnings.
308
309 Eliminate all warnings for at least one host/target for the flags:
310 -Wimplicit -Wreturn-type -Wcomment -Wtrigraphs -Wformat -Wparentheses
311 -Wpointer-arith -Wuninitialized
312
313 --
314
315 Deprecate, if not delete, the following:
316
317 register[]
318 register_valid[]
319 register_buffer()
320 REGISTER_BYTE()
321 Replaced by, on the target side
322 supply_register()
323 and on core-gdb side:
324 {read,write}_register_gen()
325 Remote.c will need to use something
326 other than REGISTER_BYTE() and
327 REGISTER_RAW_SIZE() when unpacking
328 [gG] packets.
329
330 STORE_PSEUDO_REGISTER
331 FETCH_PSEUDO_REGISTER
332 Now handed by the methods
333 gdbarch_{read,write}_register()
334 which sits between core GDB and
335 the register cache.
336
337 REGISTER_CONVERTIBLE
338 REGISTER_CONVERT_TO_RAW
339 REGISTER_CONVERT_TO_VIRTUAL
340 I think these three are redundant.
341 gdbarch_register_{read,write} can
342 do any conversion it likes.
343
344 REGISTER_VIRTUAL_SIZE
345 MAX_REGISTER_VIRTUAL_SIZE
346 REGISTER_VIRTUAL_TYPE
347 I think these can be replaced by
348 the pair:
349 FRAME_REGISTER_TYPE(frame, regnum)
350 REGISTER_TYPE(regnum)
351
352 DO_REGISTERS_INFO
353 Replace with
354 FRAME_REGISTER_INFO (frame, ...)
355
356 REGISTER_SIM_REGNO()
357 If nothing else rename this so that
358 how it relates to rawreg and the
359 regnum is clear.
360
361 REGISTER_BYTES
362 The size of the cache can be computed
363 on the fly.
364
365 --
366
367 Restructure gdb directory tree so that it avoids any 8.3 and 14
368 filename problems.
369
370 --
371
372 Convert GDB build process to AUTOMAKE.
373
374 See also sub-directory configure below.
375
376 The current convention is (kind of) to use $(<header>_h) in all
377 dependency lists. It isn't done in a consistent way.
378
379 --
380
381 GDB 5.2 - Known Problems
382 ========================
383
384 --
385
386 Code Cleanups: General
387 ======================
388
389 The following are more general cleanups and fixes. They are not tied
390 to any specific release.
391
392 --
393
394 Investigate changing --target=a29k-amd-udi to a29k-*-coff* and
395 rationalize *.mt files. The got-ya is in remote-eb.c - it has its own
396 custom tty manipulation - it should be using the serial object.
397
398 --
399
400 Rename read_register{,_pid}() to read_unsigned_register{,_pid}().
401
402 --
403
404 Can't build IRIX -> arm GDB.
405 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00356.html
406
407 David Whedon writes:
408 > Now I'm building for an embedded arm target. If there is a way of turning
409 > remote-rdi off, I couldn't find it. It looks like it gets built by default
410 > in gdb/configure.tgt(line 58) Anyway, the build dies in
411 > gdb/rdi-share/unixcomm.c. SERPORT1 et. al. never get defined because we
412 > aren't one of the architectures supported.
413
414 --
415
416 Problem with weak functions
417 http://sourceware.cygnus.com/ml/gdb/2000-05/msg00060.html
418
419 Dan Nicolaescu writes:
420 > It seems that gdb-4.95.1 does not display correctly the function when
421 > stoping in weak functions.
422 >
423 > It stops in a function that is defined as weak, not in the function
424 > that is actually run...
425
426 --
427
428 Follow through `make check' with --enable-shared.
429
430 When the srcware tree is configured with --enable-shared, the `expect'
431 program won't run properly. Jim Wilson found out gdb has a local hack
432 to set LD_LIBRARY_PATH, but, AFAIK, no other project has been hacked
433 similarly.
434
435 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00845.html
436
437 --
438
439 Delete macro TARGET_BYTE_ORDER_SELECTABLE.
440
441 Patches in the database.
442
443 --
444
445 printcmd.c (print_address_numeric):
446
447 NOTE: This assumes that the significant address information is kept in
448 the least significant bits of ADDR - the upper bits were either zero
449 or sign extended. Should ADDRESS_TO_POINTER() or some
450 ADDRESS_TO_PRINTABLE() be used to do the conversion?
451
452 --
453
454 The BFD directory requires bug-fixed AUTOMAKE et.al.
455
456 AUTOMAKE 1.4 incorrectly set the TEXINPUTS environment variable. It
457 contained the full path to texinfo.tex when it should have only
458 contained the directory. The bug has been fixed in the current
459 AUTOMAKE sources. Automake snapshots can be found in:
460 ftp://sourceware.cygnus.com/pub/gdb/snapshots
461 and ftp://sourceware.cygnus.com/pub/binutils
462
463 --
464
465 Find something better than DEFAULT_BFD_ARCH, DEFAULT_BFD_VEC to
466 determine the default isa/byte-order.
467
468 --
469
470 Rely on BFD_BIG_ENDIAN and BFD_LITTLE_ENDIAN instead of host dependent
471 BIG_ENDIAN and LITTLE_ENDIAN.
472
473 --
474
475 Eliminate more compiler warnings.
476
477 Of course there also needs to be the usual debate over which warnings
478 are valid and how to best go about this.
479
480 One method: choose a single option; get agreement that it is
481 reasonable; try it out to see if there isn't anything silly about it
482 (-Wunused-parameters is an example of that) then incrementally hack
483 away.
484
485 The other method is to enable all warnings and eliminate them from one
486 file at a time.
487
488 --
489
490 Elimination of ``(catch_errors_ftype *) func''.
491
492 Like make_cleanup_func it isn't portable.
493 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00791.html
494 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00814.html
495
496 --
497
498 Nuke #define CONST_PTR.
499
500 --
501
502 Nuke USG define.
503
504 --
505
506 [PATCH/5] src/intl/Makefile.in:distclean additions
507 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00363.html
508
509 Do not forget to merge the patch back into the trunk.
510
511 --
512
513 Rationalize the host-endian code (grep for HOST_BYTE_ORDER).
514
515 At present defs.h includes <endian.h> (which is linux specific) yet
516 almost nothing depends on it. Suggest "gdb_endian.h" which can also
517 handle <machine/endian.h> and only include that where it is really
518 needed.
519
520 --
521
522 Replace savestring() with something from libiberty.
523
524 An xstrldup()? but that would have different semantics.
525
526 --
527
528 Rationalize use of floatformat_unknown in GDB sources.
529
530 Instead of defaulting to floatformat_unknown, should hosts/targets
531 specify the value explicitly?
532
533 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00447.html
534
535 --
536
537 Add a ``name'' member to include/floatformat.h:struct floatformat.
538 Print that name in gdbarch.c.
539
540 --
541
542 Sort out the harris mess in include/floatformat.h (it hardwires two
543 different floating point formats).
544
545 --
546
547 See of the GDB local floatformat_do_doublest() and libiberty's
548 floatformat_to_double (which was once GDB's ...) can be merged some
549 how.
550
551 --
552
553 Eliminate mmalloc(), mstrsave() et.al. from GDB.
554
555 Also eliminate it from defs.h.
556
557 --
558
559 Eliminate PTR. ISO-C allows ``void *''.
560
561 --
562
563 Eliminate abort ().
564
565 GDB should never abort. GDB should either throw ``error ()'' or
566 ``internal_error ()''. Better still GDB should naturally unwind with
567 an error status.
568
569 --
570
571 GDB probably doesn't build on FreeBSD pre 2.2.x
572 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00378.html
573
574 Fixes to get FreeBSD working on 2.2.x, 3.x and 4.x caused the code to
575 suffer bit rot.
576
577 --
578
579 Deprecate "fg". Apparently ``fg'' is actually continue.
580
581 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00417.html
582
583 --
584
585 Deprecate current use of ``floatformat_unknown''.
586
587 Require all targets to explicitly provide their float format instead
588 of defaulting to floatformat unknown. Doing the latter leads to nasty
589 bugs.
590
591 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00447.html
592
593 --
594
595 Rationalize floatformat_to_double() vs floatformat_to_doublest().
596
597 Looks like GDB migrated floatformat_to_double() to libiberty but then
598 turned around and created a ..._to_doublest() the latter containing
599 several bug fixes.
600
601 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00472.html
602
603 --
604
605 Move floatformat_ia64_ext to libiberty/include floatformat.[ch].
606
607 http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00466.html
608
609 --
610
611 The ``maintenance deprecate set endian big'' command doesn't notice
612 that it is deprecating ``set endian'' and not ``set endian big'' (big
613 is implemented using an enum). Is anyone going to notice this?
614
615 --
616
617 When tab expanding something like ``set arch<tab>'' ignore the
618 deprecated ``set archdebug'' and expand to ``set architecture''.
619
620 --
621
622 Eliminate ``arm_register_names[j] = (char *) regnames[j]'' and the
623 like from arm-tdep.c.
624
625 --
626
627 Fix uses of ->function.cfunc = set_function().
628
629 The command.c code calls sfunc() when a set command. Rather than
630 change it suggest fixing the callback function so that it is more
631 useful. See:
632
633 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00062.html
634
635 See also ``Fix implementation of ``target xxx''.'' below.
636
637 --
638
639 IRIX 3.x support is probably broken.
640
641 --
642
643 Delete sim/SIM_HAVE_BREAKPOINTS and gdb/SIM_HAS_BREAKPOINTS.
644 http://sourceware.cygnus.com/ml/gdb-patches/2000-07/msg00042.html
645
646 Apart from the d30v, are there any sim/common simulators that make use
647 of this?
648
649 A brief summary of what happened is that sim/common/sim-break.c was
650 created as a good idea. It turned out a better idea was to use
651 SIM_SIGBREAK and have GDB pass back sim_resume (..., SIGBREAK).
652
653 --
654
655 Move remote_remove_hw_breakpoint, remote_insert_hw_breakpoint,
656 remote_remove_watchpoint, remote_insert_watchpoint into target vector.
657
658 --
659
660 Eliminate ``extern'' from C files.
661
662 --
663
664 Replace ``STREQ()'' et.al. with ``strcmp() == 0'' et.al.
665
666 Extreme care is recommeded - perhaps only modify tests that are
667 exercised by the testsuite (as determined using some type of code
668 coverage analysis).
669
670 --
671
672 Replace the file gdb/CONTRIBUTE with a file that is generated from the
673 gdb/doc/*.texinfo directory.
674
675 --
676
677 New Features and Fixes
678 ======================
679
680 These are harder than cleanups but easier than work involving
681 fundamental architectural change.
682
683 --
684
685 Hardware watchpoint problems on x86 OSes, including Linux:
686
687 1. Delete/disable hardware watchpoints should free hardware debug
688 registers.
689 2. Watch for different values on a viariable with one hardware debug
690 register.
691
692 According to Eli Zaretskii <eliz@delorie.com>:
693
694 These are not GDB/ia32 issues per se: the above features are all
695 implemented in the DJGPP port of GDB and work in v5.0. Every
696 x86-based target should be able to lift the relevant parts of
697 go32-nat.c and use them almost verbatim. You get debug register
698 sharing through reference counts, and the ability to watch large
699 regions (up to 16 bytes) using multiple registers. (The required
700 infrastructure in high-level GDB application code, mostly in
701 breakpoint.c, is also working since v5.0.)
702
703 --
704
705 Add built-by, build-date, tm, xm, nm and anything else into gdb binary
706 so that you can see how the GDB was created.
707
708 --
709
710 Add an "info bfd" command that displays supported object formats,
711 similarly to objdump -i.
712
713 Is there a command already?
714
715 --
716
717 Fix ``I'm sorry, Dave, I can't do that.'' from symfile.c.
718
719 This requires internationalization.
720
721 --
722
723 Add support for:
724
725 (gdb) p fwprintf(stdout,L"%S\n", f)
726 No symbol "L" in current context.
727
728 --
729
730 Cleanup configury support for optional sub-directories.
731
732 Check how GCC handles multiple front ends for an example of how things
733 could work. A tentative first step is to rationalize things so that
734 all sub directories are handled in a fashion similar to gdb/mi.
735
736 See also automake above.
737
738 --
739
740 Add a transcript mechanism to GDB.
741
742 Such a mechanism might log all gdb input and output to a file in a
743 form that would allow it to be replayed. It could involve ``gdb
744 --transcript=FILE'' or it could involve ``(gdb) transcript file''.
745
746 --
747
748 Can the xdep files be replaced by autoconf?
749
750 --
751
752 Document trace machinery
753
754 --
755
756 Document ui-out and ui-file.
757
758 http://sourceware.cygnus.com/ml/gdb/2000-04/msg00121.html
759
760 --
761
762 Update texinfo.tex to latest?
763
764 --
765
766 Incorporate agentexpr.texi into gdb.texinfo
767
768 agentexpr.texi mostly describes the details of the byte code used for
769 tracepoints, not the internals of the support for this in GDB. So it
770 looks like gdb.texinfo is a better place for this information.
771
772 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00566.html
773
774 --
775
776 Document overlay machinery.
777
778 --
779
780 ``(gdb) catch signal SIGNAL''
781
782 Overlaps with ``handle SIGNAL'' but the implied behavior is different.
783 You can attach commands to a catch but not a handle. A handle has a
784 limited number of hardwired actions.
785
786 --
787
788 Fix TUI
789
790 o readline/*.h bitrot
791
792 The TUI isn't up-to-date with
793 respect to the readline currently
794 bundled with GDB. Importing a
795 new readline is on the 5.1 wish
796 list so this can only get worse.
797
798 Grep for things like term_cursor_move.
799
800 (To be honest, I don't see anyone
801 importing a new readline before 5.1 is
802 out)
803
804 o tui.c:va_catch_errors() bitrot
805
806 This nasty piece of work used knowledge
807 of the internals of GDBs error functions :-(
808 Ever since those internals were cleaned
809 up this code has been broken. :-(
810
811 o tuiWin.c:c_makeVisibleWithNewHeight() broken
812 tuiLayout.c:_extractDisplayStartAddr() broken
813
814 Both these function call find_line_pc()
815 incorrectly (wrong args, wrong return value).
816
817 I suspect this bug has always been there!
818 It had been hidden because those files
819 didn't include the necessary header files
820 from gdb proper :-(
821
822 o tuiRegs() host dependant
823
824 Not suprisingly, this isn't a very portable
825 section of code. However, I'm sure people
826 could live with no regs in the short to
827 medium term.
828
829 o defs.h: #include "tui.h" et.al.
830
831 I'm not sure where this came from.
832 It was a really bad idea.
833
834 To get things to compile I did a nasty
835 hack (Just declare what was needed and
836 replace any expressions like xx->y.z()
837 in GDB proper with function calls). I
838 could commit it slightly cleaned up if
839 you like.
840
841 Medium Term. the #ifdef TUI and TuiDo()
842 should be changed to hooks (like GDBTK).
843 The gdb-events.[hc] is there for that
844 purpose (1)
845
846 o tui.c:_tuiReset() host dependant
847
848 tui.c contains a lump of termio[s]
849 I suspect an equivalent block of
850 code can be lifted from readline.
851 An equivalent readline function may
852 even be available.
853
854 o curses.h vs ncurses.h.
855
856 Simple portability problem.
857
858 o subsetCompare()
859
860 This function is a mystery - where is it?
861
862 o tui-file.[hc] cleanup
863
864 This can be significantly simplified.
865
866 o The code should be pacified. (-Werror -W...)
867
868 There are plenty of #includes,
869 duplicate #includes, missing function decls
870 and the like.
871
872 Some of the problems I found were through
873 fixing a few of the warnings.
874
875 o The code should be GNUtified.
876
877 It would be very nice to have this code
878 look like the rest of GDB. That way people
879 would be more accepting of it as a true
880 gdb component.
881
882 Until it is GNUtified it is going to stick
883 out like a sore thumb to the programmer.
884
885 o The code should be clearly copyrighted
886
887 (FSF, with due credit to HP)
888
889 --
890
891 Add support for ``gdb --- PROGRAM ARGS ...''.
892 Add support for ``gdb -cmd=...''
893
894 Along with many variations. Check:
895
896 ????? for a full discussion.
897
898 for a discussion.
899
900 --
901
902 Implement ``(gdb) !ls''.
903
904 Which is very different from ``(gdb) ! ls''. Implementing the latter
905 is trivial.
906
907 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00034.html
908
909 --
910
911 Change the (char *list[]) to (const char (*)[]) so that dynamic lists can
912 be passed.
913
914 --
915
916 When tab expanding something like ``set arch<tab>'' ignore the
917 deprecated ``set archdebug'' and expand to ``set architecture''.
918
919 --
920
921 Replace the code that uses the host FPU with an emulator of the target
922 FPU.
923
924 --
925
926 The "ocd reset" command needs to flush the dcache, which requires breaking
927 the abstraction layer between the target independent and target code. One
928 way to address this is provide a generic "reset" command and target vector.
929
930 http://sources.redhat.com/ml/gdb-patches/2000-10/msg00011.html
931
932 --
933
934 Thread Support
935 ==============
936
937 --
938
939 Generic: lin-thread cannot handle thread exit (Mark Kettenis, Michael
940 Snyder) http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00525.html
941
942 The thread_db assisted debugging code doesn't handle exiting threads
943 properly, at least in combination with glibc 2.1.3 (the framework is
944 there, just not the actual code). There are at least two problems
945 that prevent this from working.
946
947 As an additional reference point, the pre thread_db code did not work
948 either.
949
950 --
951
952 GNU/Linux/x86 and random thread signals (and Solaris/SPARC but not
953 Solaris/x86).
954 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00336.html
955
956 Christopher Blizzard writes:
957
958 So, I've done some more digging into this and it looks like Jim
959 Kingdon has reported this problem in the past:
960
961 http://sourceware.cygnus.com/ml/bug-gdb/1999-10/msg00058.html
962
963 I can reproduce this problem both with and without Tom's patch. Has
964 anyone seen this before? Maybe have a solution for it hanging around?
965 :)
966
967 There's a test case for this documented at:
968
969 when debugging threaded applications you get extra SIGTRAPs
970 http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=9565
971
972 [There should be a GDB testcase - cagney]
973
974 --
975
976 GDB5 TOT on unixware 7
977 http://sourceware.cygnus.com/ml/gdb/2000-04/msg00119.html
978
979 Robert Lipe writes:
980 > I just spun the top of tree of the GDB5 branch on UnixWare 7. As a
981 > practical matter, the current thread support is somewhat more annoying
982 > than when GDB was thread-unaware.
983
984 --
985
986 Language Support
987 ================
988
989 New languages come onto the scene all the time.
990
991 --
992
993 Re: Various C++ things
994
995 value_headof/value_from_vtable_info are worthless, and should be
996 removed. The one place in printcmd.c that uses it should use the RTTI
997 functions.
998
999 RTTI for g++ should be using the typeinfo functions rather than the
1000 vtables. The typeinfo functions are always at offset 4 from the
1001 beginning of the vtable, and are always right. The vtables will have
1002 weird names like E::VB sometimes. The typeinfo function will always
1003 be "E type_info function", or somesuch.
1004
1005 value_virtual_fn_field needs to be fixed so there are no failures for
1006 virtual functions for C++ using g++.
1007
1008 Testsuite cases are the major priority right now for C++ support,
1009 since i have to make a lot of changes that could potentially break
1010 each other.
1011
1012 --
1013
1014 Add support for Modula3
1015
1016 Get DEC/Compaq to contribute their Modula-3 support.
1017
1018 --
1019
1020 Remote Protocol Support
1021 =======================
1022
1023 --
1024
1025 Revised UDP support (was: Re: [Fwd: [patch] UDP transport support])
1026 http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00000.html
1027
1028 (Broken) support for GDB's remote protocol across UDP is to be
1029 included in the follow-on release.
1030
1031 It should be noted that UDP can only work when the [Gg] packet fits in
1032 a single UDP packet.
1033
1034 There is also much debate over the merit of this.
1035
1036 --
1037
1038 Migrate qfThreadInfo packet -> qThreadInfo. (Andrew Cagney)
1039
1040 Add support for packet enable/disable commands with these thread
1041 packets. General cleanup.
1042
1043 [PATCH] Document the ThreadInfo remote protocol queries
1044 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00832.html
1045
1046 [PATCH] "info threads" queries for remote.c
1047 http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00831.html
1048
1049 --
1050
1051 Remote protocol doco feedback.
1052
1053 Too much feedback to mention needs to be merged in (901660). Search
1054 for the word ``remote''.
1055
1056
1057 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00023.html
1058 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00056.html
1059 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00382.html
1060
1061 --
1062
1063 GDB doesn't recover gracefully from remote protocol errors.
1064
1065 GDB wasn't checking for NAKs from the remote target. Instead a NAK is
1066 ignored and a timeout is required before GDB retries. A pre-cursor to
1067 fixing this this is making GDB's remote protocol packet more robust.
1068
1069 While downloading to a remote protocol target, gdb ignores packet
1070 errors in so far as it will continue to download with chunk N+1 even
1071 if chunk N was not correctly sent. This causes gdb.base/remote.exp to
1072 take a painfully long time to run. As a PS that test needs to be
1073 fixed so that it builds on 16 bit machines.
1074
1075 --
1076
1077 Fix the ``!'' packet.
1078
1079 JT reported that the existing targets do, in fact return ``OK'' so it
1080 is possible to merge remote and extended-remote targets.
1081
1082 --
1083
1084 Drop ``<address>'' from the [SsCc] packets.
1085
1086 I don't think that GDB generates them so having it in the protocol is
1087 silly.
1088
1089 --
1090
1091 Fix doco on the ``q'' packet.
1092
1093 It has evolved into a generic RPC. The notes should reflect this and,
1094 perhaps, the ``Q'' packet can be deprecated.
1095
1096 The doco should mention that ``OK'' is a valid packet response.
1097
1098 The doco should explain why ``OK'' needs to be a valid packet
1099 response.
1100
1101 --
1102
1103 Add the cycle step command.
1104
1105 http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00237.html
1106
1107 --
1108
1109 Resolve how to scale things to support very large packets.
1110
1111 --
1112
1113 Resolve how to handle a target that changes things like its endianess
1114 on the fly - should it be returned in the ``T'' packet?
1115
1116 Underlying problem is that the register file is target endian. If the
1117 target endianess changes gdb doesn't know.
1118
1119 --
1120
1121 Symbol Support
1122 ==============
1123
1124 If / when GDB starts to support the debugging of multi-processor
1125 (rather than multi-thread) applications the symtab code will need to
1126 be updated a little so that several independent symbol tables are
1127 active at a given time.
1128
1129 The other interesting change is a clarification of the exact meaning
1130 of CORE_ADDR and that has had consequences for a few targets (that
1131 were abusing that data type).
1132
1133 --
1134
1135 Investiagate ways of reducing memory.
1136
1137 --
1138
1139 Investigate ways of improving load time.
1140
1141 --
1142
1143 Get the d10v to use POINTER_TO_ADDRESS and ADDRESS_TO_POINTER.
1144
1145 Consequence of recent symtab clarification. No marks for figuring out
1146 who maintains the d10v.
1147
1148 --
1149
1150 Get the MIPS to correctly sign extend all address <-> pointer
1151 conversions.
1152
1153 Consequence of recent symtab clarification. No marks for figuring out
1154 who maintains the MIPS.
1155
1156 --
1157
1158 GDB truncates 64 bit enums.
1159
1160 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00290.html
1161
1162 --
1163
1164 Testsuite Support
1165 =================
1166
1167 There are never to many testcases.
1168
1169 --
1170
1171 Better thread testsuite.
1172
1173 --
1174
1175 Better C++ testsuite.
1176
1177 --
1178
1179 Look at adding a GDB specific testsuite directory so that white box
1180 tests of key internals can be added (eg ui_file).
1181
1182 --
1183
1184 Separate out tests that involve the floating point (FP).
1185
1186 (Something for people brining up new targets). FP and non-fp tests
1187 are combined. I think there should be set of basic tests that
1188 exercise pure integer support and then a more expanded set that
1189 exercise FP and FP/integer interactions.
1190
1191 As an example, the MIPS, for n32 as problems with passing FP's and
1192 structs. Since most inferior call tests include FP it is difficult to
1193 determine of the integer tests are ok.
1194
1195 --
1196
1197 Architectural Changes: General
1198 ==============================
1199
1200 These are harder than simple cleanups / fixes and, consequently
1201 involve more work. Typically an Architectural Change will be broken
1202 down into a more digestible set of cleanups and fixes.
1203
1204 --
1205
1206 Cleanup software single step.
1207
1208 At present many targets implement software single step by directly
1209 blatting memory (see rs6000-tdep.c). Those targets should register
1210 the applicable breakpoints using the breakpoint framework. Perhaphs a
1211 new internal breakpoint class ``step'' is needed.
1212
1213 --
1214
1215 Replace READ_FP() with FRAME_HANDLE().
1216
1217 READ_FP() is a hangover from the days of the vax when the ABI really
1218 did have a frame pointer register. Modern architectures typically
1219 construct a virtual frame-handle from the stack pointer and various
1220 other bits of string.
1221
1222 Unfortunately GDB still treats this synthetic FP register as though it
1223 is real. That in turn really confuses users (arm and ``print $fp'' VS
1224 ``info registers fp''). The synthetic FP should be separated out of
1225 the true register set presented to the user.
1226
1227 --
1228
1229 Register Cache Cleanup (below from Andrew Cagney)
1230
1231 I would depict the current register architecture as something like:
1232
1233 High GDB --> Low GDB
1234 | |
1235 \|/ \|/
1236 --- REG NR -----
1237 |
1238 register + REGISTER_BYTE(reg_nr)
1239 |
1240 \|/
1241 -------------------------
1242 | extern register[] |
1243 -------------------------
1244
1245 where neither the high (valops.c et.al.) or low gdb (*-tdep.c) are
1246 really clear on what mechanisms they should be using to manipulate that
1247 buffer. Further, much code assumes, dangerously, that registers are
1248 contigious. Having got mips-tdep.c to support multiple ABIs, believe
1249 me, that is a bad assumption. Finally, that register cache layout is
1250 determined by the current remote/local target and _not_ the less
1251 specific target ISA. In fact, in many cases it is determined by the
1252 somewhat arbitrary layout of the [gG] packets!
1253
1254
1255 How I would like the register file to work is more like:
1256
1257
1258 High GDB
1259 |
1260 \|/
1261 pseudo reg-nr
1262 |
1263 map pseudo <->
1264 random cache
1265 bytes
1266 |
1267 \|/
1268 ------------
1269 | register |
1270 | cache |
1271 ------------
1272 /|\
1273 |
1274 map random cache
1275 bytes to target
1276 dependent i-face
1277 /|\
1278 |
1279 target dependent
1280 such as [gG] packet
1281 or ptrace buffer
1282
1283 The main objectives being:
1284
1285 o a clear separation between the low
1286 level target and the high level GDB
1287
1288 o a mechanism that solves the general
1289 problem of register aliases, overlaps
1290 etc instead of treating them as optional
1291 extras that can be wedged in as an after
1292 thought (that is a reasonable description
1293 of the current code).
1294
1295 Identify then solve the hard case and the
1296 rest just falls out. GDB solved the easy
1297 case and then tried to ignore the real
1298 world :-)
1299
1300 o a removal of the assumption that the
1301 mapping between the register cache
1302 and virtual registers is largely static.
1303 If you flip the USR/SSR stack register
1304 select bit in the status-register then
1305 the corresponding stack registers should
1306 reflect the change.
1307
1308 o a mechanism that clearly separates the
1309 gdb internal register cache from any
1310 target (not architecture) dependent
1311 specifics such as [gG] packets.
1312
1313 Of course, like anything, it sounds good in theory. In reality, it
1314 would have to contend with many<->many relationships at both the
1315 virt<->cache and cache<->target level. For instance:
1316
1317 virt<->cache
1318 Modifying an mmx register may involve
1319 scattering values across both FP and
1320 mmpx specific parts of a buffer
1321
1322 cache<->target
1323 When writing back a SP it may need to
1324 both be written to both SP and USP.
1325
1326
1327 Hmm,
1328
1329 Rather than let this like the last time it was discussed, just slip, I'm
1330 first going to add this e-mail (+ references) to TODO. I'd then like to
1331 sketch out a broad strategy I think could get us there.
1332
1333
1334 First thing I'd suggest is separating out the ``extern registers[]''
1335 code so that we can at least identify what is using it. At present
1336 things are scattered across many files. That way we can at least
1337 pretend that there is a cache instead of a global array :-)
1338
1339 I'd then suggest someone putting up a proposal for the pseudo-reg /
1340 high-level side interface so that code can be adopted to it. For old
1341 code, initially a blanket rename of write_register_bytes() to
1342 deprecated_write_register_bytes() would help.
1343
1344 Following that would, finaly be the corresponding changes to the target.
1345
1346 --
1347
1348 Check that GDB can handle all BFD architectures (Andrew Cagney)
1349
1350 There should be a test that checks that BFD/GDB are in sync with
1351 regard to architecture changes. Something like a test that first
1352 queries GDB for all supported architectures and then feeds each back
1353 to GDB.. Anyone interested in learning how to write tests? :-)
1354
1355 --
1356
1357 Architectural Change: Multi-arch et al.
1358 =======================================
1359
1360 The long term objective is to remove all assumptions that there is a
1361 single target with a single address space with a single instruction
1362 set architecture and single application binary interface.
1363
1364 This is an ongoing effort. The first milestone is to enable
1365 ``multi-arch'' where by all architectural decisions are made at
1366 runtime.
1367
1368 It should be noted that ``gdbarch'' is really ``gdbabi'' and
1369 ``gdbisa''. Once things are multi-arched breaking that down correctly
1370 will become much easier.
1371
1372 --
1373
1374 GDBARCH cleanup (Andrew Cagney)
1375
1376 The non-generated parts of gdbarch.{sh,h,c} should be separated out
1377 into arch-utils.[hc].
1378
1379 Document that gdbarch_init_ftype could easily fail because it didn't
1380 identify an architecture.
1381
1382 --
1383
1384 Fix BELIEVE_PPC_PROMOTION. Change it to BELIEVE_PPC_PROMOTION_P?
1385
1386 At present there is still #ifdef BELIEVE_PPC_PROMOTION code in the
1387 symtab file.
1388
1389 --
1390
1391 Fix target_signal_from_host() etc.
1392
1393 The name is wrong for starters. ``target_signal'' should probably be
1394 ``gdb_signal''. ``from_host'' should be ``from_target_signal''.
1395 After that it needs to be multi-arched and made independent of any
1396 host signal numbering.
1397
1398 --
1399
1400 Update ALPHA so that it uses ``struct frame_extra_info'' instead of
1401 EXTRA_FRAME_INFO.
1402
1403 This is a barrier to replacing mips_extra_func_info with something
1404 that works with multi-arch.
1405
1406 --
1407
1408 Multi-arch mips_extra_func_info.
1409
1410 This first needs the alpha to be updated so that it uses ``struct
1411 frame_extra_info''.
1412
1413 --
1414
1415 Rationalize TARGET_SINGLE_FORMAT and TARGET_SINGLE_BIT et al.
1416
1417 Surely one of them is redundant.
1418
1419 --
1420
1421 Convert ALL architectures to MULTI-ARCH.
1422
1423 --
1424
1425 Select the initial multi-arch ISA / ABI based on --target or similar.
1426
1427 At present the default is based on what ever is first in the BFD
1428 archures table. It should be determined based on the ``--target=...''
1429 name.
1430
1431 --
1432
1433 Make MIPS pure multi-arch.
1434
1435 It is only at the multi-arch enabled stage.
1436
1437 --
1438
1439 Truly multi-arch.
1440
1441 Enable the code to recognize --enable-targets=.... like BINUTILS does.
1442
1443 Can the tm.h and nm.h files be eliminated by multi-arch.
1444
1445 --
1446
1447 Architectural Change: MI, LIBGDB and scripting languages
1448 ========================================================
1449
1450 See also architectural changes related to the event loop. LIBGDB
1451 can't be finished until there is a generic event loop being used by
1452 all targets.
1453
1454 The long term objective is it to be possible to integrate GDB into
1455 scripting languages.
1456
1457 --
1458
1459 Implement generic ``(gdb) commmand > file''
1460
1461 Once everything is going through ui_file it should be come fairly
1462 easy.
1463
1464 http://sourceware.cygnus.com/ml/gdb/2000-04/msg00104.html
1465
1466 --
1467
1468 Replace gdb_stdtarg with gdb_targout (and possibly gdb_targerr).
1469
1470 gdb_stdtarg is easily confused with gdb_stdarg.
1471
1472 --
1473
1474 Extra ui_file methods - dump.
1475
1476 Very useful for whitebox testing.
1477
1478 --
1479
1480 Eliminate error_begin().
1481
1482 With ui_file, there is no need for the statefull error_begin ()
1483 function.
1484
1485 --
1486
1487 Send normal output to gdb_stdout.
1488 Send error messages to gdb_stderror.
1489 Send debug and log output log gdb_stdlog.
1490
1491 GDB still contains many cases where (f)printf or printf_filtered () is
1492 used when it should be sending the messages to gdb_stderror or
1493 gdb_stdlog. The thought of #defining printf to something has crossed
1494 peoples minds ;-)
1495
1496 --
1497
1498 Re-do GDB's output pager.
1499
1500 GDB's output pager still relies on people correctly using *_filtered
1501 for gdb_stdout and *_unfiltered for gdb_stdlog / gdb_stderr.
1502 Hopefully, with all normal output going to gdb_stdout, the pager can
1503 just look at the ui_file that the output is on and then use that to
1504 decide what to do about paging. Sounds good in theory.
1505
1506 --
1507
1508 Check/cleanup MI documentation.
1509
1510 The list of commands specified in the documentation needs to be
1511 checked against the mi-cmds.c table in a mechanical way (so that they
1512 two can be kept up-to-date).
1513
1514 --
1515
1516 Convert MI into libgdb
1517
1518 MI provides a text interface into what should be many of the libgdb
1519 functions. The implementation of those functions should be separated
1520 into the MI interface and the functions proper. Those functions being
1521 moved to gdb/lib say.
1522
1523 --
1524
1525 Create libgdb.h
1526
1527 The first part can already be found in defs.h.
1528
1529 --
1530
1531 MI's input does not use buffering.
1532
1533 At present the MI interface reads raw characters of from an unbuffered
1534 FD. This is to avoid several nasty buffer/race conditions. That code
1535 should be changed so that it registers its self with the event loop
1536 (on the input FD) and then push commands up to MI as they arrive.
1537
1538 The serial code already does this.
1539
1540 --
1541
1542 Make MI interface accessible from existing CLI.
1543
1544 --
1545
1546 Add a breakpoint-edit command to MI.
1547
1548 It would be similar to MI's breakpoint create but would apply to an
1549 existing breakpoint. It saves the need to delete/create breakpoints
1550 when ever they are changed.
1551
1552 --
1553
1554 Add directory path to MI breakpoint.
1555
1556 That way the GUI's task of finding the file within which the
1557 breakpoint was set is simplified.
1558
1559 --
1560
1561 Add a mechanism to reject certain expression classes to MI
1562
1563 There are situtations where you don't want GDB's expression
1564 parser/evaluator to perform inferior function calls or variable
1565 assignments. A way of restricting the expression parser so that such
1566 operations are not accepted would be very helpful.
1567
1568 --
1569
1570 Remove sideffects from libgdb breakpoint create function.
1571
1572 The user can use the CLI to create a breakpoint with partial
1573 information - no file (gdb would use the file from the last
1574 breakpoint).
1575
1576 The libgdb interface currently affects that environment which can lead
1577 to confusion when a user is setting breakpoints via both the MI and
1578 the CLI.
1579
1580 This is also a good example of how getting the CLI ``right'' will be
1581 hard.
1582
1583 --
1584
1585 Move gdb_lasterr to ui_out?
1586
1587 The way GDB throws errors and records them needs a re-think. ui_out
1588 handles the correct output well. It doesn't resolve what to do with
1589 output / error-messages when things go wrong.
1590
1591 --
1592
1593 do_setshow_command contains a 1024 byte buffer.
1594
1595 The function assumes that there will never be any more than 1024 bytes
1596 of enum. It should use mem_file.
1597
1598 --
1599
1600 Should struct cmd_list_element . completer take the command as an
1601 argument?
1602
1603 --
1604
1605 Should the bulk of top.c:line_completion_function() be moved to
1606 command.[hc]? complete_on_cmdlist() and complete_on_enums() could
1607 then be made private.
1608
1609 --
1610
1611 top.c (execute_command): Should a command being valid when the target
1612 is running be made an attribute (predicate) to the command rather than
1613 an explicit set of tests.
1614
1615 --
1616
1617 top.c (execute_command): Should the bulk of this function be moved
1618 into command.[hc] so that top.c doesn't grub around in the command
1619 internals?
1620
1621 --
1622
1623 Architectural Change: Async
1624 ===========================
1625
1626 While GDB uses an event loop when prompting the user for input. That
1627 event loop is not exploited by targets when they allow the target
1628 program to continue. Typically targets still block in (target_wait())
1629 until the program again halts.
1630
1631 The closest a target comes to supporting full asynchronous mode are
1632 the remote targets ``async'' and ``extended-async''.
1633
1634 --
1635
1636 Asynchronous expression evaluator
1637
1638 Inferior function calls hang GDB.
1639
1640 --
1641
1642 Fix implementation of ``target xxx''.
1643
1644 At present when the user specifies ``target xxxx'', the CLI maps that
1645 directly onto a target open method. It is then assumed that the
1646 target open method should do all sorts of complicated things as this
1647 is the only chance it has. Check how the various remote targets
1648 duplicate the target operations. Check also how the various targets
1649 behave differently for purely arbitrary reasons.
1650
1651 What should happen is that ``target xxxx'' should call a generic
1652 ``target'' function and that should then co-ordinate the opening of
1653 ``xxxx''. This becomes especially important when you're trying to
1654 open an asynchronous target that may need to perform background tasks
1655 as part of the ``attach'' phase.
1656
1657 Unfortunately, due to limitations in the old/creaking command.h
1658 interface, that isn't possible. The function being called isn't told
1659 of the ``xxx'' or any other context information.
1660
1661 Consequently a precursor to fixing ``target xxxx'' is to clean up the
1662 CLI code so that it passes to the callback function (attatched to a
1663 command) useful information such as the actual command and a context
1664 for that command. Other changes such as making ``struct command''
1665 opaque may also help.
1666
1667 See also:
1668 http://sourceware.cygnus.com/ml/gdb-patches/2000-06/msg00062.html
1669
1670 --
1671
1672 Make "target xxx" command interruptible.
1673
1674 As things become async this becomes possible. A target would start
1675 the connect and then return control to the event loop. A cntrl-c
1676 would notify the target that the operation is to be abandoned and the
1677 target code could respond.
1678
1679 --
1680
1681 Add a "suspend" subcommand of the "continue" command to suspend gdb
1682 while continuing execution of the subprocess. Useful when you are
1683 debugging servers and you want to dodge out and initiate a connection
1684 to a server running under gdb.
1685
1686 [hey async!!]
1687
1688 --
1689
1690 TODO FAQ
1691 ========
1692
1693 Frequently requested but not approved requests.
1694
1695 --
1696
1697 Eliminate unused argument warnings using ATTRIBUTE_UNUSED.
1698
1699 The benefits on this one are thought to be marginal - GDBs design
1700 means that unused parameters are very common. GCC 3.0 will also
1701 include the option -Wno-unused-parameter which means that ``-Wall
1702 -Wno-unused-parameters -Werror'' can be specified.
1703
1704 --
1705
1706
1707
1708 Legacy Wish List
1709 ================
1710
1711 This list is not up to date, and opinions vary about the importance or
1712 even desirability of some of the items. If you do fix something, it
1713 always pays to check the below.
1714
1715 --
1716
1717 @c This does not work (yet if ever). FIXME.
1718 @c @item --parse=@var{lang} @dots{}
1719 @c Configure the @value{GDBN} expression parser to parse the listed languages.
1720 @c @samp{all} configures @value{GDBN} for all supported languages. To get a
1721 @c list of all supported languages, omit the argument. Without this
1722 @c option, @value{GDBN} is configured to parse all supported languages.
1723
1724 --
1725
1726 START_INFERIOR_TRAPS_EXPECTED need never be defined to 2, since that
1727 is its default value. Clean this up.
1728
1729 --
1730
1731 It should be possible to use symbols from shared libraries before we know
1732 exactly where the libraries will be loaded. E.g. "b perror" before running
1733 the program. This could maybe be done as an extension of the "breakpoint
1734 re-evaluation" after new symbols are loaded.
1735
1736 --
1737
1738 Make single_step() insert and remove breakpoints in one operation.
1739
1740 [If this is talking about having single_step() insert the breakpoints,
1741 run the target then pull the breakpoints then it is wrong. The
1742 function has to return as control has to eventually be passed back to
1743 the main event loop.]
1744
1745 --
1746
1747 Speed up single stepping by avoiding extraneous ptrace calls.
1748
1749 --
1750
1751 Speed up single stepping by not inserting and removing breakpoints
1752 each time the inferior starts and stops.
1753
1754 Breakpoints should not be inserted and deleted all the time. Only the
1755 one(s) there should be removed when we have to step over one. Support
1756 breakpoints that don't have to be removed to step over them.
1757
1758 [this has resulted in numerous debates. The issue isn't clear cut]
1759
1760 --
1761
1762 Provide "voodoo" debugging of core files. This creates a zombie
1763 process as a child of the debugger, and loads it up with the data,
1764 stack, and regs of the core file. This allows you to call functions
1765 in the executable, to manipulate the data in the core file.
1766
1767 [you wish]
1768
1769 --
1770
1771 GDB reopens the source file on every line, as you "next" through it.
1772
1773 [still true? I've a memory of this being fixed]
1774
1775 --
1776
1777 Perhaps "i source" should take an argument like that of "list".
1778
1779 --
1780
1781 Remove "at 0xnnnn" from the "b foo" response, if `print address off' and if
1782 it matches the source line indicated.
1783
1784 --
1785
1786 The prompt at end of screen should accept space as well as CR.
1787
1788 --
1789
1790 Backtrace should point out what the currently selected frame is, in
1791 its display, perhaps showing "@3 foo (bar, ...)" or ">3 foo (bar,
1792 ...)" rather than "#3 foo (bar, ...)".
1793
1794 --
1795
1796 "i program" should work for core files, and display more info, like what
1797 actually caused it to die.
1798
1799 --
1800
1801 "x/10i" should shorten the long name, if any, on subsequent lines.
1802
1803 --
1804
1805 "next" over a function that longjumps, never stops until next time you happen
1806 to get to that spot by accident. E.g. "n" over execute_command which has
1807 an error.
1808
1809 --
1810
1811 "set zeroprint off", don't bother printing members of structs which
1812 are entirely zero. Useful for those big structs with few useful
1813 members.
1814
1815 --
1816
1817 GDB does four ioctl's for every command, probably switching terminal modes
1818 to/from inferior or for readline or something.
1819
1820 --
1821
1822 terminal_ours versus terminal_inferior: cache state. Switch should be a noop
1823 if the state is the same, too.
1824
1825 --
1826
1827 "i frame" shows wrong "arglist at" location, doesn't show where the args
1828 should be found, only their actual values.
1829
1830 --
1831
1832 There should be a way for "set" commands to validate the new setting
1833 before it takes effect.
1834
1835 --
1836
1837 "ena d" is ambiguous, why? "ena delete" seems to think it is a command!
1838
1839 --
1840
1841 i line VAR produces "Line number not known for symbol ``var''.". I
1842 thought we were stashing that info now!
1843
1844 --
1845
1846 We should be able to write to random files at hex offsets like adb.
1847
1848 --
1849
1850 [elena - delete this]
1851
1852 Handle add_file with separate text, data, and bss addresses. Maybe
1853 handle separate addresses for each segment in the object file?
1854
1855 --
1856
1857 [Jimb/Elena delete this one]
1858
1859 Handle free_named_symtab to cope with multiply-loaded object files
1860 in a dynamic linking environment. Should remember the last copy loaded,
1861 but not get too snowed if it finds references to the older copy.
1862
1863 --
1864
1865 [elena delete this also]
1866
1867 Remove all references to:
1868 text_offset
1869 data_offset
1870 text_data_start
1871 text_end
1872 exec_data_offset
1873 ...
1874 now that we have BFD. All remaining are in machine dependent files.
1875
1876 --
1877
1878 Re-organize help categories into things that tend to fit on a screen
1879 and hang together.
1880
1881 --
1882
1883 Add in commands like ADB's for searching for patterns, etc. We should
1884 be able to examine and patch raw unsymboled binaries as well in gdb as
1885 we can in adb. (E.g. increase the timeout in /bin/login without source).
1886
1887 [actually, add ADB interface :-]
1888
1889 --
1890
1891 When doing "step" or "next", if a few lines of source are skipped between
1892 the previous line and the current one, print those lines, not just the
1893 last line of a multiline statement.
1894
1895 --
1896
1897 Handling of "&" address-of operator needs some serious overhaul
1898 for ANSI C and consistency on arrays and functions.
1899 For "float point[15];":
1900 ptype &point[4] ==> Attempt to take address of non-lvalue.
1901 For "char *malloc();":
1902 ptype malloc ==> "char *()"; should be same as
1903 ptype &malloc ==> "char *(*)()"
1904 call printf ("%x\n", malloc) ==> weird value, should be same as
1905 call printf ("%x\n", &malloc) ==> correct value
1906
1907 --
1908
1909 Fix dbxread.c symbol reading in the presence of interrupts. It
1910 currently leaves a cleanup to blow away the entire symbol table when a
1911 QUIT occurs. (What's wrong with that? -kingdon, 28 Oct 1993).
1912
1913 [I suspect that the grype was that, on a slow system, you might want
1914 to cntrl-c and get just half the symbols and then load the rest later
1915 - scary to be honest]
1916
1917 --
1918
1919 Mipsread.c reads include files depth-first, because the dependencies
1920 in the psymtabs are way too inclusive (it seems to me). Figure out what
1921 really depends on what, to avoid recursing 20 or 30 times while reading
1922 real symtabs.
1923
1924 --
1925
1926 value_add() should be subtracting the lower bound of arrays, if known,
1927 and possibly checking against the upper bound for error reporting.
1928
1929 --
1930
1931 When listing source lines, check for a preceding \n, to verify that
1932 the file hasn't changed out from under us.
1933
1934 [fixed by some other means I think. That hack wouldn't actually work
1935 reliably - the file might move such that another \n appears. ]
1936
1937 --
1938
1939 Get all the remote systems (where the protocol allows it) to be able to
1940 stop the remote system when the GDB user types ^C (like remote.c
1941 does). For ebmon, use ^Ak.
1942
1943 --
1944
1945 Possible feature: A version of the "disassemble" command which shows
1946 both source and assembly code ("set symbol-filename on" is a partial
1947 solution).
1948
1949 [has this been done? It was certainly done for MI and GDBtk]
1950
1951 --
1952
1953 investigate "x/s 0" (right now stops early) (I think maybe GDB is
1954 using a 0 address for bad purposes internally).
1955
1956 --
1957
1958 Make "info path" and path_command work again (but independent of the
1959 environment either of gdb or that we'll pass to the inferior).
1960
1961 --
1962
1963 Make GDB understand the GCC feature for putting octal constants in
1964 enums. Make it so overflow on an enum constant does not error_type
1965 the whole type. Allow arbitrarily large enums with type attributes.
1966 Put all this stuff in the testsuite.
1967
1968 --
1969
1970 Make TYPE_CODE_ERROR with a non-zero TYPE_LENGTH more useful (print
1971 the value in hex; process type attributes). Add this to the
1972 testsuite. This way future compilers can add new types and old
1973 versions of GDB can do something halfway reasonable.
1974
1975 --
1976
1977 Fix mdebugread.c:parse_type to do fundamental types right (see
1978 rs6000_builtin_type in stabsread.c for what "right" is--the point is
1979 that the debug format fixes the sizes of these things and it shouldn't
1980 depend on stuff like TARGET_PTR_BIT and so on. For mdebug, there seem
1981 to be separate bt* codes for 64 bit and 32 bit things, and GDB should
1982 be aware of that). Also use a switch statement for clarity and speed.
1983
1984 --
1985
1986 Investigate adding symbols in target_load--some targets do, some
1987 don't.
1988
1989 --
1990
1991 Put dirname in psymtabs and change lookup*symtab to use dirname (so
1992 /foo/bar.c works whether compiled by cc /foo/bar.c, or cd /foo; cc
1993 bar.c).
1994
1995 --
1996
1997 Merge xcoffread.c and coffread.c. Use breakpoint_re_set instead of
1998 fixup_breakpoints.
1999
2000 --
2001
2002 Make a watchpoint which contains a function call an error (it is
2003 broken now, making it work is probably not worth the effort).
2004
2005 --
2006
2007 New test case based on weird.exp but in which type numbers are not
2008 renumbered (thus multiply defining a type). This currently causes an
2009 infinite loop on "p v_comb".
2010
2011 --
2012
2013 [Hey! Hint Hint Delete Delete!!!]
2014
2015 Fix 386 floating point so that floating point registers are real
2016 registers (but code can deal at run-time if they are missing, like
2017 mips and 68k). This would clean up "info float" and related stuff.
2018
2019 --
2020
2021 gcc -g -c enummask.c then gdb enummask.o, then "p v". GDB complains
2022 about not being able to access memory location 0.
2023
2024 -------------------- enummask.c
2025 enum mask
2026 {
2027 ANIMAL = 0,
2028 VEGETABLE = 1,
2029 MINERAL = 2,
2030 BASIC_CATEGORY = 3,
2031
2032 WHITE = 0,
2033 BLUE = 4,
2034 GREEN = 8,
2035 BLACK = 0xc,
2036 COLOR = 0xc,
2037
2038 ALIVE = 0x10,
2039
2040 LARGE = 0x20
2041 } v;
2042
2043 --
2044
2045 If try to modify value in file with "set write off" should give
2046 appropriate error not "cannot access memory at address 0x65e0".
2047
2048 --
2049
2050 Allow core file without exec file on RS/6000.
2051
2052 --
2053
2054 Make sure "shell" with no arguments works right on DOS.
2055
2056 --
2057
2058 Make gdb.ini (as well as .gdbinit) be checked on all platforms, so
2059 the same directory can be NFS-mounted on unix or DOS, and work the
2060 same way.
2061
2062 --
2063
2064 [Is this another delete???]
2065
2066 Get SECT_OFF_TEXT stuff out of objfile_relocate (might be needed to
2067 get RS/6000 to work right, might not be immediately relevant).
2068
2069 --
2070
2071 Work out some kind of way to allow running the inferior to be done as
2072 a sub-execution of, eg. breakpoint command lists. Currently running
2073 the inferior interupts any command list execution. This would require
2074 some rewriting of wait_for_inferior & friends, and hence should
2075 probably be done in concert with the above.
2076
2077 --
2078
2079 Add function arguments to gdb user defined functions.
2080
2081 --
2082
2083 Add convenience variables that refer to exec file, symbol file,
2084 selected frame source file, selected frame function, selected frame
2085 line number, etc.
2086
2087 --
2088
2089 Modify the handling of symbols grouped through BINCL/EINCL stabs to
2090 allocate a partial symtab for each BINCL/EINCL grouping. This will
2091 seriously decrease the size of inter-psymtab dependencies and hence
2092 lessen the amount that needs to be read in when a new source file is
2093 accessed.
2094
2095 --
2096
2097 Add a command for searching memory, a la adb. It specifies size,
2098 mask, value, start address. ADB searches until it finds it or hits
2099 an error (or is interrupted).
2100
2101 --
2102
2103 Remove the range and type checking code and documentation, if not
2104 going to implement.
2105
2106 # Local Variables:
2107 # mode: text
2108 # End:
This page took 0.070933 seconds and 4 git commands to generate.