| 1 |                 README for GAS
 | 
|---|
| 2 | 
 | 
|---|
| 3 | A number of things have changed since version 1 and the wonderful
 | 
|---|
| 4 | world of gas looks very different.  There's still a lot of irrelevant
 | 
|---|
| 5 | garbage lying around that will be cleaned up in time.  Documentation
 | 
|---|
| 6 | is scarce, as are logs of the changes made since the last gas release.
 | 
|---|
| 7 | My apologies, and I'll try to get something useful.
 | 
|---|
| 8 | 
 | 
|---|
| 9 | Unpacking and Installation - Summary
 | 
|---|
| 10 | ====================================
 | 
|---|
| 11 | 
 | 
|---|
| 12 | See ../binutils/README.
 | 
|---|
| 13 | 
 | 
|---|
| 14 | To build just the assembler, make the target all-gas.
 | 
|---|
| 15 | 
 | 
|---|
| 16 | Documentation
 | 
|---|
| 17 | =============
 | 
|---|
| 18 | 
 | 
|---|
| 19 | The GAS release includes texinfo source for its manual, which can be processed
 | 
|---|
| 20 | into `info' or `dvi' forms.
 | 
|---|
| 21 | 
 | 
|---|
| 22 | The DVI form is suitable for printing or displaying; the commands for doing
 | 
|---|
| 23 | this vary from system to system.  On many systems, `lpr -d' will print a DVI
 | 
|---|
| 24 | file.  On others, you may need to run a program such as `dvips' to convert the
 | 
|---|
| 25 | DVI file into a form your system can print.
 | 
|---|
| 26 | 
 | 
|---|
| 27 | If you wish to build the DVI file, you will need to have TeX installed on your
 | 
|---|
| 28 | system.  You can rebuild it by typing:
 | 
|---|
| 29 | 
 | 
|---|
| 30 |         cd gas/doc
 | 
|---|
| 31 |         make as.dvi
 | 
|---|
| 32 | 
 | 
|---|
| 33 | The Info form is viewable with the GNU Emacs `info' subsystem, or the
 | 
|---|
| 34 | stand-alone `info' program, available as part of the GNU Texinfo distribution.
 | 
|---|
| 35 | To build the info files, you will need the `makeinfo' program.  Type:
 | 
|---|
| 36 | 
 | 
|---|
| 37 |         cd gas/doc
 | 
|---|
| 38 |         make info
 | 
|---|
| 39 | 
 | 
|---|
| 40 | Specifying names for hosts and targets
 | 
|---|
| 41 | ======================================
 | 
|---|
| 42 | 
 | 
|---|
| 43 |    The specifications used for hosts and targets in the `configure'
 | 
|---|
| 44 | script are based on a three-part naming scheme, but some short
 | 
|---|
| 45 | predefined aliases are also supported.  The full naming scheme encodes
 | 
|---|
| 46 | three pieces of information in the following pattern:
 | 
|---|
| 47 | 
 | 
|---|
| 48 |      ARCHITECTURE-VENDOR-OS
 | 
|---|
| 49 | 
 | 
|---|
| 50 |    For example, you can use the alias `sun4' as a HOST argument or in a
 | 
|---|
| 51 | `--target=TARGET' option.  The equivalent full name is
 | 
|---|
| 52 | `sparc-sun-sunos4'.
 | 
|---|
| 53 | 
 | 
|---|
| 54 |    The `configure' script accompanying GAS does not provide any query
 | 
|---|
| 55 | facility to list all supported host and target names or aliases. 
 | 
|---|
| 56 | `configure' calls the Bourne shell script `config.sub' to map
 | 
|---|
| 57 | abbreviations to full names; you can read the script, if you wish, or
 | 
|---|
| 58 | you can use it to test your guesses on abbreviations--for example:
 | 
|---|
| 59 | 
 | 
|---|
| 60 |      % sh config.sub sun4
 | 
|---|
| 61 |      sparc-sun-sunos411
 | 
|---|
| 62 |      % sh config.sub sun3
 | 
|---|
| 63 |      m68k-sun-sunos411
 | 
|---|
| 64 |      % sh config.sub decstation
 | 
|---|
| 65 |      mips-dec-ultrix42
 | 
|---|
| 66 |      % sh config.sub hp300bsd
 | 
|---|
| 67 |      m68k-hp-bsd
 | 
|---|
| 68 |      % sh config.sub i386v
 | 
|---|
| 69 |      i386-unknown-sysv
 | 
|---|
| 70 |      % sh config.sub i786v
 | 
