* doc/gdb.texinfo
[deliverable/binutils-gdb.git] / gdb / README
CommitLineData
846058ed
JG
1 README for gdb-4.0 release
2 John Gilmore 23 Aug 91
c45c19f8 3
846058ed 4This is GDB, the GNU source-level debugger, presently running under un*x.
c45c19f8
JG
5A summary of features new since gdb-3.5 is in the file `WHATS.NEW'.
6
bd5635a1 7
846058ed
JG
8Unpacking and Installation -- quick overview
9==========================
bd5635a1 10
c45c19f8
JG
11This release moves the generic GNU include files, the BFD ("binary file
12description") library, the getopt routines, obstacks, and the readline
846058ed
JG
13library into the parent directory of the gdb source files. The idea is
14that a variety of GNU tools can share a common copy of these things.
bd5635a1 15
846058ed
JG
16These generic files are packaged together with the directory containing
17the source code for GDB, for now. When you unpack the gdb-4.0.tar.Z
18file, you'll get a directory called `gdb-4.0', which contains:
bd5635a1 19
846058ed
JG
20 Makefile.in bfd/ configure.in libiberty/
21 README config.sub* gdb/ readline/
22 README.configure configure* include/ texinfo/
170d0c85 23
846058ed 24To build GDB, you can just do:
170d0c85 25
846058ed 26 cd gdb-4.0
170d0c85
RP
27 ./configure HOSTNAME
28 make
846058ed 29 cp gdb/gdb /usr/local/bin/gdb (or wherever you want)
170d0c85 30
846058ed 31This will configure and build all the libraries as well as GDB.
c45c19f8
JG
32If you get compiler warnings during this stage, see the `Reporting Bugs'
33section below; there are a few known problems.
361cc81a 34
c45c19f8 35GDB can be used as a cross-debugger, running on a machine of one type
846058ed
JG
36while debugging a program running on a machine of another type. See below.
37
38
39More Documentation
40==================
41
42 The GDB 4.0 release includes an already-formatted reference card, ready
43for printing on a PostScript printer, as `gdb-4.0/gdb/refcard.ps'. It
44uses the most common PostScript fonts: the Times family, Courier,
45and Symbol. If you have a PostScript printer you can print the
46reference card by just sending `refcard.ps' to the printer.
47
48 The release also includes the online Info version of the manual
49already formatted: the main Info file is `gdb-4.0/gdb/gdb.info', and
50it refers to subordinate files matching `gdb.info*' in the same
51directory.
52
53 If you want to make these Info files yourself from the GDB
54manual's source, you need the GNU `makeinfo' program. Once you have
55it, you can type
56
57 cd gdb-4.0/gdb
58 make gdb.info
59
60to make the Info file.
61
62 If you want to format and print copies of this manual, you need
63several things:
64
65 * TeX, the public domain typesetting program written by Donald
66 Knuth, must be installed on your system and available through
67 your execution path.
68
69 * `gdb-4.0/texinfo': TeX macros defining the GNU Documentation
70 Format.
71
72 * *A DVI output program.* TeX doesn't actually make marks on
73 paper; it produces output files called DVI files. If your
74 system has TeX installed, chances are it has a program for
75 printing out these files; one popular example is `dvips', which
76 can print DVI files on PostScript printers.
77
78Once you have these things, you can type
170d0c85 79
846058ed
JG
80 cd gdb-4.0/gdb
81 make gdb.dvi
170d0c85 82
846058ed
JG
83to format the text of this manual, and print it with the usual output
84method for TeX DVI files at your site.
bd5635a1 85
846058ed
JG
86 If you want to print the reference card, but don't have a PostScript
87printer, or want to print using Computer Modern fonts instead, you can
88still print it if you have TeX. Format the reference card by typing
bd5635a1 89
846058ed
JG
90 cd gdb-4.0/gdb
91 make refcard.dvi
c45c19f8 92
846058ed
JG
93The GDB reference card is designed to print in landscape mode on US
94"letter" size paper; that is, on a sheet 11 inches wide by 8.5
95inches high. You will need to specify this form of printing as an
96option to your DVI output program.
c45c19f8
JG
97
98
846058ed
JG
99Installing GDB
100==============
c45c19f8 101
846058ed
JG
102 GDB comes with a `configure' script that automates the process of
103preparing GDB for installation; you can then use `make' to build the
104`gdb' program.
c45c19f8 105
846058ed
JG
106 The gdb distribution includes all the source code you need for gdb
107in a single directory `gdb-4.0'. That directory in turn contains:
c45c19f8 108
846058ed
JG
109`gdb-4.0/configure'
110 Overall script for configuring GDB and all its supporting
111 libraries.
c45c19f8 112
846058ed 113`gdb-4.0/gdb'
c45c19f8
JG
114 the source specific to GDB itself
115
846058ed 116`gdb-4.0/bfd'
c45c19f8
JG
117 source for the Binary File Descriptor Library
118
846058ed 119`gdb-4.0/include'
c45c19f8
JG
120 GNU include files
121
846058ed 122`gdb-4.0/libiberty'
c45c19f8
JG
123 source for the `-liberty' free software library
124
846058ed 125`gdb-4.0/readline'
c45c19f8
JG
126 source for the GNU command-line interface
127
846058ed
JG
128Each of these directories has its own `configure' script, which are
129used by the overall `configure' script in `gdb-4.0'.
c45c19f8 130
846058ed
JG
131 It is most convenient to run `configure' from the `gdb-4.0'
132directory. The simplest way to configure and build GDB is the
133following:
c45c19f8 134
846058ed 135 cd gdb-4.0
c45c19f8
JG
136 ./configure HOST
137 make
138
846058ed
JG
139where HOST is something like `sun4' or `decstation', that identifies
140the platform where GDB will run. This builds the three libraries
141`bfd', `readline', and `libiberty', then `gdb' itself. The
142configured source files, and the binaries, are left in the
143corresponding source directories.
c45c19f8
JG
144
145 You can install `gdb' anywhere; it has no hardwired paths.
146However, you should make sure that the shell on your path (named by
147the `SHELL' environment variable) is publicly readable; some systems
148refuse to let GDB debug child processes whose programs are not
149readable, and GDB uses the shell to start your program.
150
846058ed
JG
151Configuration Subdirectories
152============================
153
154 If you want to run GDB versions for several host or target
155machines, you'll need a different gdb compiled for each combination
156of host and target. `configure' is designed to make this easy by
157allowing you to generate each configuration in a separate
158subdirectory. If your `make' program handles the `VPATH' feature
159(GNU `make' does), running `make' in each of these directories then
160builds the gdb program specified there.
161
162 `configure' creates these subdirectories for you when you
163simultaneously specify several configurations; but it's a good habit
164even for a single configuration. You can specify the use of
165subdirectories using the `+subdirs' option (abbreviated `+sub').
166For example, you can build GDB on a Sun 4 as follows:
167
168 cd gdb-4.0
169 ./configure +sub sun4
170 cd Host-sparc-sun-sunos4/Target-sparc-sun-sunos4
c45c19f8
JG
171 make
172
173 When `configure' uses subdirectories to build programs or
846058ed
JG
174libraries, it creates nested directories `Host-HOST/Target-TARGET'.
175(As you see in the example, the names used for HOST and TARGET may
176be expanded from your `configure' argument; *note Config Names::.).
177`configure' uses these two directory levels because GDB can be
178configured for cross-compiling: GDB can run on one machine (the
179host) while debugging programs that run on another machine (the
180target). You specify cross-debugging targets by giving the
181`+target=TARGET' option to `configure'. Specifying only hosts still
182gives you two levels of subdirectory for each host, with the same
183configuration suffix on both; that is, if you give any number of
184hosts but no targets, GDB will be configured for native debugging on
185each host. On the other hand, whenever you specify both hosts and
186targets on the same command line, `configure' creates all
187combinations of the hosts and targets you list.
c45c19f8
JG
188
189 When you run `make' to build a program or library, you must run it
190in a configured directory. If you made a single configuration,
191without subdirectories, run `make' in the source directory. If you
846058ed 192have `Host-HOST/Target-TARGET' subdirectories, run `make' in those
c45c19f8
JG
193subdirectories.
194
195 Each `configure' and `Makefile' under each source directory runs
846058ed
JG
196recursively, so that typing `make' in `gdb-4.0' (or in a
197`gdb-4.0/Host-HOST/Target-TARGET' subdirectory) builds all the
c45c19f8
JG
198required libraries, then GDB.
199
846058ed 200 If you run `configure' from a directory (such as `gdb-4.0') that
c45c19f8 201contains source directories for multiple libraries or programs,
846058ed 202`configure' creates the `Host-HOST/Target-TARGET' subdirectories in
c45c19f8
JG
203each library or program's source directory. For example, typing:
204
846058ed
JG
205 cd gdb-4.0
206 configure sun4 +target=vxworks960
c45c19f8
JG
207
208creates the following directories:
209
846058ed
JG
210 gdb-4.0/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks
211 gdb-4.0/bfd/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks
212 gdb-4.0/gdb/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks
213 gdb-4.0/libiberty/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks
214 gdb-4.0/readline/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks
215
216The `Makefile' in
217
218 gdb-4.0/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks
219
220will `cd' to the appropriate lower-level directories, for example:
c45c19f8 221
846058ed
JG
222 gdb-4.0/bfd/Host-sparc-sun-sunos4/Target-i960-wrs-vxworks
223
224building each in turn.
c45c19f8
JG
225
226 When you have multiple hosts or targets configured, you can run
227`make' on them in parallel (for example, if they are NFS-mounted on
228each of the hosts); they will not interfere with each other.
229
846058ed
JG
230Specifying Names for Hosts and Targets
231======================================
232
233 The specifications used for hosts and targets in the `configure'
234script are based on a three-part naming scheme, but some short
235predefined aliases are also supported. The full naming scheme
236encodes three pieces of information in the following pattern:
237
238 ARCHITECTURE-VENDOR-OS
239
240 For example, you can use the alias `sun4' as a HOST argument or in
241a `+target='TARGET option, but the full name of that configuration
242specifies that the architecture is `sparc', the vendor is `sun', and
243the operating system is `sunos4'.
244
245 The following table shows all the architectures, hosts, and OS
246prefixes that `configure' recognizes in GDB 4.0. Entries in the "OS
247prefix"
248column ending in a `*' may be followed by a release number.
249
250
251 ARCHITECTURE VENDOR OS prefix
252 ------------+-------------+-------------
253 | |
254 a29k | altos | aix*
255 alliant | aout | aout
256 arm | apollo | bout
257 c1 | att | bsd*
258 c2 | bout | coff
259 i386 | coff | ctix*
260 i860 | convergent | dynix*
261 i960 | convex | esix*
262 m68000 | dec | hpux*
263 m68k | encore | isc*
264 m88k | gould | mach*
265 mips | hp | newsos*
266 ns32k | ibm | nindy*
267 pyramid | intel | none
268 rs6000 | isi | osf*
269 rtpc | little | sco*
270 sparc | mips | sunos*
271 tahoe | motorola | sysv*
272 tron | ncr | ultrix*
273 vax | next | unos*
274 | none | v88r*
275 | sco | vms*
276 | sequent | vxworks*
277 | sgi |
278 | sony |
279 | sun |
280 | unicom |
281 | utek |
282 | wrs |
283
284 *Warning:* Many combinations of architecture, vendor, and OS are
285 untested.
286
287 The `configure' script accompanying GDB 4.0 does not provide any
288query facility to list all supported host and target names or
289aliases. `configure' calls the Bourne shell script `config.sub' to
290map abbreviations to full names; you can read the script, if you
291wish, or you can use it to test your guesses on abbreviations--for
292example:
293
294 % sh config.sub sun4
295 sparc-sun-sunos4
296 % sh config.sub sun3
297 m68k-sun-sunos4
298 % sh config.sub decstation
299 mips-dec-ultrix
300 % sh config.sub hp300bsd
301 m68k-hp-bsd
302 % sh config.sub i386v
303 i386-none-sysv
304 % sh config.sub i486v
305 *** No vendor: configuration `i486v' not recognized
306
307`configure' Options
308===================
c45c19f8
JG
309
310 Here is a summary of all the `configure' options and arguments
311that you might use for building GDB:
312
846058ed
JG
313 configure [+destdir=DIR] [+subdirs] [+norecur] [+rm]
314 [+target=TARGET...] HOST...
c45c19f8
JG
315
316You may introduce options with the character `-' rather than `+' if
846058ed 317you prefer; but you may abbreviate option names if you use `+'.
c45c19f8
JG
318
319`+destdir=DIR'
320 DIR is an installation directory *path prefix*. After you
321 configure with this option, `make install' will install GDB as
322 `DIR/bin/gdb', and the libraries in `DIR/lib'. If you specify
c45c19f8
JG
323 `+destdir=/usr/local', for example, `make install' creates
324 `/usr/local/bin/gdb'.
325
846058ed 326`+subdirs'
c45c19f8
JG
327 Write configuration specific files in subdirectories of the form
328
846058ed 329 Host-HOST/Target-TARGET
c45c19f8
JG
330
331 (and configure the `Makefile' to write binaries there too).
332 Without this option, if you specify only one configuration for
333 GDB, `configure' will use the same directory for source,
334 configured files, and binaries. This option is used
335 automatically if you specify more than one HOST or more than
846058ed
JG
336 one
337 `+target=TARGET' option on the `configure' command line.
c45c19f8
JG
338
339`+norecur'
340 Configure only the directory where `configure' is executed; do
341 not propagate configuration to subdirectories.
342
343`+rm'
846058ed 344 Remove the configuration that the other arguments specify.
c45c19f8 345
846058ed 346`+target=TARGET ...'
c45c19f8 347 Configure GDB for cross-debugging programs running on each
846058ed
JG
348 specified TARGET. You may specify as many `+target' options as
349 you wish. Without this option, GDB is configured to debug
350 programs that run on the same machine (HOST) as GDB itself.
351
352 There is no convenient way to generate a list of all available
353 targets.
c45c19f8
JG
354
355`HOST ...'
356 Configure GDB to run on each specified HOST. You may specify as
846058ed
JG
357 many host names as you wish.
358
359 There is no convenient way to generate a list of all available
360 hosts.
c45c19f8
JG
361
362`configure' accepts other options, for compatibility with configuring
363other GNU tools recursively; but these are the only options that
364affect GDB or its supporting libraries.
bd5635a1 365
bd5635a1 366
c45c19f8 367 Languages other than C
bd5635a1
RP
368
369C++ support has been integrated into gdb. GDB should work with FORTRAN
c45c19f8
JG
370programs. (If you have problems, please send a bug report; you may
371have to refer to some FORTRAN variables with a trailing underscore).
846058ed
JG
372Andrew Beers has produced a GDB that works with Modula-2, which will
373appear in gdb-4.1. I am not aware of anyone who is working on getting
374gdb to use the syntax of any other language. Pascal programs which use
375sets, subranges, file variables, or nested functions will not currently
376work.
bd5635a1 377
bd5635a1 378
c45c19f8 379 Kernel debugging
bd5635a1 380
c45c19f8
JG
381I have't done this myself so I can't really offer any advice.
382Remote debugging over serial lines works fine, but the kernel debugging
383code in here has not been tested in years. Van Jacobson claims to have
384better kernel debugging, but won't release it for ordinary mortals.
bd5635a1 385
bd5635a1 386
c45c19f8 387 Remote debugging
bd5635a1 388
361cc81a
JG
389The files m68k-stub.c and i386-stub.c contain two examples of remote
390stubs to be used with remote.c. They are designeded to run standalone
391on a 68k or 386 cpu and communicate properly with the remote.c stub
392over a serial line.
393
170d0c85
RP
394The file rem-multi.shar contains a general stub that can probably
395run on various different flavors of unix to allow debugging over a
361cc81a 396serial line from one machine to another.
bd5635a1
RP
397
398The files remote-eb.c and remote-nindy.c are two examples of remote
399interfaces for talking to existing ROM monitors (for the AMD 29000 and the
170d0c85
RP
400Intel 960 repsectively).
401
402Remote-vx.c and the vx-share subdirectory contain a remote interface for the
403VxWorks realtime kernel, which communicates over TCP using the Sun
404RPC library. This would be a useful starting point for other remote-
405via-ethernet back ends.
bd5635a1 406
c45c19f8
JG
407[This section seems to be out of date, I have never seen the "rapp"
408program, though I would like to. FIXME.]
409`rapp' runs under unix and acts as a remote stub (like rem-multi.shar
410distributed with GDB version 3). Currently it just works over UDP
411(network), not over a serial line. To get it running
412* Compile GDB on the host machine as usual
413* Compile rapp on the target machine, giving for both host and target
414 the type of the target machine
415* Install "gdb" in /etc/services on both machines.
bd5635a1 416
c45c19f8
JG
417
418 Reporting Bugs
419
420The correct address for reporting bugs found in gdb is
bd5635a1
RP
421"bug-gdb@prep.ai.mit.edu". Please email all bugs to that address.
422
846058ed
JG
423GDB can produce warnings about symbols that it does not understand. By
424default, these warnings are disabled. You can enable them by executing
425`set complaint 10' (which you can put in your ~/.gdbinit if you like).
426I recommend doing this if you are working on a compiler, assembler,
427linker, or gdb, since it will point out problems that you may be able
428to fix. Warnings produced during symbol reading indicate some mismatch
429between the object file and GDB's symbol reading code (in many cases,
430it's a mismatch between the specs for the object file format, and what
431the compiler actually outputs or the debugger actually understands).
c45c19f8
JG
432
433If you port gdb to a new machine, please send the required changes
434to bug-gdb@prep.ai.mit.edu. If your changes are more than a few
435lines, obtain and send in a copyright assignment from gnu@prep.ai.mit.edu, as
436described in the section `Writing Code for GDB'.
437
438
439 X Windows versus GDB
bd5635a1 440
361cc81a 441xgdb is obsolete. We are not doing any development or support of it.
bd5635a1 442
c45c19f8
JG
443There is an "xxgdb", which shows more promise, which was posted to
444comp.sources.x.
bd5635a1
RP
445
446For those intersted in auto display of source and the availability of
447an editor while debugging I suggest trying gdb-mode in gnu-emacs
448(Try typing M-x gdb RETURN). Comments on this mode are welcome.
449
c45c19f8
JG
450
451 About the machine-dependent files
bd5635a1
RP
452
453tconfig/<machine>
454This contains Makefile stuff for when the target system is <machine>.
455It also specifies the name of the tm-XXX.h file for this machine.
456
457xconfig/<machine>
458This contains Makefile stuff for when the host system is <machine>.
459It also specifies the name of the xm-XXX.h file for this machine.
460
170d0c85 461tm-XXX.h (tm.h is a link to this file, created by configure).
c45c19f8
JG
462This file contains macro definitions about the target machine's
463registers, stack frame format and instructions.
bd5635a1 464
170d0c85 465xm-XXX.h (xm.h is a link to this file, created by configure).
bd5635a1
RP
466This contains macro definitions describing the host system environment,
467such as byte order, host C compiler and library, ptrace support,
468and core file structure.
469
470<machine>-opcode.h
471<machine>-pinsn.c
472These files contain the information necessary to print instructions
473for your cpu type. <machine>-opcode.h includes some large initialized
474data structures, which is strange for a ".h" file, but it's OK since
475it is only included in one place. <machine>-opcode.h is shared
476between the debugger and the assembler (if the GNU assembler has been
477ported to that machine), whereas <machine>-pinsn.c is specific to GDB.
478
479<machine>-tdep.c
480This file contains any miscellaneous code required for this machine
481as a target. On some machines it doesn't exist at all. Its existence
482is specified in the tconfig/XXX file.
483
484<machine>-xdep.c
485This file contains any miscellaneous code required for this machine
486as a host. On some machines it doesn't exist at all. Its existence
487is specified in the xconfig/XXX file.
488
489infptrace.c
490This is the low level interface to inferior processes for systems
491using the Unix ptrace call in a vanilla way. Some systems have their
492own routines in <machine>-xdep.c. Whether or not it is used
493is specified in the xconfig/XXX file.
494
495coredep.c
496Machine and system-dependent aspects of reading core files. Some
497machines use coredep.c; some have the routines in <machine>-xdep.c.
498Whether or not it is used is specified in the xconfig/XXX file.
499Now that BFD is used to read core files, virtually all machines should
500use coredep.c and should just provide fetch_core_registers in
501<machine>-xdep.c.
502
503exec.c
504Machine and system-dependent aspects of reading executable files.
505Some machines use exec.c; some have the routines in <machine>-tdep.c
506Since BFD, virtually all machines should use exec.c.
507
c45c19f8
JG
508
509 Writing Code for GDB
bd5635a1
RP
510
511We appreciate having users contribute code that is of general use, but
512for it to be included in future GDB releases it must be cleanly
513written. We do not want to include changes that will needlessly make
514future maintainance difficult. It is not much harder to do things
515right, and in the long term it is worth it to the GNU project, and
516probably to you individually as well.
517
518Please code according to the GNU coding standards. If you do not have
519a copy, you can request one by sending mail to gnu@prep.ai.mit.edu.
520
521If you make substantial changes, you'll have to file a copyright
522assignment with the Free Software Foundation before we can produce a
523release that includes your changes. Send mail requesting the copyright
524assignment to gnu@prep.ai.mit.edu. Do this early, like before the
525changes actually work, or even before you start them, because a manager
526or lawyer on your end will probably make this a slow process.
527
528Please try to avoid making machine-specific changes to
529machine-independent files. If this is unavoidable, put a hook in the
530machine-independent file which calls a (possibly) machine-dependent
531macro (for example, the IGNORE_SYMBOL macro can be used for any
532symbols which need to be ignored on a specific machine. Calling
533IGNORE_SYMBOL in dbxread.c is a lot cleaner than a maze of #if
534defined's). The machine-independent code should do whatever "most"
535machines want if the macro is not defined in param.h. Using #if
361cc81a 536defined can sometimes be OK (e.g. SET_STACK_LIMIT_HUGE) but should be
bd5635a1
RP
537conditionalized on a specific feature of an operating system (set in
538tm.h or xm.h) rather than something like #if defined(vax) or #if
539defined(SYSV). If you use an #ifdef on some symbol that is defined
540in a header file (e.g. #ifdef TIOCSETP), *please* make sure that you
541have #include'd the relevant header file in that module!
542
543It is better to replace entire routines which may be system-specific,
544rather than put in a whole bunch of hooks which are probably not going
545to be helpful for any purpose other than your changes. For example,
546if you want to modify dbxread.c to deal with DBX debugging symbols
547which are in COFF files rather than BSD a.out files, do something
548along the lines of a macro GET_NEXT_SYMBOL, which could have
549different definitions for COFF and a.out, rather than trying to put
550the necessary changes throughout all the code in dbxread.c that
551currently assumes BSD format.
552
553Please avoid duplicating code. For example, in GDB 3.x all the stuff
554in infptrace.c was duplicated in *-dep.c, and so changing something
c45c19f8 555was very painful. In GDB 4.x, these have all been consolidated
bd5635a1
RP
556into infptrace.c. infptrace.c can deal with variations between
557systems the same way any system-independent file would (hooks, #if
558defined, etc.), and machines which are radically different don't need
559to use infptrace.c at all. The same was true of core_file_command
560and exec_file_command.
561
bd5635a1 562
c45c19f8 563 Debugging gdb with itself
bd5635a1 564
c45c19f8
JG
565If gdb is limping on your machine, this is the preferred way to get it
566fully functional. Be warned that in some ancient Unix systems, like
567Ultrix 4.0, a program can't be running in one process while it is being
568debugged in another. Rather than doing "./gdb ./gdb", which works on
569Suns and such, you can copy gdb to gdb2 and then do "./gdb ./gdb2".
bd5635a1
RP
570
571When you run gdb in this directory, it will read a ".gdbinit" file that
572sets up some simple things to make debugging gdb easier. The "info"
573command, when executed without a subcommand in a gdb being debugged by
574gdb, will pop you back up to the top level gdb. See .gdbinit for details.
c45c19f8 575
846058ed
JG
576I strongly recommend printing out the reference card and using it.
577Send reference-card suggestions to bug-gdb@prep.ai.mit.edu, just like bugs.
578
c45c19f8
JG
579If you use emacs, you will probably want to do a "make TAGS" after you
580configure your distribution; this will put the machine dependent
581routines for your local machine where they will be accessed first by a
582M-period.
583
584Also, make sure that you've compiled gdb with your local cc or taken
585appropriate precautions regarding ansification of include files. See
586the Makefile for more information.
bd5635a1
RP
587\f
588(this is for editing this file with GNU emacs)
589Local Variables:
590mode: text
591End:
This page took 0.060012 seconds and 4 git commands to generate.