| 1 | README for GAS | 
|---|
| 2 |  | 
|---|
| 3 | A number of things have changed since version 1 and the wonderful world of gas | 
|---|
| 4 | looks very different.  There's still a lot of irrelevant garbage lying around | 
|---|
| 5 | that will be cleaned up in time.  Documentation is scarce, as are logs of the | 
|---|
| 6 | changes made since the last gas release.  My apologies, and I'll try to get | 
|---|
| 7 | 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 | standalone `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 targetted for | 
|---|
| 177 | most of the above hosts, plus | 
|---|
| 178 |  | 
|---|
| 179 | decstation-bsd (a.out format, to be used in BSD 4.4) | 
|---|
| 180 | ebmon29k | 
|---|
| 181 | go32 (DOS on i386, with DJGPP -- old a.out version) | 
|---|
| 182 | h8/300, h8/500 (Hitachi) | 
|---|
| 183 | i386-aix (ps/2) | 
|---|
| 184 | i960-coff | 
|---|
| 185 | mips ecoff (decstation-ultrix, iris, mips magnum, mips-idt-ecoff) | 
|---|
| 186 | Mitsubishi d10v and d30v | 
|---|
| 187 | nindy960 | 
|---|
| 188 | powerpc EABI | 
|---|
| 189 | SH (Hitachi) | 
|---|
| 190 | sco386 | 
|---|
| 191 | TI tic30 and tic80 | 
|---|
| 192 | vax bsd or ultrix? | 
|---|
| 193 | vms | 
|---|
| 194 | vxworks68k | 
|---|
| 195 | vxworks960 | 
|---|
| 196 | z8000 (Zilog) | 
|---|
| 197 |  | 
|---|
| 198 | MIPS ECOFF support has been added, but GAS will not run a C-style | 
|---|
| 199 | preprocessor.  If you want that, rename your file to have a ".S" suffix, and | 
|---|
| 200 | run gcc on it.  Or run "gcc -xassembler-with-cpp foo.s". | 
|---|
| 201 |  | 
|---|
| 202 | Support for ELF should work now for sparc, hppa, i386, alpha, m68k, | 
|---|
| 203 | MIPS, powerpc. | 
|---|
| 204 |  | 
|---|
| 205 | Support for sequent (ns32k), tahoe, i860, m88k may be suffering from bitrot. | 
|---|
| 206 |  | 
|---|
| 207 | If you try out gas on some host or target not listed above, please let me know | 
|---|
| 208 | the results, so I can update the list. | 
|---|
| 209 |  | 
|---|
| 210 | Compiler Support Hacks | 
|---|
| 211 | ====================== | 
|---|
| 212 |  | 
|---|
| 213 | On a few targets, the assembler has been modified to support a feature | 
|---|
| 214 | that is potentially useful when assembling compiler output, but which | 
|---|
| 215 | may confuse assembly language programmers.  If assembler encounters a | 
|---|
| 216 | .word pseudo-op of the form symbol1-symbol2 (the difference of two | 
|---|
| 217 | symbols), and the difference of those two symbols will not fit in 16 | 
|---|
| 218 | bits, the assembler will create a branch around a long jump to | 
|---|
| 219 | symbol1, and insert this into the output directly before the next | 
|---|
| 220 | label: The .word will (instead of containing garbage, or giving an | 
|---|
| 221 | error message) contain (the address of the long jump)-symbol2.  This | 
|---|
| 222 | allows the assembler to assemble jump tables that jump to locations | 
|---|
| 223 | very far away into code that works properly.  If the next label is | 
|---|
| 224 | more than 32K away from the .word, you lose (silently); RMS claims | 
|---|
| 225 | this will never happen.  If the -K option is given, you will get a | 
|---|
| 226 | warning message when this happens. | 
|---|
| 227 |  | 
|---|
| 228 |  | 
|---|
| 229 | REPORTING BUGS IN GAS | 
|---|
| 230 | ===================== | 
|---|
| 231 |  | 
|---|
| 232 | Bugs in gas should be reported to bug-binutils@gnu.org.  They may be | 
|---|
| 233 | cross-posted to bug-gcc if they affect the use of gas with gcc.  They | 
|---|
| 234 | should not be reported just to bug-gcc, since I don't read that list, | 
|---|
| 235 | and therefore wouldn't see them. | 
|---|
| 236 |  | 
|---|
| 237 | If you report a bug in GAS, please remember to include: | 
|---|
| 238 |  | 
|---|
| 239 | A description of exactly what went wrong, and exactly what should have | 
|---|
| 240 | happened instead. | 
|---|
| 241 |  | 
|---|
| 242 | The type of machine (VAX, 68020, etc) and operating system (BSD, SunOS, DYNIX, | 
|---|
| 243 | VMS, etc) GAS was running on. | 
|---|
| 244 |  | 
|---|
| 245 | The configuration name(s) given to the "configure" script.  The | 
|---|
| 246 | "config.status" file should have this information. | 
|---|
| 247 |  | 
|---|
| 248 | The options given to GAS at run time. | 
|---|
| 249 |  | 
|---|
| 250 | The actual input file that caused the problem. | 
|---|
| 251 |  | 
|---|
| 252 | It is silly to report a bug in GAS without including an input file for GAS. | 
|---|
| 253 | Don't ask us to generate the file just because you made it from files you | 
|---|
| 254 | think we have access to. | 
|---|
| 255 |  | 
|---|
| 256 | 1. You might be mistaken. | 
|---|
| 257 | 2. It might take us a lot of time to install things to regenerate that file. | 
|---|
| 258 | 3. We might get a different file from the one you got, and might not see any | 
|---|
| 259 | bug. | 
|---|
| 260 |  | 
|---|
| 261 | To save us these delays and uncertainties, always send the input file for the | 
|---|
| 262 | program that failed.  A smaller test case that demonstrates the problem is of | 
|---|
| 263 | course preferable, but be sure it is a complete input file, and that it really | 
|---|
| 264 | does demonstrate the problem; but if paring it down would cause large delays | 
|---|
| 265 | in filing the bug report, don't bother. | 
|---|
| 266 |  | 
|---|
| 267 | If the input file is very large, and you are on the internet, you may want to | 
|---|
| 268 | make it avaliable for anonymous FTP instead of mailing it.  If you do, include | 
|---|
| 269 | instructions for FTP'ing it in your bug report. | 
|---|
| 270 |  | 
|---|
| 271 | If you expect to be contributing a large number of test cases, it would be | 
|---|
| 272 | helpful if you would look at the test suite included in the release (based on | 
|---|
| 273 | the Deja Gnu testing framework, available from the usual ftp sites) and write | 
|---|
| 274 | test cases to fit into that framework.  This is certainly not required. | 
|---|