|---|
| 71 |      Invalid configuration `i786v': machine `i786v' not recognized
 | 
|---|
| 72 | 
 | 
|---|
| 73 | 
 | 
|---|
| 74 | `configure' options
 | 
|---|
| 75 | ===================
 | 
|---|
| 76 | 
 | 
|---|
| 77 |    Here is a summary of the `configure' options and arguments that are
 | 
|---|
| 78 | most often useful for building GAS.  `configure' also has several other
 | 
|---|
| 79 | options not listed here.
 | 
|---|
| 80 | 
 | 
|---|
| 81 |      configure [--help]
 | 
|---|
| 82 |                [--prefix=DIR]
 | 
|---|
| 83 |                [--srcdir=PATH]
 | 
|---|
| 84 |                [--host=HOST]
 | 
|---|
| 85 |                [--target=TARGET]
 | 
|---|
| 86 |                [--with-OPTION]
 | 
|---|
| 87 |                [--enable-OPTION]
 | 
|---|
| 88 | 
 | 
|---|
| 89 | You may introduce options with a single `-' rather than `--' if you
 | 
|---|
| 90 | prefer; but you may abbreviate option names if you use `--'.
 | 
|---|
| 91 | 
 | 
|---|
| 92 | `--help'
 | 
|---|
| 93 |      Print a summary of the options to `configure', and exit.
 | 
|---|
| 94 | 
 | 
|---|
| 95 | `-prefix=DIR'
 | 
|---|
| 96 |      Configure the source to install programs and files under directory
 | 
|---|
| 97 |      `DIR'.
 | 
|---|
| 98 | 
 | 
|---|
| 99 | `--srcdir=PATH'
 | 
|---|
| 100 |      Look for the package's source code in directory DIR.  Usually
 | 
|---|
| 101 |      `configure' can determine that directory automatically.
 | 
|---|
| 102 | 
 | 
|---|
| 103 | `--host=HOST'
 | 
|---|
| 104 |      Configure GAS to run on the specified HOST.  Normally the
 | 
|---|
| 105 |      configure script can figure this out automatically.
 | 
|---|
| 106 | 
 | 
|---|
| 107 |      There is no convenient way to generate a list of all available
 | 
|---|
| 108 |      hosts.
 | 
|---|
| 109 | 
 | 
|---|
| 110 | `--target=TARGET'
 | 
|---|
| 111 |      Configure GAS for cross-assembling programs for the specified
 | 
|---|
| 112 |      TARGET.  Without this option, GAS is configured to assemble .o files
 | 
|---|
| 113 |      that run on the same machine (HOST) as GAS itself.
 | 
|---|
| 114 | 
 | 
|---|
| 115 |      There is no convenient way to generate a list of all available
 | 
|---|
| 116 |      targets.
 | 
|---|
| 117 | 
 | 
|---|
| 118 | `--enable-OPTION'
 | 
|---|
| 119 |      These flags tell the program or library being configured to 
 | 
|---|
| 120 |      configure itself differently from the default for the specified
 | 
|---|
| 121 |      host/target combination.  See below for a list of `--enable'
 | 
|---|
| 122 |      options recognized in the gas distribution.
 | 
|---|
| 123 | 
 | 
|---|
| 124 | `configure' accepts other options, for compatibility with configuring
 | 
|---|
| 125 | other GNU tools recursively; but these are the only options that affect
 | 
|---|
| 126 | GAS or its supporting libraries.
 | 
|---|
| 127 | 
 | 
|---|
| 128 | The `--enable' options recognized by software in the gas distribution are:
 | 
|---|
| 129 | 
 | 
|---|
| 130 | `--enable-targets=...'
 | 
|---|
| 131 |      This causes one or more specified configurations to be added to those for
 | 
|---|
| 132 |      which BFD support is compiled.  Currently gas cannot use any format other
 | 
|---|
| 133 |      than its compiled-in default, so this option is not very useful.
 | 
|---|
| 134 | 
 | 
