2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
How to build and install the DJGPP native version of GDB
|
|
|
|
********************************************************
|
|
|
|
|
|
|
|
General
|
|
|
|
=======
|
|
|
|
|
|
|
|
GDB built with DJGPP supports native DJGPP debugging, whereby you run
|
|
|
|
gdb.exe and the program being debugged on the same machine. In
|
|
|
|
addition, this version supports remote debugging via a serial port,
|
|
|
|
provided that the target machine has a GDB-compatible debugging stub
|
|
|
|
which can be linked with the target program (see the section "Remote
|
|
|
|
Serial" in the GDB manual for more details).
|
|
|
|
|
|
|
|
|
|
|
|
Installation of the binary distribution
|
|
|
|
=======================================
|
|
|
|
|
|
|
|
Simply unzip the gdbNNNb.zip file (where NNN is the version number)
|
|
|
|
from the top DJGPP installation directory. Be sure to preserve the
|
|
|
|
directory structure while you unzip (use -d switch if you do this with
|
|
|
|
PKUNZIP). On Windows 9X and Windows 2000, use an unzip program which
|
|
|
|
supports long file names; one such program is unzip32.exe, available
|
|
|
|
from the DJGPP sites.
|
|
|
|
|
|
|
|
If you need the libraries which are built as part of GDB, install the
|
|
|
|
companion file gdbNNNa.zip. This allows to develop applications which
|
|
|
|
use the same functions as GDB. For example, you can build your own
|
|
|
|
front end to the debugger.
|
|
|
|
|
|
|
|
|
|
|
|
Rebuilding GDB from sources
|
|
|
|
===========================
|
|
|
|
|
|
|
|
1. Prerequisites
|
|
|
|
-------------
|
|
|
|
To build the package, you will need the DJGPP development environment
|
|
|
|
(GCC, header files, and the libraries), and also DJGPP ports of the
|
|
|
|
following tools:
|
|
|
|
|
2001-10-21 16:21:03 +02:00
|
|
|
- GNU Make 3.79.1 or later
|
2000-03-19 12:53:24 +01:00
|
|
|
- Bash 2.03 or later
|
|
|
|
- GNU Sed
|
|
|
|
- GNU Fileutils
|
|
|
|
- GNU Textutils 2.0 or later
|
|
|
|
- GNU Sh-utils
|
|
|
|
- GNU Grep 2.4 or later
|
|
|
|
- GNU Findutils
|
|
|
|
- GNU Awk 3.04 or later
|
|
|
|
- GNU Bison (only if you change one of the gdb/*.y files)
|
|
|
|
- Groff (only if you need to format the man pages)
|
|
|
|
- GNU Diffutils (only if you run the test suite)
|
|
|
|
|
|
|
|
These programs should be available from the DJGPP sites, in the v2gnu
|
|
|
|
directory. In addition, the configuration script invokes the `update'
|
|
|
|
and `utod' utilities which are part of the basic DJGPP development kit
|
|
|
|
(djdevNNN.zip).
|
|
|
|
|
|
|
|
|
|
|
|
2. Unpacking the sources
|
|
|
|
---------------------
|
|
|
|
If you download the source distribution from one of the DJGPP sites,
|
|
|
|
just unzip it while preserving the directory structure (I suggest to
|
|
|
|
use unzip32.exe available with the rest of DJGPP), and proceed to the
|
2001-10-21 16:21:03 +02:00
|
|
|
section "How to build", below.
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
Source distributions downloaded from one of the GNU FTP sites need
|
2000-04-23 09:23:05 +02:00
|
|
|
some more work to unpack. First, you MUST use the `djunpack' batch
|
|
|
|
file to unzip the package. That's because some file names in the
|
|
|
|
official distributions need to be changed to avoid problems on the
|
|
|
|
various platforms supported by DJGPP. `djunpack' invokes the `djtar'
|
|
|
|
program (that is part of the basic DJGPP development kit) to rename
|
|
|
|
these files on the fly given a file with name mappings; the
|
|
|
|
distribution includes a file `gdb/config/djgpp/fnchange.lst' with the
|
|
|
|
necessary mappings. So you need first to retrieve that batch file,
|
|
|
|
and then invoke it to unpack the distribution. Here's how:
|
|
|
|
|
2002-02-25 17:14:09 +01:00
|
|
|
djtar -x -p -o gdb-5.2/djunpack.bat gdb-5.2.tar.gz > djunpack.bat
|
|
|
|
djunpack gdb-5.2.tar.gz
|
2000-04-23 09:23:05 +02:00
|
|
|
|
|
|
|
(The name of the distribution archive and the leading directory of the
|
|
|
|
path to `djunpack.bat' in the distribution will be different for
|
2002-02-25 17:14:09 +01:00
|
|
|
versions of GDB other than 5.2.)
|
2000-04-23 09:23:05 +02:00
|
|
|
|
|
|
|
If the argument to `djunpack.bat' include leading directories, it MUST
|
|
|
|
be given with the DOS-style backslashes; Unix-style forward slashes
|
|
|
|
will NOT work.
|
|
|
|
|
2001-10-21 16:21:03 +02:00
|
|
|
If the distribution comes as a .tar.bz2 archive, and your version of
|
|
|
|
`djtar' doesn't support bzip2 decompression, you need to unpack it as
|
|
|
|
follows:
|
2000-04-23 09:23:05 +02:00
|
|
|
|
2002-02-25 17:14:09 +01:00
|
|
|
bnzip2 gdb-5.2.tar.bz2
|
|
|
|
djtar -x -p -o gdb-5.2/djunpack.bat gdb-5.2.tar > djunpack.bat
|
|
|
|
djunpack gdb-5.2.tar
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
3. How to build
|
|
|
|
------------
|
|
|
|
|
2002-04-19 21:28:54 +02:00
|
|
|
If the source distribution available from DJGPP archives is already
|
|
|
|
configured for DJGPP v2.x (if it is, you will find files named
|
|
|
|
`Makefile' in each subdirectory), then just invoke Make:
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
make
|
|
|
|
|
2002-04-19 21:28:54 +02:00
|
|
|
To build a package that is not yet configured, or if you downloaded
|
|
|
|
GDB from a GNU FTP site, you will need to configure it first. You
|
|
|
|
will also need to configure it if you want to change the configuration
|
|
|
|
options (e.g., compile without support for the GDBMI interface). To
|
|
|
|
configure GDB, type this command:
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
sh ./gdb/config/djgpp/djconfig.sh
|
|
|
|
|
|
|
|
This script checks the unpacked distribution, then edits the configure
|
|
|
|
scripts in the various subdirectories, to make them suitable for
|
|
|
|
DJGPP, and finally invokes the top-level configure script, which
|
|
|
|
recursively configures all the subdirectories.
|
|
|
|
|
|
|
|
You may pass optional switches to djconfig.sh. It accepts all the
|
|
|
|
switches accepted by the original GDB configure script. These
|
2001-10-21 16:21:03 +02:00
|
|
|
switches are described in the file gdb/README, and their full list can
|
|
|
|
be displayed by running the following command:
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
sh ./gdb/configure --help
|
|
|
|
|
|
|
|
NOTE: if you *do* use optional command-line switches, you MUST pass
|
|
|
|
to the script the name of the directory where GDB sources are
|
|
|
|
unpacked--even if you are building GDB in-place! For example:
|
|
|
|
|
2001-10-21 16:21:03 +02:00
|
|
|
sh ./gdb/config/djgpp/djconfig.sh . --disable-gdbmi
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
It is also possible to build GDB in a directory that is different from
|
|
|
|
the one where the sources were unpacked. In that case, you have to
|
|
|
|
pass the source directory as the first argument to the script:
|
|
|
|
|
2002-02-25 17:14:09 +01:00
|
|
|
sh ./gdb/config/djgpp/djconfig.sh d:/gnu/gdb-5.2
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
You MUST use forward slashes in the first argument.
|
|
|
|
|
|
|
|
After the configure script finishes, run Make:
|
|
|
|
|
|
|
|
make
|
|
|
|
|
2000-05-17 13:49:53 +02:00
|
|
|
If you want to produce the documentation (for example, if you changed
|
|
|
|
some of the Texinfo sources), type this:
|
|
|
|
|
|
|
|
make info
|
|
|
|
|
2000-03-19 12:53:24 +01:00
|
|
|
When Make finishes, you can install the package:
|
|
|
|
|
2002-02-25 17:14:09 +01:00
|
|
|
make install prefix='${DJDIR}' INSTALL='ginstall -c'
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
The above doesn't install the docs; for that you will need to say
|
|
|
|
this:
|
|
|
|
|
2002-02-25 17:14:09 +01:00
|
|
|
make install-info prefix='${DJDIR}' INSTALL='ginstall -c'
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
The test suite has been made to work with DJGPP. If you make a change
|
|
|
|
in some of the programs, or want to be sure you have a fully
|
|
|
|
functional GDB executable, it is a good idea to run the test suite.
|
|
|
|
You cannot use "make check" for that, since it will want to run the
|
|
|
|
`dejagnu' utility which GDB doesn't support. Instead, use the special
|
|
|
|
script gdb/config/djgpp/djcheck.sh, like this:
|
|
|
|
|
|
|
|
cd gdb/testsuite
|
|
|
|
sh ../config/djgpp/djcheck.sh
|
|
|
|
|
2000-05-17 13:49:53 +02:00
|
|
|
This will run for a while and should not print anything, except the
|
|
|
|
messages "Running tests in DIR", where DIR is one of the
|
|
|
|
subdirectories of the testsuite. Any test that fails to produce the
|
|
|
|
expected output will cause the diffs between the expected and the
|
|
|
|
actual output be printed, and in addition will leave behind a file
|
|
|
|
SOMETHING.tst (where SOMETHING is the name of the failed test). You
|
|
|
|
should compare each of the *.tst files with the corresponding *.out
|
|
|
|
file and convince yourself that the differences do not indicate a real
|
|
|
|
problem. Examples of differences you can disregard are changes in the
|
|
|
|
copyright blurb printed by GDB, values of unitialized variables,
|
|
|
|
addresses of global variables like argv[] and envp[] (which depend on
|
|
|
|
the size of your environment), etc.
|
2000-03-19 12:53:24 +01:00
|
|
|
|
|
|
|
Note that djcheck.sh only recurses into those of the subdirectories of
|
|
|
|
the test suite which test features supported by the DJGPP port of GDB.
|
|
|
|
For example, the tests in the gdb.gdbtk, gdb.threads, and gdb.hp
|
|
|
|
directories are not run.
|
|
|
|
|
|
|
|
|
|
|
|
Enjoy,
|
|
|
|
Eli Zaretskii <eliz@is.elta.co.il>
|