| OLD | NEW |
| 1 \input texinfo @c -*- texinfo -*- | 1 \input texinfo @c -*- texinfo -*- |
| 2 @setfilename gdbint.info | 2 @setfilename gdbint.info |
| 3 @include gdb-cfg.texi | 3 @include gdb-cfg.texi |
| 4 @settitle @value{GDBN} Internals | 4 @settitle @value{GDBN} Internals |
| 5 @setchapternewpage off | 5 @setchapternewpage off |
| 6 @dircategory Software development | 6 @dircategory Software development |
| 7 @direntry | 7 @direntry |
| 8 * Gdb-Internals: (gdbint). The GNU debugger's internals. | 8 * Gdb-Internals: (gdbint). The GNU debugger's internals. |
| 9 @end direntry | 9 @end direntry |
| 10 | 10 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 Texts. A copy of the license is included in the section entitled ``GNU | 21 Texts. A copy of the license is included in the section entitled ``GNU |
| 22 Free Documentation License''. | 22 Free Documentation License''. |
| 23 @end copying | 23 @end copying |
| 24 | 24 |
| 25 @ifnottex | 25 @ifnottex |
| 26 This file documents the internals of the GNU debugger @value{GDBN}. | 26 This file documents the internals of the GNU debugger @value{GDBN}. |
| 27 | 27 |
| 28 @insertcopying | 28 @insertcopying |
| 29 @end ifnottex | 29 @end ifnottex |
| 30 | 30 |
| 31 | 31 @syncodeindex vr fn |
| 32 @syncodeindex fn cp | |
| 33 @syncodeindex vr cp | |
| 34 | 32 |
| 35 @titlepage | 33 @titlepage |
| 36 @title @value{GDBN} Internals | 34 @title @value{GDBN} Internals |
| 37 @subtitle{A guide to the internals of the GNU debugger} | 35 @subtitle A guide to the internals of the GNU debugger |
| 38 @author John Gilmore | 36 @author John Gilmore |
| 39 @author Cygnus Solutions | 37 @author Cygnus Solutions |
| 40 @author Second Edition: | 38 @author Second Edition: |
| 41 @author Stan Shebs | 39 @author Stan Shebs |
| 42 @author Cygnus Solutions | 40 @author Cygnus Solutions |
| 43 @page | 41 @page |
| 44 @tex | 42 @tex |
| 45 \def\$#1${{#1}} % Kluge: collect RCS revision info without $...$ | 43 \def\$#1${{#1}} % Kluge: collect RCS revision info without $...$ |
| 46 \xdef\manvers{\$Revision$} % For use in headers, footers too | 44 \xdef\manvers{\$Revision$} % For use in headers, footers too |
| 47 {\parskip=0pt | 45 {\parskip=0pt |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 * Misc Guidelines:: | 84 * Misc Guidelines:: |
| 87 * Porting GDB:: | 85 * Porting GDB:: |
| 88 * Versions and Branches:: | 86 * Versions and Branches:: |
| 89 * Start of New Year Procedure:: | 87 * Start of New Year Procedure:: |
| 90 * Releasing GDB:: | 88 * Releasing GDB:: |
| 91 * Testsuite:: | 89 * Testsuite:: |
| 92 * Hints:: | 90 * Hints:: |
| 93 | 91 |
| 94 * GDB Observers:: @value{GDBN} Currently available observers | 92 * GDB Observers:: @value{GDBN} Currently available observers |
| 95 * GNU Free Documentation License:: The license for this documentation | 93 * GNU Free Documentation License:: The license for this documentation |
| 96 * Index:: | 94 * Concept Index:: |
| 95 * Function and Variable Index:: |
| 97 @end menu | 96 @end menu |
| 98 | 97 |
| 99 @node Summary | 98 @node Summary |
| 100 @chapter Summary | 99 @chapter Summary |
| 101 | 100 |
| 102 @menu | 101 @menu |
| 103 * Requirements:: | 102 * Requirements:: |
| 104 * Contributors:: | 103 * Contributors:: |
| 105 @end menu | 104 @end menu |
| 106 | 105 |
| (...skipping 4802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4909 @item int gdbarch_deprecated_fp_regnum (@var{gdbarch}) | 4908 @item int gdbarch_deprecated_fp_regnum (@var{gdbarch}) |
| 4910 @findex gdbarch_deprecated_fp_regnum | 4909 @findex gdbarch_deprecated_fp_regnum |
| 4911 If the frame pointer is in a register, use this function to return the | 4910 If the frame pointer is in a register, use this function to return the |
| 4912 number of that register. | 4911 number of that register. |
| 4913 | 4912 |
| 4914 @item int gdbarch_stab_reg_to_regnum (@var{gdbarch}, @var{stab_regnr}) | 4913 @item int gdbarch_stab_reg_to_regnum (@var{gdbarch}, @var{stab_regnr}) |
| 4915 @findex gdbarch_stab_reg_to_regnum | 4914 @findex gdbarch_stab_reg_to_regnum |
| 4916 Use this function to convert stab register @var{stab_regnr} into @value{GDBN} | 4915 Use this function to convert stab register @var{stab_regnr} into @value{GDBN} |
| 4917 regnum. If not defined, no conversion will be done. | 4916 regnum. If not defined, no conversion will be done. |
| 4918 | 4917 |
| 4919 @item SYMBOL_RELOADING_DEFAULT | |
| 4920 @findex SYMBOL_RELOADING_DEFAULT | |
| 4921 The default value of the ``symbol-reloading'' variable. (Never defined in | |
| 4922 current sources.) | |
| 4923 | |
| 4924 @item TARGET_CHAR_BIT | 4918 @item TARGET_CHAR_BIT |
| 4925 @findex TARGET_CHAR_BIT | 4919 @findex TARGET_CHAR_BIT |
| 4926 Number of bits in a char; defaults to 8. | 4920 Number of bits in a char; defaults to 8. |
| 4927 | 4921 |
| 4928 @item int gdbarch_char_signed (@var{gdbarch}) | 4922 @item int gdbarch_char_signed (@var{gdbarch}) |
| 4929 @findex gdbarch_char_signed | 4923 @findex gdbarch_char_signed |
| 4930 Non-zero if @code{char} is normally signed on this architecture; zero if | 4924 Non-zero if @code{char} is normally signed on this architecture; zero if |
| 4931 it should be unsigned. | 4925 it should be unsigned. |
| 4932 | 4926 |
| 4933 The ISO C standard requires the compiler to treat @code{char} as | 4927 The ISO C standard requires the compiler to treat @code{char} as |
| (...skipping 908 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5842 @tab @code{- x} | 5836 @tab @code{- x} |
| 5843 @tab (unary minus) | 5837 @tab (unary minus) |
| 5844 @item @code{(foo) x} | 5838 @item @code{(foo) x} |
| 5845 @tab @code{(foo)x} | 5839 @tab @code{(foo)x} |
| 5846 @tab (cast) | 5840 @tab (cast) |
| 5847 @item @code{*x} | 5841 @item @code{*x} |
| 5848 @tab @code{* x} | 5842 @tab @code{* x} |
| 5849 @tab (pointer dereference) | 5843 @tab (pointer dereference) |
| 5850 @end multitable | 5844 @end multitable |
| 5851 | 5845 |
| 5846 Any two or more lines in code should be wrapped in braces, even if |
| 5847 they are comments, as they look like separate statements: |
| 5848 |
| 5849 @smallexample |
| 5850 if (i) |
| 5851 @{ |
| 5852 /* Return success. */ |
| 5853 return 0; |
| 5854 @} |
| 5855 @end smallexample |
| 5856 |
| 5857 @noindent |
| 5858 and not: |
| 5859 |
| 5860 @smallexample |
| 5861 if (i) |
| 5862 /* Return success. */ |
| 5863 return 0; |
| 5864 @end smallexample |
| 5865 |
| 5852 @subsection Comments | 5866 @subsection Comments |
| 5853 | 5867 |
| 5854 @cindex comment formatting | 5868 @cindex comment formatting |
| 5855 The standard GNU requirements on comments must be followed strictly. | 5869 The standard GNU requirements on comments must be followed strictly. |
| 5856 | 5870 |
| 5857 Block comments must appear in the following form, with no @code{/*}- or | 5871 Block comments must appear in the following form, with no @code{/*}- or |
| 5858 @code{*/}-only lines, and no leading @code{*}: | 5872 @code{*/}-only lines, and no leading @code{*}: |
| 5859 | 5873 |
| 5860 @smallexample | 5874 @smallexample |
| 5861 /* Wait for control to return from inferior to debugger. If inferior | 5875 /* Wait for control to return from inferior to debugger. If inferior |
| (...skipping 929 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6791 @itemize @bullet | 6805 @itemize @bullet |
| 6792 @item | 6806 @item |
| 6793 file @file{top.c}, function @code{print_gdb_version} | 6807 file @file{top.c}, function @code{print_gdb_version} |
| 6794 @item | 6808 @item |
| 6795 file @file{gdbserver/server.c}, function @code{gdbserver_version} | 6809 file @file{gdbserver/server.c}, function @code{gdbserver_version} |
| 6796 @item | 6810 @item |
| 6797 file @file{gdbserver/gdbreplay.c}, function @code{gdbreplay_version} | 6811 file @file{gdbserver/gdbreplay.c}, function @code{gdbreplay_version} |
| 6798 @end itemize | 6812 @end itemize |
| 6799 | 6813 |
| 6800 @item | 6814 @item |
| 6801 Run the @file{copyright.sh} script to add the new year in the copyright | 6815 Run the @file{copyright.py} Python script to add the new year in the copyright |
| 6802 notices of most source files. This script requires Emacs 22 or later to | 6816 notices of most source files. This script has been tested with Python |
| 6803 be installed. | 6817 2.6 and 2.7. |
| 6804 | |
| 6805 @item | |
| 6806 The new year also needs to be added manually in all other files that | |
| 6807 are not already taken care of by the @file{copyright.sh} script: | |
| 6808 @itemize @bullet | |
| 6809 @item | |
| 6810 @file{*.s} | |
| 6811 @item | |
| 6812 @file{*.f} | |
| 6813 @item | |
| 6814 @file{*.f90} | |
| 6815 @item | |
| 6816 @file{*.igen} | |
| 6817 @item | |
| 6818 @file{*.ac} | |
| 6819 @item | |
| 6820 @file{*.texi} | |
| 6821 @item | |
| 6822 @file{*.texinfo} | |
| 6823 @item | |
| 6824 @file{*.tex} | |
| 6825 @item | |
| 6826 @file{*.defs} | |
| 6827 @item | |
| 6828 @file{*.1} | |
| 6829 @end itemize | |
| 6830 | 6818 |
| 6831 @end itemize | 6819 @end itemize |
| 6832 | 6820 |
| 6833 @node Releasing GDB | 6821 @node Releasing GDB |
| 6834 | 6822 |
| 6835 @chapter Releasing @value{GDBN} | 6823 @chapter Releasing @value{GDBN} |
| 6836 @cindex making a new release of gdb | 6824 @cindex making a new release of gdb |
| 6837 | 6825 |
| 6838 @section Branch Commit Policy | 6826 @section Branch Commit Policy |
| 6839 | 6827 |
| (...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7682 | 7670 |
| 7683 @smallexample | 7671 @smallexample |
| 7684 make check RUNTESTFLAGS="GDB=/usr/bin/gdb GDBSERVER=/usr/bin/gdbserver" | 7672 make check RUNTESTFLAGS="GDB=/usr/bin/gdb GDBSERVER=/usr/bin/gdbserver" |
| 7685 @end smallexample | 7673 @end smallexample |
| 7686 | 7674 |
| 7687 @item @code{INTERNAL_GDBFLAGS} | 7675 @item @code{INTERNAL_GDBFLAGS} |
| 7688 | 7676 |
| 7689 When running the testsuite normally one doesn't want whatever is in | 7677 When running the testsuite normally one doesn't want whatever is in |
| 7690 @file{~/.gdbinit} to interfere with the tests, therefore the test harness | 7678 @file{~/.gdbinit} to interfere with the tests, therefore the test harness |
| 7691 passes @option{-nx} to @value{GDBN}. One also doesn't want any windowed | 7679 passes @option{-nx} to @value{GDBN}. One also doesn't want any windowed |
| 7692 version of @value{GDBN}, e.g., @command{gdbtui}, to run. | 7680 version of @value{GDBN}, e.g., @samp{gdb -tui}, to run. |
| 7693 This is achieved via @code{INTERNAL_GDBFLAGS}. | 7681 This is achieved via @code{INTERNAL_GDBFLAGS}. |
| 7694 | 7682 |
| 7695 @smallexample | 7683 @smallexample |
| 7696 set INTERNAL_GDBFLAGS "-nw -nx" | 7684 set INTERNAL_GDBFLAGS "-nw -nx" |
| 7697 @end smallexample | 7685 @end smallexample |
| 7698 | 7686 |
| 7699 This is all well and good, except when testing an installed @value{GDBN} | 7687 This is all well and good, except when testing an installed @value{GDBN} |
| 7700 that has been configured with @option{--with-system-gdbinit}. Here one | 7688 that has been configured with @option{--with-system-gdbinit}. Here one |
| 7701 does not want @file{~/.gdbinit} loaded but one may want the system | 7689 does not want @file{~/.gdbinit} loaded but one may want the system |
| 7702 @file{.gdbinit} file loaded. This can be achieved by pointing @code{$HOME} | 7690 @file{.gdbinit} file loaded. This can be achieved by pointing @code{$HOME} |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7838 On some operating systems (e.g.@: OpenBSD) the TTY layer expands tabs to | 7826 On some operating systems (e.g.@: OpenBSD) the TTY layer expands tabs to |
| 7839 spaces, so by the time @value{GDBN}'s output reaches expect the tab is gone. | 7827 spaces, so by the time @value{GDBN}'s output reaches expect the tab is gone. |
| 7840 | 7828 |
| 7841 The source language programs do @emph{not} need to be in a consistent | 7829 The source language programs do @emph{not} need to be in a consistent |
| 7842 style. Since @value{GDBN} is used to debug programs written in many different | 7830 style. Since @value{GDBN} is used to debug programs written in many different |
| 7843 styles, it's worth having a mix of styles in the testsuite; for | 7831 styles, it's worth having a mix of styles in the testsuite; for |
| 7844 instance, some @value{GDBN} bugs involving the display of source lines would | 7832 instance, some @value{GDBN} bugs involving the display of source lines would |
| 7845 never manifest themselves if the programs used GNU coding style | 7833 never manifest themselves if the programs used GNU coding style |
| 7846 uniformly. | 7834 uniformly. |
| 7847 | 7835 |
| 7836 Some testcase results need more detailed explanation: |
| 7837 |
| 7838 @table @code |
| 7839 @item KFAIL |
| 7840 Known problem of @value{GDBN} itself. You must specify the @value{GDBN} bug |
| 7841 report number like in these sample tests: |
| 7842 @smallexample |
| 7843 kfail "gdb/13392" "continue to marker 2" |
| 7844 @end smallexample |
| 7845 or |
| 7846 @smallexample |
| 7847 setup_kfail gdb/13392 "*-*-*" |
| 7848 kfail "continue to marker 2" |
| 7849 @end smallexample |
| 7850 |
| 7851 @item XFAIL |
| 7852 Known problem of environment. This typically includes @value{NGCC} but it |
| 7853 includes also many other system components which cannot be fixed in the |
| 7854 @value{GDBN} project. Sample test with sanity check not knowing the specific |
| 7855 cause of the problem: |
| 7856 @smallexample |
| 7857 # On x86_64 it is commonly about 4MB. |
| 7858 if @{$stub_size > 25000000@} @{ |
| 7859 xfail "stub size $stub_size is too large" |
| 7860 return |
| 7861 @} |
| 7862 @end smallexample |
| 7863 |
| 7864 You should provide bug report number for the failing component of the |
| 7865 environment, if such bug report is available: |
| 7866 @smallexample |
| 7867 if @{[test_compiler_info @{gcc-[0-3]-*@}] |
| 7868 || [test_compiler_info @{gcc-4-[0-5]-*@}]@} @{ |
| 7869 setup_xfail "gcc/46955" *-*-* |
| 7870 @} |
| 7871 gdb_test "python print ttype.template_argument(2)" "&C::c" |
| 7872 @end smallexample |
| 7873 @end table |
| 7874 |
| 7875 @section Board settings |
| 7876 In @value{GDBN} testsuite, the tests can be configured or customized in the boar
d |
| 7877 file by means of @dfn{Board Settings}. Each setting should be consulted by |
| 7878 test cases that depend on the corresponding feature. |
| 7879 |
| 7880 Here are the supported board settings: |
| 7881 |
| 7882 @table @code |
| 7883 |
| 7884 @item gdb,cannot_call_functions |
| 7885 The board does not support inferior call, that is, invoking inferior functions |
| 7886 in @value{GDBN}. |
| 7887 @item gdb,can_reverse |
| 7888 The board supports reverse execution. |
| 7889 @item gdb,no_hardware_watchpoints |
| 7890 The board does not support hardware watchpoints. |
| 7891 @item gdb,nofileio |
| 7892 @value{GDBN} is unable to intercept target file operations in remote and perform |
| 7893 them on the host. |
| 7894 @item gdb,noinferiorio |
| 7895 The board is unable to provide I/O capability to the inferior. |
| 7896 @c @item gdb,noresults |
| 7897 @c NEED DOCUMENT. |
| 7898 @item gdb,nosignals |
| 7899 The board does not support signals. |
| 7900 @item gdb,skip_huge_test |
| 7901 Skip time-consuming tests on the board with slow connection. |
| 7902 @item gdb,skip_float_tests |
| 7903 Skip tests related to float points on target board. |
| 7904 @item gdb,use_precord |
| 7905 The board supports process record. |
| 7906 @item gdb_server_prog |
| 7907 The location of GDBserver. If GDBserver somewhere other than its default |
| 7908 location is used in test, specify the location of GDBserver in this variable. |
| 7909 The location is a file name of GDBserver that can be either absolute or |
| 7910 relative to testsuite subdirectory in build directory. |
| 7911 @item in_proc_agent |
| 7912 The location of in-process agent. If in-process agent other than its default |
| 7913 location is used in test, specify the location of in-process agent in |
| 7914 this variable. The location is a file name of in-process agent that can be |
| 7915 either absolute or relative to testsuite subdirectory in build directory. |
| 7916 @item noargs |
| 7917 @value{GDBN} does not support argument passing for inferior. |
| 7918 @item no_long_long |
| 7919 The board does not support type @code{long long}. |
| 7920 @c @item use_cygmon |
| 7921 @c NEED DOCUMENT. |
| 7922 @item use_gdb_stub |
| 7923 The tests are running with gdb stub. |
| 7924 @end table |
| 7925 |
| 7848 @node Hints | 7926 @node Hints |
| 7849 | 7927 |
| 7850 @chapter Hints | 7928 @chapter Hints |
| 7851 | 7929 |
| 7852 Check the @file{README} file, it often has useful information that does not | 7930 Check the @file{README} file, it often has useful information that does not |
| 7853 appear anywhere else in the directory. | 7931 appear anywhere else in the directory. |
| 7854 | 7932 |
| 7855 @menu | 7933 @menu |
| 7856 * Getting Started:: Getting started working on @value{GDBN} | 7934 * Getting Started:: Getting started working on @value{GDBN} |
| 7857 * Debugging GDB:: Debugging @value{GDBN} with itself | 7935 * Debugging GDB:: Debugging @value{GDBN} with itself |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7945 @section Debugging @value{GDBN} with itself | 8023 @section Debugging @value{GDBN} with itself |
| 7946 @cindex debugging @value{GDBN} | 8024 @cindex debugging @value{GDBN} |
| 7947 | 8025 |
| 7948 If @value{GDBN} is limping on your machine, this is the preferred way to get it | 8026 If @value{GDBN} is limping on your machine, this is the preferred way to get it |
| 7949 fully functional. Be warned that in some ancient Unix systems, like | 8027 fully functional. Be warned that in some ancient Unix systems, like |
| 7950 Ultrix 4.2, a program can't be running in one process while it is being | 8028 Ultrix 4.2, a program can't be running in one process while it is being |
| 7951 debugged in another. Rather than typing the command @kbd{@w{./gdb | 8029 debugged in another. Rather than typing the command @kbd{@w{./gdb |
| 7952 ./gdb}}, which works on Suns and such, you can copy @file{gdb} to | 8030 ./gdb}}, which works on Suns and such, you can copy @file{gdb} to |
| 7953 @file{gdb2} and then type @kbd{@w{./gdb ./gdb2}}. | 8031 @file{gdb2} and then type @kbd{@w{./gdb ./gdb2}}. |
| 7954 | 8032 |
| 7955 When you run @value{GDBN} in the @value{GDBN} source directory, it will read a | 8033 When you run @value{GDBN} in the @value{GDBN} source directory, it will read |
| 7956 @file{.gdbinit} file that sets up some simple things to make debugging | 8034 @file{gdb-gdb.gdb} file (plus possibly @file{gdb-gdb.py} file) that sets up |
| 7957 gdb easier. The @code{info} command, when executed without a subcommand | 8035 some simple things to make debugging gdb easier. The @code{info} command, when |
| 7958 in a @value{GDBN} being debugged by gdb, will pop you back up to the top level | 8036 executed without a subcommand in a @value{GDBN} being debugged by gdb, will pop |
| 7959 gdb. See @file{.gdbinit} for details. | 8037 you back up to the top level gdb. See @file{gdb-gdb.gdb} for details. |
| 7960 | 8038 |
| 7961 If you use emacs, you will probably want to do a @code{make TAGS} after | 8039 If you use emacs, you will probably want to do a @code{make TAGS} after |
| 7962 you configure your distribution; this will put the machine dependent | 8040 you configure your distribution; this will put the machine dependent |
| 7963 routines for your local machine where they will be accessed first by | 8041 routines for your local machine where they will be accessed first by |
| 7964 @kbd{M-.} | 8042 @kbd{M-.} |
| 7965 | 8043 |
| 7966 Also, make sure that you've either compiled @value{GDBN} with your local cc, or | 8044 Also, make sure that you've either compiled @value{GDBN} with your local cc, or |
| 7967 have run @code{fixincludes} if you are compiling with gcc. | 8045 have run @code{fixincludes} if you are compiling with gcc. |
| 7968 | 8046 |
| 7969 @section Submitting Patches | 8047 @section Submitting Patches |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8046 supported and then switches the current architecture to each of those to get | 8124 supported and then switches the current architecture to each of those to get |
| 8047 information about the architecture. The test results are stored in log files | 8125 information about the architecture. The test results are stored in log files |
| 8048 in the directory the script was called from. | 8126 in the directory the script was called from. |
| 8049 | 8127 |
| 8050 @include observer.texi | 8128 @include observer.texi |
| 8051 | 8129 |
| 8052 @node GNU Free Documentation License | 8130 @node GNU Free Documentation License |
| 8053 @appendix GNU Free Documentation License | 8131 @appendix GNU Free Documentation License |
| 8054 @include fdl.texi | 8132 @include fdl.texi |
| 8055 | 8133 |
| 8056 @node Index | 8134 @node Concept Index |
| 8057 @unnumbered Index | 8135 @unnumbered Concept Index |
| 8058 | 8136 |
| 8059 @printindex cp | 8137 @printindex cp |
| 8060 | 8138 |
| 8139 @node Function and Variable Index |
| 8140 @unnumbered Function and Variable Index |
| 8141 |
| 8142 @printindex fn |
| 8143 |
| 8061 @bye | 8144 @bye |
| OLD | NEW |