source: trunk/third/gcc/gcc.info-23 @ 8834

Revision 8834, 50.1 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r8833, which included commits to RCS files with non-trunk default branches.
Line 
1This is Info file gcc.info, produced by Makeinfo-1.55 from the input
2file gcc.texi.
3
4   This file documents the use and the internals of the GNU compiler.
5
6   Published by the Free Software Foundation 59 Temple Place - Suite 330
7Boston, MA 02111-1307 USA
8
9   Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software
10Foundation, Inc.
11
12   Permission is granted to make and distribute verbatim copies of this
13manual provided the copyright notice and this permission notice are
14preserved on all copies.
15
16   Permission is granted to copy and distribute modified versions of
17this manual under the conditions for verbatim copying, provided also
18that the sections entitled "GNU General Public License," "Funding for
19Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
20included exactly as in the original, and provided that the entire
21resulting derived work is distributed under the terms of a permission
22notice identical to this one.
23
24   Permission is granted to copy and distribute translations of this
25manual into another language, under the above conditions for modified
26versions, except that the sections entitled "GNU General Public
27License," "Funding for Free Software," and "Protect Your Freedom--Fight
28`Look And Feel'", and this permission notice, may be included in
29translations approved by the Free Software Foundation instead of in the
30original English.
31
32
33File: gcc.info,  Node: Uninitialized Data,  Next: Label Output,  Prev: Data Output,  Up: Assembler Format
34
35Output of Uninitialized Variables
36---------------------------------
37
38   Each of the macros in this section is used to do the whole job of
39outputting a single uninitialized variable.
40
41`ASM_OUTPUT_COMMON (STREAM, NAME, SIZE, ROUNDED)'
42     A C statement (sans semicolon) to output to the stdio stream
43     STREAM the assembler definition of a common-label named NAME whose
44     size is SIZE bytes.  The variable ROUNDED is the size rounded up
45     to whatever alignment the caller wants.
46
47     Use the expression `assemble_name (STREAM, NAME)' to output the
48     name itself; before and after that, output the additional
49     assembler syntax for defining the name, and a newline.
50
51     This macro controls how the assembler definitions of uninitialized
52     global variables are output.
53
54`ASM_OUTPUT_ALIGNED_COMMON (STREAM, NAME, SIZE, ALIGNMENT)'
55     Like `ASM_OUTPUT_COMMON' except takes the required alignment as a
56     separate, explicit argument.  If you define this macro, it is used
57     in place of `ASM_OUTPUT_COMMON', and gives you more flexibility in
58     handling the required alignment of the variable.  The alignment is
59     specified as the number of bits.
60
61`ASM_OUTPUT_SHARED_COMMON (STREAM, NAME, SIZE, ROUNDED)'
62     If defined, it is similar to `ASM_OUTPUT_COMMON', except that it
63     is used when NAME is shared.  If not defined, `ASM_OUTPUT_COMMON'
64     will be used.
65
66`ASM_OUTPUT_LOCAL (STREAM, NAME, SIZE, ROUNDED)'
67     A C statement (sans semicolon) to output to the stdio stream
68     STREAM the assembler definition of a local-common-label named NAME
69     whose size is SIZE bytes.  The variable ROUNDED is the size
70     rounded up to whatever alignment the caller wants.
71
72     Use the expression `assemble_name (STREAM, NAME)' to output the
73     name itself; before and after that, output the additional
74     assembler syntax for defining the name, and a newline.
75
76     This macro controls how the assembler definitions of uninitialized
77     static variables are output.
78
79`ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGNMENT)'
80     Like `ASM_OUTPUT_LOCAL' except takes the required alignment as a
81     separate, explicit argument.  If you define this macro, it is used
82     in place of `ASM_OUTPUT_LOCAL', and gives you more flexibility in
83     handling the required alignment of the variable.  The alignment is
84     specified as the number of bits.
85
86`ASM_OUTPUT_SHARED_LOCAL (STREAM, NAME, SIZE, ROUNDED)'
87     If defined, it is similar to `ASM_OUTPUT_LOCAL', except that it is
88     used when NAME is shared.  If not defined, `ASM_OUTPUT_LOCAL' will
89     be used.
90
91
92File: gcc.info,  Node: Label Output,  Next: Initialization,  Prev: Uninitialized Data,  Up: Assembler Format
93
94Output and Generation of Labels
95-------------------------------
96
97   This is about outputting labels.
98
99`ASM_OUTPUT_LABEL (STREAM, NAME)'
100     A C statement (sans semicolon) to output to the stdio stream
101     STREAM the assembler definition of a label named NAME.  Use the
102     expression `assemble_name (STREAM, NAME)' to output the name
103     itself; before and after that, output the additional assembler
104     syntax for defining the name, and a newline.
105
106`ASM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL)'
107     A C statement (sans semicolon) to output to the stdio stream
108     STREAM any text necessary for declaring the name NAME of a
109     function which is being defined.  This macro is responsible for
110     outputting the label definition (perhaps using
111     `ASM_OUTPUT_LABEL').  The argument DECL is the `FUNCTION_DECL'
112     tree node representing the function.
113
114     If this macro is not defined, then the function name is defined in
115     the usual manner as a label (by means of `ASM_OUTPUT_LABEL').
116
117`ASM_DECLARE_FUNCTION_SIZE (STREAM, NAME, DECL)'
118     A C statement (sans semicolon) to output to the stdio stream
119     STREAM any text necessary for declaring the size of a function
120     which is being defined.  The argument NAME is the name of the
121     function.  The argument DECL is the `FUNCTION_DECL' tree node
122     representing the function.
123
124     If this macro is not defined, then the function size is not
125     defined.
126
127`ASM_DECLARE_OBJECT_NAME (STREAM, NAME, DECL)'
128     A C statement (sans semicolon) to output to the stdio stream
129     STREAM any text necessary for declaring the name NAME of an
130     initialized variable which is being defined.  This macro must
131     output the label definition (perhaps using `ASM_OUTPUT_LABEL').
132     The argument DECL is the `VAR_DECL' tree node representing the
133     variable.
134
135     If this macro is not defined, then the variable name is defined in
136     the usual manner as a label (by means of `ASM_OUTPUT_LABEL').
137
138`ASM_FINISH_DECLARE_OBJECT (STREAM, DECL, TOPLEVEL, ATEND)'
139     A C statement (sans semicolon) to finish up declaring a variable
140     name once the compiler has processed its initializer fully and
141     thus has had a chance to determine the size of an array when
142     controlled by an initializer.  This is used on systems where it's
143     necessary to declare something about the size of the object.
144
145     If you don't define this macro, that is equivalent to defining it
146     to do nothing.
147
148`ASM_GLOBALIZE_LABEL (STREAM, NAME)'
149     A C statement (sans semicolon) to output to the stdio stream
150     STREAM some commands that will make the label NAME global; that
151     is, available for reference from other files.  Use the expression
152     `assemble_name (STREAM, NAME)' to output the name itself; before
153     and after that, output the additional assembler syntax for making
154     that name global, and a newline.
155
156`ASM_WEAKEN_LABEL'
157     A C statement (sans semicolon) to output to the stdio stream
158     STREAM some commands that will make the label NAME weak; that is,
159     available for reference from other files but only used if no other
160     definition is available.  Use the expression `assemble_name
161     (STREAM, NAME)' to output the name itself; before and after that,
162     output the additional assembler syntax for making that name weak,
163     and a newline.
164
165     If you don't define this macro, GNU CC will not support weak
166     symbols and you should not define the `SUPPORTS_WEAK' macro.
167
168`SUPPORTS_WEAK'
169     A C expression which evaluates to true if the target supports weak
170     symbols.
171
172     If you don't define this macro, `defaults.h' provides a default
173     definition.  If `ASM_WEAKEN_LABEL' is defined, the default
174     definition is `1'; otherwise, it is `0'.  Define this macro if you
175     want to control weak symbol support with a compiler flag such as
176     `-melf'.
177
178`ASM_OUTPUT_EXTERNAL (STREAM, DECL, NAME)'
179     A C statement (sans semicolon) to output to the stdio stream
180     STREAM any text necessary for declaring the name of an external
181     symbol named NAME which is referenced in this compilation but not
182     defined.  The value of DECL is the tree node for the declaration.
183
184     This macro need not be defined if it does not need to output
185     anything.  The GNU assembler and most Unix assemblers don't
186     require anything.
187
188`ASM_OUTPUT_EXTERNAL_LIBCALL (STREAM, SYMREF)'
189     A C statement (sans semicolon) to output on STREAM an assembler
190     pseudo-op to declare a library function name external.  The name
191     of the library function is given by SYMREF, which has type `rtx'
192     and is a `symbol_ref'.
193
194     This macro need not be defined if it does not need to output
195     anything.  The GNU assembler and most Unix assemblers don't
196     require anything.
197
198`ASM_OUTPUT_LABELREF (STREAM, NAME)'
199     A C statement (sans semicolon) to output to the stdio stream
200     STREAM a reference in assembler syntax to a label named NAME.
201     This should add `_' to the front of the name, if that is customary
202     on your operating system, as it is in most Berkeley Unix systems.
203     This macro is used in `assemble_name'.
204
205`ASM_OUTPUT_INTERNAL_LABEL (STREAM, PREFIX, NUM)'
206     A C statement to output to the stdio stream STREAM a label whose
207     name is made from the string PREFIX and the number NUM.
208
209     It is absolutely essential that these labels be distinct from the
210     labels used for user-level functions and variables.  Otherwise,
211     certain programs will have name conflicts with internal labels.
212
213     It is desirable to exclude internal labels from the symbol table
214     of the object file.  Most assemblers have a naming convention for
215     labels that should be excluded; on many systems, the letter `L' at
216     the beginning of a label has this effect.  You should find out what
217     convention your system uses, and follow it.
218
219     The usual definition of this macro is as follows:
220
221          fprintf (STREAM, "L%s%d:\n", PREFIX, NUM)
222
223`ASM_GENERATE_INTERNAL_LABEL (STRING, PREFIX, NUM)'
224     A C statement to store into the string STRING a label whose name
225     is made from the string PREFIX and the number NUM.
226
227     This string, when output subsequently by `assemble_name', should
228     produce the output that `ASM_OUTPUT_INTERNAL_LABEL' would produce
229     with the same PREFIX and NUM.
230
231     If the string begins with `*', then `assemble_name' will output
232     the rest of the string unchanged.  It is often convenient for
233     `ASM_GENERATE_INTERNAL_LABEL' to use `*' in this way.  If the
234     string doesn't start with `*', then `ASM_OUTPUT_LABELREF' gets to
235     output the string, and may change it.  (Of course,
236     `ASM_OUTPUT_LABELREF' is also part of your machine description, so
237     you should know what it does on your machine.)
238
239`ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER)'
240     A C expression to assign to OUTVAR (which is a variable of type
241     `char *') a newly allocated string made from the string NAME and
242     the number NUMBER, with some suitable punctuation added.  Use
243     `alloca' to get space for the string.
244
245     The string will be used as an argument to `ASM_OUTPUT_LABELREF' to
246     produce an assembler label for an internal static variable whose
247     name is NAME.  Therefore, the string must be such as to result in
248     valid assembler code.  The argument NUMBER is different each time
249     this macro is executed; it prevents conflicts between
250     similarly-named internal static variables in different scopes.
251
252     Ideally this string should not be a valid C identifier, to prevent
253     any conflict with the user's own symbols.  Most assemblers allow
254     periods or percent signs in assembler symbols; putting at least
255     one of these between the name and the number will suffice.
256
257`ASM_OUTPUT_DEF (STREAM, NAME, VALUE)'
258     A C statement to output to the stdio stream STREAM assembler code
259     which defines (equates) the symbol NAME to have the value VALUE.
260
261     If SET_ASM_OP is defined, a default definition is provided which is
262     correct for most systems.
263
264`OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME, SEL_NAME)'
265     Define this macro to override the default assembler names used for
266     Objective C methods.
267
268     The default name is a unique method number followed by the name of
269     the class (e.g. `_1_Foo').  For methods in categories, the name of
270     the category is also included in the assembler name (e.g.
271     `_1_Foo_Bar').
272
273     These names are safe on most systems, but make debugging difficult
274     since the method's selector is not present in the name.
275     Therefore, particular systems define other ways of computing names.
276
277     BUF is an expression of type `char *' which gives you a buffer in
278     which to store the name; its length is as long as CLASS_NAME,
279     CAT_NAME and SEL_NAME put together, plus 50 characters extra.
280
281     The argument IS_INST specifies whether the method is an instance
282     method or a class method; CLASS_NAME is the name of the class;
283     CAT_NAME is the name of the category (or NULL if the method is not
284     in a category); and SEL_NAME is the name of the selector.
285
286     On systems where the assembler can handle quoted names, you can
287     use this macro to provide more human-readable names.
288
289
290File: gcc.info,  Node: Initialization,  Next: Macros for Initialization,  Prev: Label Output,  Up: Assembler Format
291
292How Initialization Functions Are Handled
293----------------------------------------
294
295   The compiled code for certain languages includes "constructors"
296(also called "initialization routines")--functions to initialize data
297in the program when the program is started.  These functions need to be
298called before the program is "started"--that is to say, before `main'
299is called.
300
301   Compiling some languages generates "destructors" (also called
302"termination routines") that should be called when the program
303terminates.
304
305   To make the initialization and termination functions work, the
306compiler must output something in the assembler code to cause those
307functions to be called at the appropriate time.  When you port the
308compiler to a new system, you need to specify how to do this.
309
310   There are two major ways that GCC currently supports the execution of
311initialization and termination functions.  Each way has two variants.
312Much of the structure is common to all four variations.
313
314   The linker must build two lists of these functions--a list of
315initialization functions, called `__CTOR_LIST__', and a list of
316termination functions, called `__DTOR_LIST__'.
317
318   Each list always begins with an ignored function pointer (which may
319hold 0, -1, or a count of the function pointers after it, depending on
320the environment).  This is followed by a series of zero or more function
321pointers to constructors (or destructors), followed by a function
322pointer containing zero.
323
324   Depending on the operating system and its executable file format,
325either `crtstuff.c' or `libgcc2.c' traverses these lists at startup
326time and exit time.  Constructors are called in reverse order of the
327list; destructors in forward order.
328
329   The best way to handle static constructors works only for object file
330formats which provide arbitrarily-named sections.  A section is set
331aside for a list of constructors, and another for a list of destructors.
332Traditionally these are called `.ctors' and `.dtors'.  Each object file
333that defines an initialization function also puts a word in the
334constructor section to point to that function.  The linker accumulates
335all these words into one contiguous `.ctors' section.  Termination
336functions are handled similarly.
337
338   To use this method, you need appropriate definitions of the macros
339`ASM_OUTPUT_CONSTRUCTOR' and `ASM_OUTPUT_DESTRUCTOR'.  Usually you can
340get them by including `svr4.h'.
341
342   When arbitrary sections are available, there are two variants,
343depending upon how the code in `crtstuff.c' is called.  On systems that
344support an "init" section which is executed at program startup, parts
345of `crtstuff.c' are compiled into that section.  The program is linked
346by the `gcc' driver like this:
347
348     ld -o OUTPUT_FILE crtbegin.o ... crtend.o -lgcc
349
350   The head of a function (`__do_global_ctors') appears in the init
351section of `crtbegin.o'; the remainder of the function appears in the
352init section of `crtend.o'.  The linker will pull these two parts of
353the section together, making a whole function.  If any of the user's
354object files linked into the middle of it contribute code, then that
355code will be executed as part of the body of `__do_global_ctors'.
356
357   To use this variant, you must define the `INIT_SECTION_ASM_OP' macro
358properly.
359
360   If no init section is available, do not define
361`INIT_SECTION_ASM_OP'.  Then `__do_global_ctors' is built into the text
362section like all other functions, and resides in `libgcc.a'.  When GCC
363compiles any function called `main', it inserts a procedure call to
364`__main' as the first executable code after the function prologue.  The
365`__main' function, also defined in `libgcc2.c', simply calls
366`__do_global_ctors'.
367
368   In file formats that don't support arbitrary sections, there are
369again two variants.  In the simplest variant, the GNU linker (GNU `ld')
370and an `a.out' format must be used.  In this case,
371`ASM_OUTPUT_CONSTRUCTOR' is defined to produce a `.stabs' entry of type
372`N_SETT', referencing the name `__CTOR_LIST__', and with the address of
373the void function containing the initialization code as its value.  The
374GNU linker recognizes this as a request to add the value to a "set";
375the values are accumulated, and are eventually placed in the executable
376as a vector in the format described above, with a leading (ignored)
377count and a trailing zero element.  `ASM_OUTPUT_DESTRUCTOR' is handled
378similarly.  Since no init section is available, the absence of
379`INIT_SECTION_ASM_OP' causes the compilation of `main' to call `__main'
380as above, starting the initialization process.
381
382   The last variant uses neither arbitrary sections nor the GNU linker.
383This is preferable when you want to do dynamic linking and when using
384file formats which the GNU linker does not support, such as `ECOFF'.  In
385this case, `ASM_OUTPUT_CONSTRUCTOR' does not produce an `N_SETT'
386symbol; initialization and termination functions are recognized simply
387by their names.  This requires an extra program in the linkage step,
388called `collect2'.  This program pretends to be the linker, for use
389with GNU CC; it does its job by running the ordinary linker, but also
390arranges to include the vectors of initialization and termination
391functions.  These functions are called via `__main' as described above.
392
393   Choosing among these configuration options has been simplified by a
394set of operating-system-dependent files in the `config' subdirectory.
395These files define all of the relevant parameters.  Usually it is
396sufficient to include one into your specific machine-dependent
397configuration file.  These files are:
398
399`aoutos.h'
400     For operating systems using the `a.out' format.
401
402`next.h'
403     For operating systems using the `MachO' format.
404
405`svr3.h'
406     For System V Release 3 and similar systems using `COFF' format.
407
408`svr4.h'
409     For System V Release 4 and similar systems using `ELF' format.
410
411`vms.h'
412     For the VMS operating system.
413
414   The following section describes the specific macros that control and
415customize the handling of initialization and termination functions.
416
417
418File: gcc.info,  Node: Macros for Initialization,  Next: Instruction Output,  Prev: Initialization,  Up: Assembler Format
419
420Macros Controlling Initialization Routines
421------------------------------------------
422
423   Here are the macros that control how the compiler handles
424initialization and termination functions:
425
426`INIT_SECTION_ASM_OP'
427     If defined, a C string constant for the assembler operation to
428     identify the following data as initialization code.  If not
429     defined, GNU CC will assume such a section does not exist.  When
430     you are using special sections for initialization and termination
431     functions, this macro also controls how `crtstuff.c' and
432     `libgcc2.c' arrange to run the initialization functions.
433
434`HAS_INIT_SECTION'
435     If defined, `main' will not call `__main' as described above.
436     This macro should be defined for systems that control the contents
437     of the init section on a symbol-by-symbol basis, such as OSF/1,
438     and should not be defined explicitly for systems that support
439     `INIT_SECTION_ASM_OP'.
440
441`LD_INIT_SWITCH'
442     If defined, a C string constant for a switch that tells the linker
443     that the following symbol is an initialization routine.
444
445`LD_FINI_SWITCH'
446     If defined, a C string constant for a switch that tells the linker
447     that the following symbol is a finalization routine.
448
449`INVOKE__main'
450     If defined, `main' will call `__main' despite the presence of
451     `INIT_SECTION_ASM_OP'.  This macro should be defined for systems
452     where the init section is not actually run automatically, but is
453     still useful for collecting the lists of constructors and
454     destructors.
455
456`ASM_OUTPUT_CONSTRUCTOR (STREAM, NAME)'
457     Define this macro as a C statement to output on the stream STREAM
458     the assembler code to arrange to call the function named NAME at
459     initialization time.
460
461     Assume that NAME is the name of a C function generated
462     automatically by the compiler.  This function takes no arguments.
463     Use the function `assemble_name' to output the name NAME; this
464     performs any system-specific syntactic transformations such as
465     adding an underscore.
466
467     If you don't define this macro, nothing special is output to
468     arrange to call the function.  This is correct when the function
469     will be called in some other manner--for example, by means of the
470     `collect2' program, which looks through the symbol table to find
471     these functions by their names.
472
473`ASM_OUTPUT_DESTRUCTOR (STREAM, NAME)'
474     This is like `ASM_OUTPUT_CONSTRUCTOR' but used for termination
475     functions rather than initialization functions.
476
477   If your system uses `collect2' as the means of processing
478constructors, then that program normally uses `nm' to scan an object
479file for constructor functions to be called.  On certain kinds of
480systems, you can define these macros to make `collect2' work faster
481(and, in some cases, make it work at all):
482
483`OBJECT_FORMAT_COFF'
484     Define this macro if the system uses COFF (Common Object File
485     Format) object files, so that `collect2' can assume this format
486     and scan object files directly for dynamic constructor/destructor
487     functions.
488
489`OBJECT_FORMAT_ROSE'
490     Define this macro if the system uses ROSE format object files, so
491     that `collect2' can assume this format and scan object files
492     directly for dynamic constructor/destructor functions.
493
494     These macros are effective only in a native compiler; `collect2' as
495     part of a cross compiler always uses `nm' for the target machine.
496
497`REAL_NM_FILE_NAME'
498     Define this macro as a C string constant containing the file name
499     to use to execute `nm'.  The default is to search the path
500     normally for `nm'.
501
502     If your system supports shared libraries and has a program to list
503     the dynamic dependencies of a given library or executable, you can
504     define these macros to enable support for running initialization
505     and termination functions in shared libraries:
506
507`LDD_SUFFIX'
508     Define this macro to a C string constant containing the name of the
509     program which lists dynamic dependencies, like `"ldd"' under SunOS
510     4.
511
512`PARSE_LDD_OUTPUT (PTR)'
513     Define this macro to be C code that extracts filenames from the
514     output of the program denoted by `LDD_SUFFIX'.  PTR is a variable
515     of type `char *' that points to the beginning of a line of output
516     from `LDD_SUFFIX'.  If the line lists a dynamic dependency, the
517     code must advance PTR to the beginning of the filename on that
518     line.  Otherwise, it must set PTR to `NULL'.
519
520
521File: gcc.info,  Node: Instruction Output,  Next: Dispatch Tables,  Prev: Macros for Initialization,  Up: Assembler Format
522
523Output of Assembler Instructions
524--------------------------------
525
526   This describes assembler instruction output.
527
528`REGISTER_NAMES'
529     A C initializer containing the assembler's names for the machine
530     registers, each one as a C string constant.  This is what
531     translates register numbers in the compiler into assembler
532     language.
533
534`ADDITIONAL_REGISTER_NAMES'
535     If defined, a C initializer for an array of structures containing
536     a name and a register number.  This macro defines additional names
537     for hard registers, thus allowing the `asm' option in declarations
538     to refer to registers using alternate names.
539
540`ASM_OUTPUT_OPCODE (STREAM, PTR)'
541     Define this macro if you are using an unusual assembler that
542     requires different names for the machine instructions.
543
544     The definition is a C statement or statements which output an
545     assembler instruction opcode to the stdio stream STREAM.  The
546     macro-operand PTR is a variable of type `char *' which points to
547     the opcode name in its "internal" form--the form that is written
548     in the machine description.  The definition should output the
549     opcode name to STREAM, performing any translation you desire, and
550     increment the variable PTR to point at the end of the opcode so
551     that it will not be output twice.
552
553     In fact, your macro definition may process less than the entire
554     opcode name, or more than the opcode name; but if you want to
555     process text that includes `%'-sequences to substitute operands,
556     you must take care of the substitution yourself.  Just be sure to
557     increment PTR over whatever text should not be output normally.
558
559     If you need to look at the operand values, they can be found as the
560     elements of `recog_operand'.
561
562     If the macro definition does nothing, the instruction is output in
563     the usual way.
564
565`FINAL_PRESCAN_INSN (INSN, OPVEC, NOPERANDS)'
566     If defined, a C statement to be executed just prior to the output
567     of assembler code for INSN, to modify the extracted operands so
568     they will be output differently.
569
570     Here the argument OPVEC is the vector containing the operands
571     extracted from INSN, and NOPERANDS is the number of elements of
572     the vector which contain meaningful data for this insn.  The
573     contents of this vector are what will be used to convert the insn
574     template into assembler code, so you can change the assembler
575     output by changing the contents of the vector.
576
577     This macro is useful when various assembler syntaxes share a single
578     file of instruction patterns; by defining this macro differently,
579     you can cause a large class of instructions to be output
580     differently (such as with rearranged operands).  Naturally,
581     variations in assembler syntax affecting individual insn patterns
582     ought to be handled by writing conditional output routines in
583     those patterns.
584
585     If this macro is not defined, it is equivalent to a null statement.
586
587`PRINT_OPERAND (STREAM, X, CODE)'
588     A C compound statement to output to stdio stream STREAM the
589     assembler syntax for an instruction operand X.  X is an RTL
590     expression.
591
592     CODE is a value that can be used to specify one of several ways of
593     printing the operand.  It is used when identical operands must be
594     printed differently depending on the context.  CODE comes from the
595     `%' specification that was used to request printing of the
596     operand.  If the specification was just `%DIGIT' then CODE is 0;
597     if the specification was `%LTR DIGIT' then CODE is the ASCII code
598     for LTR.
599
600     If X is a register, this macro should print the register's name.
601     The names can be found in an array `reg_names' whose type is `char
602     *[]'.  `reg_names' is initialized from `REGISTER_NAMES'.
603
604     When the machine description has a specification `%PUNCT' (a `%'
605     followed by a punctuation character), this macro is called with a
606     null pointer for X and the punctuation character for CODE.
607
608`PRINT_OPERAND_PUNCT_VALID_P (CODE)'
609     A C expression which evaluates to true if CODE is a valid
610     punctuation character for use in the `PRINT_OPERAND' macro.  If
611     `PRINT_OPERAND_PUNCT_VALID_P' is not defined, it means that no
612     punctuation characters (except for the standard one, `%') are used
613     in this way.
614
615`PRINT_OPERAND_ADDRESS (STREAM, X)'
616     A C compound statement to output to stdio stream STREAM the
617     assembler syntax for an instruction operand that is a memory
618     reference whose address is X.  X is an RTL expression.
619
620     On some machines, the syntax for a symbolic address depends on the
621     section that the address refers to.  On these machines, define the
622     macro `ENCODE_SECTION_INFO' to store the information into the
623     `symbol_ref', and then check for it here.  *Note Assembler
624     Format::.
625
626`DBR_OUTPUT_SEQEND(FILE)'
627     A C statement, to be executed after all slot-filler instructions
628     have been output.  If necessary, call `dbr_sequence_length' to
629     determine the number of slots filled in a sequence (zero if not
630     currently outputting a sequence), to decide how many no-ops to
631     output, or whatever.
632
633     Don't define this macro if it has nothing to do, but it is helpful
634     in reading assembly output if the extent of the delay sequence is
635     made explicit (e.g. with white space).
636
637     Note that output routines for instructions with delay slots must be
638     prepared to deal with not being output as part of a sequence (i.e.
639     when the scheduling pass is not run, or when no slot fillers could
640     be found.)  The variable `final_sequence' is null when not
641     processing a sequence, otherwise it contains the `sequence' rtx
642     being output.
643
644`REGISTER_PREFIX'
645`LOCAL_LABEL_PREFIX'
646`USER_LABEL_PREFIX'
647`IMMEDIATE_PREFIX'
648     If defined, C string expressions to be used for the `%R', `%L',
649     `%U', and `%I' options of `asm_fprintf' (see `final.c').  These
650     are useful when a single `md' file must support multiple assembler
651     formats.  In that case, the various `tm.h' files can define these
652     macros differently.
653
654`ASSEMBLER_DIALECT'
655     If your target supports multiple dialects of assembler language
656     (such as different opcodes), define this macro as a C expression
657     that gives the numeric index of the assembler language dialect to
658     use, with zero as the first variant.
659
660     If this macro is defined, you may use
661     `{option0|option1|option2...}' constructs in the output templates
662     of patterns (*note Output Template::.) or in the first argument of
663     `asm_fprintf'.  This construct outputs `option0', `option1' or
664     `option2', etc., if the value of `ASSEMBLER_DIALECT' is zero, one
665     or two, etc.  Any special characters within these strings retain
666     their usual meaning.
667
668     If you do not define this macro, the characters `{', `|' and `}'
669     do not have any special meaning when used in templates or operands
670     to `asm_fprintf'.
671
672     Define the macros `REGISTER_PREFIX', `LOCAL_LABEL_PREFIX',
673     `USER_LABEL_PREFIX' and `IMMEDIATE_PREFIX' if you can express the
674     variations in assemble language syntax with that mechanism.  Define
675     `ASSEMBLER_DIALECT' and use the `{option0|option1}' syntax if the
676     syntax variant are larger and involve such things as different
677     opcodes or operand order.
678
679`ASM_OUTPUT_REG_PUSH (STREAM, REGNO)'
680     A C expression to output to STREAM some assembler code which will
681     push hard register number REGNO onto the stack.  The code need not
682     be optimal, since this macro is used only when profiling.
683
684`ASM_OUTPUT_REG_POP (STREAM, REGNO)'
685     A C expression to output to STREAM some assembler code which will
686     pop hard register number REGNO off of the stack.  The code need
687     not be optimal, since this macro is used only when profiling.
688
689
690File: gcc.info,  Node: Dispatch Tables,  Next: Alignment Output,  Prev: Instruction Output,  Up: Assembler Format
691
692Output of Dispatch Tables
693-------------------------
694
695   This concerns dispatch tables.
696
697`ASM_OUTPUT_ADDR_DIFF_ELT (STREAM, VALUE, REL)'
698     This macro should be provided on machines where the addresses in a
699     dispatch table are relative to the table's own address.
700
701     The definition should be a C statement to output to the stdio
702     stream STREAM an assembler pseudo-instruction to generate a
703     difference between two labels.  VALUE and REL are the numbers of
704     two internal labels.  The definitions of these labels are output
705     using `ASM_OUTPUT_INTERNAL_LABEL', and they must be printed in the
706     same way here.  For example,
707
708          fprintf (STREAM, "\t.word L%d-L%d\n",
709                   VALUE, REL)
710
711`ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)'
712     This macro should be provided on machines where the addresses in a
713     dispatch table are absolute.
714
715     The definition should be a C statement to output to the stdio
716     stream STREAM an assembler pseudo-instruction to generate a
717     reference to a label.  VALUE is the number of an internal label
718     whose definition is output using `ASM_OUTPUT_INTERNAL_LABEL'.  For
719     example,
720
721          fprintf (STREAM, "\t.word L%d\n", VALUE)
722
723`ASM_OUTPUT_CASE_LABEL (STREAM, PREFIX, NUM, TABLE)'
724     Define this if the label before a jump-table needs to be output
725     specially.  The first three arguments are the same as for
726     `ASM_OUTPUT_INTERNAL_LABEL'; the fourth argument is the jump-table
727     which follows (a `jump_insn' containing an `addr_vec' or
728     `addr_diff_vec').
729
730     This feature is used on system V to output a `swbeg' statement for
731     the table.
732
733     If this macro is not defined, these labels are output with
734     `ASM_OUTPUT_INTERNAL_LABEL'.
735
736`ASM_OUTPUT_CASE_END (STREAM, NUM, TABLE)'
737     Define this if something special must be output at the end of a
738     jump-table.  The definition should be a C statement to be executed
739     after the assembler code for the table is written.  It should write
740     the appropriate code to stdio stream STREAM.  The argument TABLE
741     is the jump-table insn, and NUM is the label-number of the
742     preceding label.
743
744     If this macro is not defined, nothing special is output at the end
745     of the jump-table.
746
747
748File: gcc.info,  Node: Alignment Output,  Prev: Dispatch Tables,  Up: Assembler Format
749
750Assembler Commands for Alignment
751--------------------------------
752
753   This describes commands for alignment.
754
755`ASM_OUTPUT_ALIGN_CODE (FILE)'
756     A C expression to output text to align the location counter in the
757     way that is desirable at a point in the code that is reached only
758     by jumping.
759
760     This macro need not be defined if you don't want any special
761     alignment to be done at such a time.  Most machine descriptions do
762     not currently define the macro.
763
764`ASM_OUTPUT_LOOP_ALIGN (FILE)'
765     A C expression to output text to align the location counter in the
766     way that is desirable at the beginning of a loop.
767
768     This macro need not be defined if you don't want any special
769     alignment to be done at such a time.  Most machine descriptions do
770     not currently define the macro.
771
772`ASM_OUTPUT_SKIP (STREAM, NBYTES)'
773     A C statement to output to the stdio stream STREAM an assembler
774     instruction to advance the location counter by NBYTES bytes.
775     Those bytes should be zero when loaded.  NBYTES will be a C
776     expression of type `int'.
777
778`ASM_NO_SKIP_IN_TEXT'
779     Define this macro if `ASM_OUTPUT_SKIP' should not be used in the
780     text section because it fails put zeros in the bytes that are
781     skipped.  This is true on many Unix systems, where the pseudo-op
782     to skip bytes produces no-op instructions rather than zeros when
783     used in the text section.
784
785`ASM_OUTPUT_ALIGN (STREAM, POWER)'
786     A C statement to output to the stdio stream STREAM an assembler
787     command to advance the location counter to a multiple of 2 to the
788     POWER bytes.  POWER will be a C expression of type `int'.
789
790
791File: gcc.info,  Node: Debugging Info,  Next: Cross-compilation,  Prev: Assembler Format,  Up: Target Macros
792
793Controlling Debugging Information Format
794========================================
795
796   This describes how to specify debugging information.
797
798* Menu:
799
800* All Debuggers::      Macros that affect all debugging formats uniformly.
801* DBX Options::        Macros enabling specific options in DBX format.
802* DBX Hooks::          Hook macros for varying DBX format.
803* File Names and DBX:: Macros controlling output of file names in DBX format.
804* SDB and DWARF::      Macros for SDB (COFF) and DWARF formats.
805
806
807File: gcc.info,  Node: All Debuggers,  Next: DBX Options,  Up: Debugging Info
808
809Macros Affecting All Debugging Formats
810--------------------------------------
811
812   These macros affect all debugging formats.
813
814`DBX_REGISTER_NUMBER (REGNO)'
815     A C expression that returns the DBX register number for the
816     compiler register number REGNO.  In simple cases, the value of this
817     expression may be REGNO itself.  But sometimes there are some
818     registers that the compiler knows about and DBX does not, or vice
819     versa.  In such cases, some register may need to have one number in
820     the compiler and another for DBX.
821
822     If two registers have consecutive numbers inside GNU CC, and they
823     can be used as a pair to hold a multiword value, then they *must*
824     have consecutive numbers after renumbering with
825     `DBX_REGISTER_NUMBER'.  Otherwise, debuggers will be unable to
826     access such a pair, because they expect register pairs to be
827     consecutive in their own numbering scheme.
828
829     If you find yourself defining `DBX_REGISTER_NUMBER' in way that
830     does not preserve register pairs, then what you must do instead is
831     redefine the actual register numbering scheme.
832
833`DEBUGGER_AUTO_OFFSET (X)'
834     A C expression that returns the integer offset value for an
835     automatic variable having address X (an RTL expression).  The
836     default computation assumes that X is based on the frame-pointer
837     and gives the offset from the frame-pointer.  This is required for
838     targets that produce debugging output for DBX or COFF-style
839     debugging output for SDB and allow the frame-pointer to be
840     eliminated when the `-g' options is used.
841
842`DEBUGGER_ARG_OFFSET (OFFSET, X)'
843     A C expression that returns the integer offset value for an
844     argument having address X (an RTL expression).  The nominal offset
845     is OFFSET.
846
847`PREFERRED_DEBUGGING_TYPE'
848     A C expression that returns the type of debugging output GNU CC
849     produces when the user specifies `-g' or `-ggdb'.  Define this if
850     you have arranged for GNU CC to support more than one format of
851     debugging output.  Currently, the allowable values are `DBX_DEBUG',
852     `SDB_DEBUG', `DWARF_DEBUG', and `XCOFF_DEBUG'.
853
854     The value of this macro only affects the default debugging output;
855     the user can always get a specific type of output by using
856     `-gstabs', `-gcoff', `-gdwarf', or `-gxcoff'.
857
858
859File: gcc.info,  Node: DBX Options,  Next: DBX Hooks,  Prev: All Debuggers,  Up: Debugging Info
860
861Specific Options for DBX Output
862-------------------------------
863
864   These are specific options for DBX output.
865
866`DBX_DEBUGGING_INFO'
867     Define this macro if GNU CC should produce debugging output for DBX
868     in response to the `-g' option.
869
870`XCOFF_DEBUGGING_INFO'
871     Define this macro if GNU CC should produce XCOFF format debugging
872     output in response to the `-g' option.  This is a variant of DBX
873     format.
874
875`DEFAULT_GDB_EXTENSIONS'
876     Define this macro to control whether GNU CC should by default
877     generate GDB's extended version of DBX debugging information
878     (assuming DBX-format debugging information is enabled at all).  If
879     you don't define the macro, the default is 1: always generate the
880     extended information if there is any occasion to.
881
882`DEBUG_SYMS_TEXT'
883     Define this macro if all `.stabs' commands should be output while
884     in the text section.
885
886`ASM_STABS_OP'
887     A C string constant naming the assembler pseudo op to use instead
888     of `.stabs' to define an ordinary debugging symbol.  If you don't
889     define this macro, `.stabs' is used.  This macro applies only to
890     DBX debugging information format.
891
892`ASM_STABD_OP'
893     A C string constant naming the assembler pseudo op to use instead
894     of `.stabd' to define a debugging symbol whose value is the current
895     location.  If you don't define this macro, `.stabd' is used.  This
896     macro applies only to DBX debugging information format.
897
898`ASM_STABN_OP'
899     A C string constant naming the assembler pseudo op to use instead
900     of `.stabn' to define a debugging symbol with no name.  If you
901     don't define this macro, `.stabn' is used.  This macro applies
902     only to DBX debugging information format.
903
904`DBX_NO_XREFS'
905     Define this macro if DBX on your system does not support the
906     construct `xsTAGNAME'.  On some systems, this construct is used to
907     describe a forward reference to a structure named TAGNAME.  On
908     other systems, this construct is not supported at all.
909
910`DBX_CONTIN_LENGTH'
911     A symbol name in DBX-format debugging information is normally
912     continued (split into two separate `.stabs' directives) when it
913     exceeds a certain length (by default, 80 characters).  On some
914     operating systems, DBX requires this splitting; on others,
915     splitting must not be done.  You can inhibit splitting by defining
916     this macro with the value zero.  You can override the default
917     splitting-length by defining this macro as an expression for the
918     length you desire.
919
920`DBX_CONTIN_CHAR'
921     Normally continuation is indicated by adding a `\' character to
922     the end of a `.stabs' string when a continuation follows.  To use
923     a different character instead, define this macro as a character
924     constant for the character you want to use.  Do not define this
925     macro if backslash is correct for your system.
926
927`DBX_STATIC_STAB_DATA_SECTION'
928     Define this macro if it is necessary to go to the data section
929     before outputting the `.stabs' pseudo-op for a non-global static
930     variable.
931
932`DBX_TYPE_DECL_STABS_CODE'
933     The value to use in the "code" field of the `.stabs' directive for
934     a typedef.  The default is `N_LSYM'.
935
936`DBX_STATIC_CONST_VAR_CODE'
937     The value to use in the "code" field of the `.stabs' directive for
938     a static variable located in the text section.  DBX format does not
939     provide any "right" way to do this.  The default is `N_FUN'.
940
941`DBX_REGPARM_STABS_CODE'
942     The value to use in the "code" field of the `.stabs' directive for
943     a parameter passed in registers.  DBX format does not provide any
944     "right" way to do this.  The default is `N_RSYM'.
945
946`DBX_REGPARM_STABS_LETTER'
947     The letter to use in DBX symbol data to identify a symbol as a
948     parameter passed in registers.  DBX format does not customarily
949     provide any way to do this.  The default is `'P''.
950
951`DBX_MEMPARM_STABS_LETTER'
952     The letter to use in DBX symbol data to identify a symbol as a
953     stack parameter.  The default is `'p''.
954
955`DBX_FUNCTION_FIRST'
956     Define this macro if the DBX information for a function and its
957     arguments should precede the assembler code for the function.
958     Normally, in DBX format, the debugging information entirely
959     follows the assembler code.
960
961`DBX_LBRAC_FIRST'
962     Define this macro if the `N_LBRAC' symbol for a block should
963     precede the debugging information for variables and functions
964     defined in that block.  Normally, in DBX format, the `N_LBRAC'
965     symbol comes first.
966
967`DBX_BLOCKS_FUNCTION_RELATIVE'
968     Define this macro if the value of a symbol describing the scope of
969     a block (`N_LBRAC' or `N_RBRAC') should be relative to the start
970     of the enclosing function.  Normally, GNU C uses an absolute
971     address.
972
973
974File: gcc.info,  Node: DBX Hooks,  Next: File Names and DBX,  Prev: DBX Options,  Up: Debugging Info
975
976Open-Ended Hooks for DBX Format
977-------------------------------
978
979   These are hooks for DBX format.
980
981`DBX_OUTPUT_LBRAC (STREAM, NAME)'
982     Define this macro to say how to output to STREAM the debugging
983     information for the start of a scope level for variable names.  The
984     argument NAME is the name of an assembler symbol (for use with
985     `assemble_name') whose value is the address where the scope begins.
986
987`DBX_OUTPUT_RBRAC (STREAM, NAME)'
988     Like `DBX_OUTPUT_LBRAC', but for the end of a scope level.
989
990`DBX_OUTPUT_ENUM (STREAM, TYPE)'
991     Define this macro if the target machine requires special handling
992     to output an enumeration type.  The definition should be a C
993     statement (sans semicolon) to output the appropriate information
994     to STREAM for the type TYPE.
995
996`DBX_OUTPUT_FUNCTION_END (STREAM, FUNCTION)'
997     Define this macro if the target machine requires special output at
998     the end of the debugging information for a function.  The
999     definition should be a C statement (sans semicolon) to output the
1000     appropriate information to STREAM.  FUNCTION is the
1001     `FUNCTION_DECL' node for the function.
1002
1003`DBX_OUTPUT_STANDARD_TYPES (SYMS)'
1004     Define this macro if you need to control the order of output of the
1005     standard data types at the beginning of compilation.  The argument
1006     SYMS is a `tree' which is a chain of all the predefined global
1007     symbols, including names of data types.
1008
1009     Normally, DBX output starts with definitions of the types for
1010     integers and characters, followed by all the other predefined
1011     types of the particular language in no particular order.
1012
1013     On some machines, it is necessary to output different particular
1014     types first.  To do this, define `DBX_OUTPUT_STANDARD_TYPES' to
1015     output those symbols in the necessary order.  Any predefined types
1016     that you don't explicitly output will be output afterward in no
1017     particular order.
1018
1019     Be careful not to define this macro so that it works only for C.
1020     There are no global variables to access most of the built-in
1021     types, because another language may have another set of types.
1022     The way to output a particular type is to look through SYMS to see
1023     if you can find it.  Here is an example:
1024
1025          {
1026            tree decl;
1027            for (decl = syms; decl; decl = TREE_CHAIN (decl))
1028              if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
1029                           "long int"))
1030                dbxout_symbol (decl);
1031            ...
1032          }
1033
1034     This does nothing if the expected type does not exist.
1035
1036     See the function `init_decl_processing' in `c-decl.c' to find the
1037     names to use for all the built-in C types.
1038
1039     Here is another way of finding a particular type:
1040
1041          {
1042            tree decl;
1043            for (decl = syms; decl; decl = TREE_CHAIN (decl))
1044              if (TREE_CODE (decl) == TYPE_DECL
1045                  && (TREE_CODE (TREE_TYPE (decl))
1046                      == INTEGER_CST)
1047                  && TYPE_PRECISION (TREE_TYPE (decl)) == 16
1048                  && TYPE_UNSIGNED (TREE_TYPE (decl)))
1049          /* This must be `unsigned short'.  */
1050                dbxout_symbol (decl);
1051            ...
1052          }
1053
1054
1055File: gcc.info,  Node: File Names and DBX,  Next: SDB and DWARF,  Prev: DBX Hooks,  Up: Debugging Info
1056
1057File Names in DBX Format
1058------------------------
1059
1060   This describes file names in DBX format.
1061
1062`DBX_WORKING_DIRECTORY'
1063     Define this if DBX wants to have the current directory recorded in
1064     each object file.
1065
1066     Note that the working directory is always recorded if GDB
1067     extensions are enabled.
1068
1069`DBX_OUTPUT_MAIN_SOURCE_FILENAME (STREAM, NAME)'
1070     A C statement to output DBX debugging information to the stdio
1071     stream STREAM which indicates that file NAME is the main source
1072     file--the file specified as the input file for compilation.  This
1073     macro is called only once, at the beginning of compilation.
1074
1075     This macro need not be defined if the standard form of output for
1076     DBX debugging information is appropriate.
1077
1078`DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (STREAM, NAME)'
1079     A C statement to output DBX debugging information to the stdio
1080     stream STREAM which indicates that the current directory during
1081     compilation is named NAME.
1082
1083     This macro need not be defined if the standard form of output for
1084     DBX debugging information is appropriate.
1085
1086`DBX_OUTPUT_MAIN_SOURCE_FILE_END (STREAM, NAME)'
1087     A C statement to output DBX debugging information at the end of
1088     compilation of the main source file NAME.
1089
1090     If you don't define this macro, nothing special is output at the
1091     end of compilation, which is correct for most machines.
1092
1093`DBX_OUTPUT_SOURCE_FILENAME (STREAM, NAME)'
1094     A C statement to output DBX debugging information to the stdio
1095     stream STREAM which indicates that file NAME is the current source
1096     file.  This output is generated each time input shifts to a
1097     different source file as a result of `#include', the end of an
1098     included file, or a `#line' command.
1099
1100     This macro need not be defined if the standard form of output for
1101     DBX debugging information is appropriate.
1102
1103
1104File: gcc.info,  Node: SDB and DWARF,  Prev: File Names and DBX,  Up: Debugging Info
1105
1106Macros for SDB and DWARF Output
1107-------------------------------
1108
1109   Here are macros for SDB and DWARF output.
1110
1111`SDB_DEBUGGING_INFO'
1112     Define this macro if GNU CC should produce COFF-style debugging
1113     output for SDB in response to the `-g' option.
1114
1115`DWARF_DEBUGGING_INFO'
1116     Define this macro if GNU CC should produce dwarf format debugging
1117     output in response to the `-g' option.
1118
1119`PUT_SDB_...'
1120     Define these macros to override the assembler syntax for the
1121     special SDB assembler directives.  See `sdbout.c' for a list of
1122     these macros and their arguments.  If the standard syntax is used,
1123     you need not define them yourself.
1124
1125`SDB_DELIM'
1126     Some assemblers do not support a semicolon as a delimiter, even
1127     between SDB assembler directives.  In that case, define this macro
1128     to be the delimiter to use (usually `\n').  It is not necessary to
1129     define a new set of `PUT_SDB_OP' macros if this is the only change
1130     required.
1131
1132`SDB_GENERATE_FAKE'
1133     Define this macro to override the usual method of constructing a
1134     dummy name for anonymous structure and union types.  See
1135     `sdbout.c' for more information.
1136
1137`SDB_ALLOW_UNKNOWN_REFERENCES'
1138     Define this macro to allow references to unknown structure, union,
1139     or enumeration tags to be emitted.  Standard COFF does not allow
1140     handling of unknown references, MIPS ECOFF has support for it.
1141
1142`SDB_ALLOW_FORWARD_REFERENCES'
1143     Define this macro to allow references to structure, union, or
1144     enumeration tags that have not yet been seen to be handled.  Some
1145     assemblers choke if forward tags are used, while some require it.
1146
Note: See TracBrowser for help on using the repository browser.