1999-09-04 Steve Chamberlain <sac@pobox.com>
[deliverable/binutils-gdb.git] / binutils / README
index 7482e0b91d0aa53f61251f8ca4bbe7980eaaddd5..4b2d27724499bcc6da533a5c2e4e4444a9209268 100644 (file)
-This is a BETA release of a completely rewritten binutils distribution.
-The linker (ld) has been moved into a separate directory,
-which should be ../ld.  Linker-specific notes are in ../ld/README.
-
-These programs have been tested on various architectures.
-Most recently tested are sun3 and sun4s running sunos4,
-as well as Sony News running newsos3.
-However, since this is a beta release taken directly from an
-evolving source tree, there might be some problems.  In particular,
-the programs have not been ported to as many machines as the
-old binutils.  There are also features of the old versions
-that are missing on the new programs.  We would appreciate
-patches to make things run on other machines; especially welcome
-are fixes for what used to work on the old programs!
+These are the GNU binutils.  These are utilities of use when dealing
+with object files.
 
-Unpacking and Installation -- quick overview
-==========================
+The linker (ld) is in a separate directory, which should be ../ld.
+Linker-specific notes are in ../ld/README.
+
+As of version 2.5, the assembler (as) is also included in this package, in
+../gas.  Assembler-specific notes can be found in ../gas/README.
 
-In this release, the binary utilities, the linker, the generic GNU include
-files, the BFD ("binary file description") library, and getopt all have
-directories of their own underneath the binutils-2.0 directory.
-The idea is that a variety of GNU tools can
-share a common copy of these things.  Configuration scripts and
-makefiles exist to cruise up and down this directory tree and
-automatically build all the pieces in the right order.
+Recent changes are in ./NEWS, ../ld/NEWS, and ../gas/NEWS.
 
-When you unpack the binutils-2.0.tar.Z file, you'll get a directory called
-something like `binutils-2.0', which contains:
+Unpacking and Installation -- quick overview
+============================================
 
-       DOC.configure  README         config/        configure*     ld/
-       Makefile       bfd/           config.status* configure.in   libiberty/
-       Makefile.in    binutils/      config.sub     include/       texinfo/
+When you unpack the binutils-2.9.tar.gz file, you'll get a directory
+called something like `binutils-2.9', which contains various files and
+directories.  Most of the files in the top directory are for
+information and for configuration.  The actual source code is in
+subdirectories.
 
 To build binutils, you can just do:
 
-       cd binutils-2.0
-       ./configure HOSTTYPE            (e.g. sun4, decstation)
+       cd binutils-2.9
+       ./configure [options]
+       make
+       make install # copies the programs files into /usr/local/bin
+                    # by default.
+
+This will configure and build all the libraries as well as the
+assembler, the binutils, and the linker.
+
+If you have GNU make, we recommend building in a different directory:
+
+       mkdir objdir
+       cd objdir
+       ../binutils-2.9/configure [options]
        make
-       make install # copies the programs files into /usr/local/bin by default.
+       make install
+
+This relies on the VPATH feature of GNU make.
+
+By default, the binutils will be configured to support the system on
+which they are built.  When doing cross development, use the --target
+configure option to specify a different target.
+
+The --enable-targets option adds support for more binary file formats
+besides the default.  List them as the argument to --enable-targets,
+separated by commas.  For example:
+
+       ./configure --enable-targets=sun3,rs6000-aix,decstation
+
+The name 'all' compiles in support for all valid BFD targets (this was
+the default in releases before 2.3):
 
-This will configure and build all the libraries as well as binutils
-and the linker.
+       ./configure --enable-targets=all
 
