|
|
1.1.1.4 ! root 1: This is Info file gcc.info, produced by Makeinfo version 1.67 from the ! 2: input file gcc.texi. 1.1 root 3: 4: This file documents the use and the internals of the GNU compiler. 5: 1.1.1.3 root 6: Published by the Free Software Foundation 59 Temple Place - Suite 330 7: Boston, MA 02111-1307 USA 1.1 root 8: 1.1.1.3 root 9: Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software 10: Foundation, Inc. 1.1 root 11: 12: Permission is granted to make and distribute verbatim copies of this 13: manual provided the copyright notice and this permission notice are 14: preserved on all copies. 15: 16: Permission is granted to copy and distribute modified versions of 17: this manual under the conditions for verbatim copying, provided also 1.1.1.2 root 18: that the sections entitled "GNU General Public License," "Funding for 19: Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are 20: included exactly as in the original, and provided that the entire 21: resulting derived work is distributed under the terms of a permission 22: notice identical to this one. 1.1 root 23: 24: Permission is granted to copy and distribute translations of this 25: manual into another language, under the above conditions for modified 26: versions, except that the sections entitled "GNU General Public 1.1.1.2 root 27: License," "Funding for Free Software," and "Protect Your Freedom--Fight 28: `Look And Feel'", and this permission notice, may be included in 29: translations approved by the Free Software Foundation instead of in the 30: original English. 1.1 root 31: 32: 1.1.1.3 root 33: File: gcc.info, Node: Uninitialized Data, Next: Label Output, Prev: Data Output, Up: Assembler Format 1.1 root 34: 1.1.1.3 root 35: Output of Uninitialized Variables 36: --------------------------------- 1.1 root 37: 1.1.1.3 root 38: Each of the macros in this section is used to do the whole job of 39: outputting a single uninitialized variable. 1.1 root 40: 1.1.1.3 root 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: 92: File: gcc.info, Node: Label Output, Next: Initialization, Prev: Uninitialized Data, Up: Assembler Format 93: 94: Output 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: 290: File: gcc.info, Node: Initialization, Next: Macros for Initialization, Prev: Label Output, Up: Assembler Format 291: 292: How Initialization Functions Are Handled 293: ---------------------------------------- 294: 295: The compiled code for certain languages includes "constructors" 296: (also called "initialization routines")--functions to initialize data 297: in the program when the program is started. These functions need to be 298: called before the program is "started"--that is to say, before `main' 299: is called. 300: 301: Compiling some languages generates "destructors" (also called 302: "termination routines") that should be called when the program 303: terminates. 304: 305: To make the initialization and termination functions work, the 306: compiler must output something in the assembler code to cause those 307: functions to be called at the appropriate time. When you port the 308: compiler 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 311: initialization and termination functions. Each way has two variants. 312: Much of the structure is common to all four variations. 313: 314: The linker must build two lists of these functions--a list of 315: initialization functions, called `__CTOR_LIST__', and a list of 316: termination functions, called `__DTOR_LIST__'. 317: 318: Each list always begins with an ignored function pointer (which may 319: hold 0, -1, or a count of the function pointers after it, depending on 320: the environment). This is followed by a series of zero or more function 321: pointers to constructors (or destructors), followed by a function 322: pointer containing zero. 323: 324: Depending on the operating system and its executable file format, 325: either `crtstuff.c' or `libgcc2.c' traverses these lists at startup 326: time and exit time. Constructors are called in reverse order of the 327: list; destructors in forward order. 328: 329: The best way to handle static constructors works only for object file 330: formats which provide arbitrarily-named sections. A section is set 331: aside for a list of constructors, and another for a list of destructors. 332: Traditionally these are called `.ctors' and `.dtors'. Each object file 333: that defines an initialization function also puts a word in the 334: constructor section to point to that function. The linker accumulates 335: all these words into one contiguous `.ctors' section. Termination 336: functions 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 340: get them by including `svr4.h'. 341: 342: When arbitrary sections are available, there are two variants, 343: depending upon how the code in `crtstuff.c' is called. On systems that 344: support an "init" section which is executed at program startup, parts 345: of `crtstuff.c' are compiled into that section. The program is linked 346: by 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 351: section of `crtbegin.o'; the remainder of the function appears in the 352: init section of `crtend.o'. The linker will pull these two parts of 353: the section together, making a whole function. If any of the user's 354: object files linked into the middle of it contribute code, then that 355: code 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 358: properly. 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 362: section like all other functions, and resides in `libgcc.a'. When GCC 363: compiles 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 369: again two variants. In the simplest variant, the GNU linker (GNU `ld') 370: and 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 373: the void function containing the initialization code as its value. The 374: GNU linker recognizes this as a request to add the value to a "set"; 375: the values are accumulated, and are eventually placed in the executable 376: as a vector in the format described above, with a leading (ignored) 377: count and a trailing zero element. `ASM_OUTPUT_DESTRUCTOR' is handled 378: similarly. Since no init section is available, the absence of 379: `INIT_SECTION_ASM_OP' causes the compilation of `main' to call `__main' 380: as above, starting the initialization process. 381: 382: The last variant uses neither arbitrary sections nor the GNU linker. 383: This is preferable when you want to do dynamic linking and when using 384: file formats which the GNU linker does not support, such as `ECOFF'. In 385: this case, `ASM_OUTPUT_CONSTRUCTOR' does not produce an `N_SETT' 386: symbol; initialization and termination functions are recognized simply 387: by their names. This requires an extra program in the linkage step, 388: called `collect2'. This program pretends to be the linker, for use 389: with GNU CC; it does its job by running the ordinary linker, but also 390: arranges to include the vectors of initialization and termination 391: functions. These functions are called via `__main' as described above. 392: 393: Choosing among these configuration options has been simplified by a 394: set of operating-system-dependent files in the `config' subdirectory. 395: These files define all of the relevant parameters. Usually it is 396: sufficient to include one into your specific machine-dependent 397: configuration 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 415: customize the handling of initialization and termination functions. 416: 417: 418: File: gcc.info, Node: Macros for Initialization, Next: Instruction Output, Prev: Initialization, Up: Assembler Format 419: 420: Macros Controlling Initialization Routines 421: ------------------------------------------ 422: 423: Here are the macros that control how the compiler handles 424: initialization 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 478: constructors, then that program normally uses `nm' to scan an object 479: file for constructor functions to be called. On certain kinds of 480: systems, 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: 521: File: gcc.info, Node: Instruction Output, Next: Dispatch Tables, Prev: Macros for Initialization, Up: Assembler Format 522: 523: Output 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: 690: File: gcc.info, Node: Dispatch Tables, Next: Alignment Output, Prev: Instruction Output, Up: Assembler Format 691: 692: Output 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: 748: File: gcc.info, Node: Alignment Output, Prev: Dispatch Tables, Up: Assembler Format 749: 750: Assembler 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: 791: File: gcc.info, Node: Debugging Info, Next: Cross-compilation, Prev: Assembler Format, Up: Target Macros 792: 793: Controlling 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: 807: File: gcc.info, Node: All Debuggers, Next: DBX Options, Up: Debugging Info 808: 809: Macros 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: 859: File: gcc.info, Node: DBX Options, Next: DBX Hooks, Prev: All Debuggers, Up: Debugging Info 860: 861: Specific 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: 974: File: gcc.info, Node: DBX Hooks, Next: File Names and DBX, Prev: DBX Options, Up: Debugging Info 975: 976: Open-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: 1055: File: gcc.info, Node: File Names and DBX, Next: SDB and DWARF, Prev: DBX Hooks, Up: Debugging Info 1056: 1057: File 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: 1104: File: gcc.info, Node: SDB and DWARF, Prev: File Names and DBX, Up: Debugging Info 1105: 1106: Macros 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. 1.1 root 1146:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.