| 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-binutils@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 | See ../binutils/README for what we need in a bug report. |