|---|
| 135 | `--enable-bfd-assembler'
 | 
|---|
| 136 |      This causes the assembler to use the new code being merged into it to use
 | 
|---|
| 137 |      BFD data structures internally, and use BFD for writing object files.
 | 
|---|
| 138 |      For most targets, this isn't supported yet.  For most targets where it has
 | 
|---|
| 139 |      been done, it's already the default.  So generally you won't need to use
 | 
|---|
| 140 |      this option.
 | 
|---|
| 141 | 
 | 
|---|
| 142 | Supported platforms
 | 
|---|
| 143 | ===================
 | 
|---|
| 144 | 
 | 
|---|
| 145 | At this point I believe gas to be ANSI only code for most target cpu's.  That
 | 
|---|
| 146 | is, there should be relatively few, if any host system dependencies.  So
 | 
|---|
| 147 | porting (as a cross-assembler) to hosts not yet supported should be fairly
 | 
|---|
| 148 | easy.  Porting to a new target shouldn't be too tough if it's a variant of one
 | 
|---|
| 149 | already supported.
 | 
|---|
| 150 | 
 | 
|---|
| 151 | Native assembling should work on:
 | 
|---|
| 152 | 
 | 
|---|
| 153 |         sun3
 | 
|---|
| 154 |         sun4
 | 
|---|
| 155 |         386bsd
 | 
|---|
| 156 |         bsd/386
 | 
|---|
| 157 |         delta (m68k-sysv from Motorola)
 | 
|---|
| 158 |         delta88 (m88k-sysv from Motorola)
 | 
|---|
| 159 |         GNU/linux
 | 
|---|
| 160 |         m68k hpux 8.0 (hpux 7.0 may be a problem)
 | 
|---|
| 161 |         vax bsd, ultrix, vms
 | 
|---|
| 162 |         hp9000s300
 | 
|---|
| 163 |         decstation
 | 
|---|
| 164 |         irix 4
 | 
|---|
| 165 |         irix 5
 | 
|---|
| 166 |         miniframe (m68k-sysv from Convergent Technologies)
 | 
|---|
| 167 |         i386-aix (ps/2)
 | 
|---|
| 168 |         hppa (hpux 4.3bsd, osf1)
 | 
|---|
| 169 |         AIX
 | 
|---|
| 170 |         unixware
 | 
|---|
| 171 |         sco 3.2v4.2
 | 
|---|
| 172 |         sco openserver 5.0 (a.k.a. 3.2v5.0 )
 | 
|---|
| 173 |         sparc solaris
 | 
|---|
| 174 |         ns32k (netbsd, lites)
 | 
|---|
| 175 | 
 | 
|---|
| 176 | I believe that gas as a cross-assembler can currently be targeted for
 | 
|---|
| 177 | most of the above hosts, plus
 | 
|---|
| 178 | 
 | 
|---|
| 179 |         arm
 | 
|---|
| 180 |         decstation-bsd (a.out format, to be used in BSD 4.4)
 | 
|---|
| 181 |         ebmon29k
 | 
|---|
| 182 |         go32 (DOS on i386, with DJGPP -- old a.out version)
 | 
|---|
| 183 |         H8/300, H8/500 (Hitachi)
 | 
|---|
| 184 |         i386-aix (ps/2)
 | 
|---|
| 185 |         i960-coff
 | 
|---|
| 186 |         mips ecoff (decstation-ultrix, iris, mips magnum, mips-idt-ecoff)
 | 
|---|
| 187 |         Mitsubishi d10v and d30v
 | 
|---|
| 188 |         nindy960
 | 
|---|
| 189 |         powerpc EABI
 | 
|---|
| 190 |         SH (Hitachi)
 | 
|---|
| 191 |         sco386
 | 
|---|
| 192 |         TI tic30 and tic80
 | 
|---|
| 193 |         vax bsd or ultrix?
 | 
|---|
| 194 |         vms
 | 
|---|
| 195 |         vxworks68k
 | 
|---|
| 196 |         vxworks960
 | 
|---|
| 197 |         z8000 (Zilog)
 | 
|---|
| 198 | 
 | 
|---|
| 199 | MIPS ECOFF support has been added, but GAS will not run a C-style
 | 
|---|
| 200 | preprocessor.  If you want that, rename your file to have a ".S" suffix, and
 | 
|---|
| 201 | run gcc on it.  Or run "gcc -xassembler-with-cpp foo.s".
 | 
|---|
| 202 | 
 | 
|---|
| 203 | Support for ELF should work now for sparc, hppa, i386, alpha, m68k,
 | 
|---|
| 204 | MIPS, powerpc.
 | 
|---|
| 205 | 
 | 
|---|
| 206 | Support for sequent (ns32k), tahoe, i860 may be suffering from bitrot.
 | 
|---|
| 207 | 
 | 
|---|
| 208 | If you try out gas on some host or target not listed above, please let me know
 | 
|---|
| 209 | the results, so I can update the list.
 | 
|---|
| 210 | 
 | 
|---|
| 211 | Compiler Support Hacks
 | 
|---|
| 212 | ======================
 | 
|---|
| 213 | 
 | 
|---|
| 214 | On a few targets, the assembler has been modified to support a feature
 | 
|---|
| 215 | that is potentially useful when assembling compiler output, but which
 | 
|---|
| 216 | may confuse assembly language programmers.  If assembler encounters a
 | 
|---|
| 217 | .word pseudo-op of the form symbol1-symbol2 (the difference of two
 | 
|---|
| 218 | symbols), and the difference of those two symbols will not fit in 16
 | 
|---|
| 219 | bits, the assembler will create a branch around a long jump to
 | 
|---|
| 220 | symbol1, and insert this into the output directly before the next
 | 
|---|
| 221 | label: The .word will (instead of containing garbage, or giving an
 | 
|---|
| 222 | error message) contain (the address of the long jump)-symbol2.  This
 | 
|---|
| 223 | allows the assembler to assemble jump tables that jump to locations
 | 
|---|
| 224 | very far away into code that works properly.  If the next label is
 | 
|---|
| 225 | more than 32K away from the .word, you lose (silently); RMS claims
 | 
|---|
| 226 | this will never happen.  If the -K option is given, you will get a
 | 
|---|
| 227 | warning message when this happens.
 | 
|---|
| 228 | 
 | 
|---|
| 229 | 
 | 
|---|
| 230 | REPORTING BUGS IN GAS
 | 
|---|
| 231 | =====================
 | 
|---|
| 232 | 
 | 
|---|
| 233 | Bugs in gas should be reported to:
 | 
|---|
| 234 | 
 | 
|---|
| 235 |    bug-gnu-utils@gnu.org.
 | 
|---|
| 236 | 
 | 
|---|
| 237 | They may be cross-posted to gcc-bugs@gnu.org if they affect the use of
 | 
|---|
| 238 | gas with gcc.  They should not be reported just to gcc-bugs, since not
 | 
|---|
| 239 | all of the maintainers read that list.
 | 
|---|
| 240 | 
 | 
|---|
| 241 | If you report a bug in GAS, please remember to include:
 | 
|---|
| 242 | 
 | 
|---|
| 243 | A description of exactly what went wrong, and exactly what should have
 | 
|---|
| 244 | happened instead.
 | 
|---|
| 245 | 
 | 
|---|
| 246 | The type of machine (VAX, 68020, etc) and operating system (BSD, SunOS, DYNIX,
 | 
|---|
| 247 | VMS, etc) GAS was running on.
 | 
|---|
| 248 | 
 | 
|---|
| 249 | The configuration name(s) given to the "configure" script.  The
 | 
|---|
| 250 | "config.status" file should have this information.
 | 
|---|
| 251 | 
 | 
|---|
| 252 | The options given to GAS at run time.
 | 
|---|
| 253 | 
 | 
|---|
| 254 | The actual input file that caused the problem.
 | 
|---|
| 255 | 
 | 
|---|
| 256 | It is silly to report a bug in GAS without including an input file for GAS.
 | 
|---|
| 257 | Don't ask us to generate the file just because you made it from files you
 | 
|---|
| 258 | think we have access to.
 | 
|---|
| 259 | 
 | 
|---|
| 260 | 1. You might be mistaken.
 | 
|---|
| 261 | 2. It might take us a lot of time to install things to regenerate that file.
 | 
|---|
| 262 | 3. We might get a different file from the one you got, and might not see any
 | 
|---|
| 263 |    bug.
 | 
|---|
| 264 | 
 | 
|---|
| 265 | To save us these delays and uncertainties, always send the input file for the
 | 
|---|
| 266 | program that failed.  A smaller test case that demonstrates the problem is of
 | 
|---|
| 267 | course preferable, but be sure it is a complete input file, and that it really
 | 
|---|
| 268 | does demonstrate the problem; but if paring it down would cause large delays
 | 
|---|
| 269 | in filing the bug report, don't bother.
 | 
|---|
| 270 | 
 | 
|---|
| 271 | If the input file is very large, and you are on the internet, you may want to
 | 
|---|
| 272 | make it available for anonymous FTP instead of mailing it.  If you do, include
 | 
|---|
| 273 | instructions for FTP'ing it in your bug report.
 | 
|---|
| 274 | 
 | 
|---|
| 275 | If you expect to be contributing a large number of test cases, it would be
 | 
|---|
| 276 | helpful if you would look at the test suite included in the release (based on
 | 
|---|
| 277 | the Deja Gnu testing framework, available from the usual ftp sites) and write
 | 
|---|
| 278 | test cases to fit into that framework.  This is certainly not required.
 | 
|---|