-The binutils can be used in a cross-development environment.
-The file DOC.configure contains more information.
+You can also specify the --enable-shared option when you run
+configure.  This will build the BFD and opcodes libraries as shared
+libraries.  You can use arguments with the --enable-shared option to
+indicate that only certain libraries should be built shared; for
+example, --enable-shared=bfd.  The only potential shared libraries in
+a binutils release are bfd and opcodes.
+
+The binutils will be linked against the shared libraries.  The build
+step will attempt to place the correct library in the runtime search
+path for the binaries.  However, in some cases, after you install the
+binaries, you may have to set an environment variable, normally
+LD_LIBRARY_PATH, so that the system can find the installed libbfd
+shared library.
+
+To build under openVMS/AXP, see the file makefile.vms in the top level
+directory.
+
+If you don't have ar
+====================
+
+If your system does not already have an ar program, the normal
+binutils build process will not work.  In this case, run configure as
+usual.  Before running make, run this script:
+
+#!/bin/sh
+MAKE_PROG="${MAKE-make}"
+MAKE="${MAKE_PROG} AR=true LINK=true"
+export MAKE
+${MAKE} $* all-libiberty
+${MAKE} $* all-intl
+${MAKE} $* all-bfd
+cd binutils
+MAKE="${MAKE_PROG}"
+export MAKE
+${MAKE} $* ar_DEPENDENCIES= ar_LDADD='../bfd/*.o `cat ../libiberty/required-list ../libiberty/needed-list | sed -e "s,\([^ ][^ ]*\),../libiberty/\1,g"` `if test -f ../intl/gettext.o; then echo '../intl/*.o'; fi`' ar
+
+This script will build an ar program in binutils/ar.  Move binutils/ar
+into a directory on your PATH.  After doing this, you can run make as
+usual to build the complete binutils distribution.  You do not need
+the ranlib program in order to build the distribution.
 
 Porting
 =======
-Binutils-2.0 supports many different architectures, but there
+
+Binutils-2.9 supports many different architectures, but there
 are many more not supported, including some that were supported
 by earlier versions.  We are hoping for volunteers to
 improve this situation.
@@ -54,20 +106,84 @@ improve this situation.
 The major effort in porting binutils to a new host and/or target
 architecture involves the BFD library.  There is some documentation
 in ../bfd/doc.  The file ../gdb/doc/gdbint.texinfo (distributed
-with gdb-3.2) may also be of help.
-
-If your system uses some variant of old-style a.out-format,
-you can start with a copy of bfd/newsos3.c, and edit it to fit.
-(You may also need to tweak bfd/aout-target.h.)
-Alternatively, you could use the host-aout.c target.  This is a
-special kludge that only works for native (non-cross) configurations.
+with gdb-4.x) may also be of help.
 
 Reporting bugs
 ==============
-If you can't track down a bug and send suggestions/patches
-for fixes, you should probably *not* be using this release.
-I cannot work on finding bugs at this stage (except for
-Cygnus-supported configurations).  But if you have suggestions
-or patches, send them to bothner@cygnus.com, for now.
-(After the official release, the correct address will
-be bug-gnu-utils@ai.mit.edu.)
+
+Send bug reports and patches to bug-gnu-utils@gnu.org.  Always mention
+the version number you are running; this is printed by running any of
+the binutils with the --version option.  We appreciate reports about
+bugs, but we do not promise to fix them.
+
+VMS
+===
+
+This section was written by Klaus K"ampf <kkaempf@rmi.de>.  It
+describes how to build and install the binutils on openVMS (Alpha and
+Vax).  (The BFD library only supports reading Vax object files.)
+
+Compiling the release:
+
+To compile the gnu binary utilities and the gnu assembler, you'll
+need DEC C or GNU C for openVMS/Alpha. You'll need *both* compilers
+on openVMS/Vax.
+
+Compiling with either DEC C or GNU C works on openVMS/Alpha only. Some
+of the opcodes and binutils files trap a bug in the DEC C optimizer,
+so these files must be compiled with /noopt.
+
+Compiling on openVMS/Vax is a bit complicated, as the bfd library traps
+a bug in GNU C and the gnu assembler a bug in (my version of) DEC C.
+
+I never tried compiling with VAX C.
+
+
+You further need GNU Make Version 3.76 or later. This is available
+at ftp.progis.de or any GNU archive site. The makefiles assume that
+gmake starts gnu make as a foreign command.
+
+If you're compiling with DEC C or VAX C, you must run
+
+  $ @setup
+
+before starting gnu-make. This isn't needed with GNU C.
+
+On the Alpha you can choose the compiler by editing the toplevel
+makefile.vms. Either select CC=cc (for DEC C) or CC=gcc (for GNU C)
+
+
+Installing the release
+
+Provided that your directory setup conforms to the GNU on openVMS
+standard, you already have a concealed deviced named 'GNU_ROOT'.
+In this case, a simple
+
+ $ gmake install
+
+suffices to copy all programs and libraries to the proper directories.
+
+Define the programs as foreign commands by adding these lines to your
+login.com:
+
+  $ gas :== $GNU_ROOT:[bin]as.exe
+  $ size :== $GNU_ROOT:[bin]size.exe
+  $ nm :== $GNU_ROOT:[bin]nm.exe
+  $ objdump :== $GNU_ROOT:[bin]objdump.exe
+  $ strings :== $GNU_ROOT:[bin]strings.exe
+
+If you have a different directory setup, copy the binary utilities
+([.binutils]size.exe, [.binutils]nm.exe, [.binutils]objdump.exe,
+and [.binutils]strings.exe) and the gnu assembler and preprocessor
+([.gas]as.exe and [.gas]gasp.exe]) to a directory of your choice
+and define all programs as foreign commands.
+
+
+If you're satiesfied with the compilation, you may want to remove
+unneeded objects and libraries:
+
+  $ gmake clean
+
+
+If you have any problems or questions about the binutils on VMS, feel
+free to mail me at kkaempf@rmi.de.
This page took 0.028391 seconds and 4 git commands to generate.