]>
Commit | Line | Data |
---|---|---|
252b5132 RH |
1 | README for GAS |
2 | ||
1b577b00 NC |
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. | |
252b5132 RH |
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 | |
1b577b00 | 34 | stand-alone `info' program, available as part of the GNU Texinfo distribution. |
252b5132 RH |
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 | ||
1b577b00 | 145 | At this point I believe gas to be ANSI only code for most target cpu's. That |
252b5132 RH |
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 | ||
1b577b00 | 176 | I believe that gas as a cross-assembler can currently be targeted for |
252b5132 RH |
177 | most of the above hosts, plus |
178 | ||
1b577b00 | 179 | arm |
252b5132 RH |
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) | |
c03099e6 | 183 | H8/300, H8/500 (Hitachi) |
252b5132 RH |
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 | ||
464bb47c | 206 | Support for sequent (ns32k), tahoe, i860 may be suffering from bitrot. |
252b5132 RH |
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 | ||
1b577b00 NC |
233 | Bugs in gas should be reported to: |
234 | ||
235 | [email protected]. | |
236 | ||
237 | They may be cross-posted to [email protected] 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. | |
252b5132 RH |
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 | |
1b577b00 | 272 | make it available for anonymous FTP instead of mailing it. If you do, include |
252b5132 RH |
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. |