⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 options.texi

📁 理解和实践操作系统的一本好书
💻 TEXI
字号:
@c Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.@c This is part of the GCC manual.@c For copying conditions, see the file gcc.texi.@node Options@chapter Option specification files@cindex option specification files@cindex @samp{optc-gen.awk}Most GCC command-line options are described by special optiondefinition files, the names of which conventionally end in@code{.opt}.  This chapter describes the format of these files.@menu* Option file format::   The general layout of the files* Option properties::    Supported option properties@end menu@node Option file format@section Option file formatOption files are a simple list of records in which each field occupiesits own line and in which the records themselves are separated byblank lines.  Comments may appear on their own line anywhere withinthe file and are preceded by semicolons.  Whitespace is allowed beforethe semicolon.The files can contain the following types of record:@itemize @bullet@itemA language definition record. 燭hese records have two fields: thestring @samp{Language} and the name of the language. 燨nce a languagehas been declared in this way, it can be used as an option property.@xref{Option properties}.@itemAn option definition record. 燭hese records have the following fields:@enumerate@itemthe name of the option, with the leading ``-'' removed@itema space-separated list of option properties (@pxref{Option properties})@itemthe help text to use for @option{--help} (omitted if the second fieldcontains the @code{Undocumented} property).@end enumerateBy default, all options beginning with ``f'', ``W'' or ``m'' areimplicitly assumed to take a ``no-'' form.  This form should not belisted separately.  If an option beginning with one of these lettersdoes not have a ``no-'' form, you can use the @code{RejectNegative}property to reject it.The help text is automatically line-wrapped before being displayed.Normally the name of the option is printed on the left-hand side ofthe output and the help text is printed on the right.  However, if thehelp text contains a tab character, the text to the left of the tab isused instead of the option's name and the text to the right of thetab forms the help text.  This allows you to elaborate on what typeof argument the option takes.@itemA target mask record. 燭hese records have one field of the form@samp{Mask(@var{x})}. 燭he options-processing script will automaticallyallocate a bit in @code{target_flags} (@pxref{Run-time Target}) foreach mask name @var{x} and set the macro @code{MASK_@var{x}} to theappropriate bitmask. 營t will also declare a @code{TARGET_@var{x}}macro that has the value 1 when bit @code{MASK_@var{x}} is set and0 otherwise.They are primarily intended to declare target masks that are notassociated with user options, either because these masks representinternal switches or because the options are not available on allconfigurations and yet the masks always need to be defined.@end itemize@node Option properties@section Option propertiesThe second field of an option record can specify the following properties:@table @code@item CommonThe option is available for all languages and targets.@item TargetThe option is available for all languages but is target-specific.@item @var{language}The option is available when compiling for the given language.It is possible to specify several different languages for the sameoption.  Each @var{language} must have been declared by an earlier@code{Language} record.  @xref{Option file format}.@item RejectNegativeThe option does not have a ``no-'' form.  All options beginning with``f'', ``W'' or ``m'' are assumed to have a ``no-'' form unless thisproperty is used.@item Negative(@var{othername})The option will turn off another option @var{othername}, which is thethe option name with the leading ``-'' removed.  This chain action willpropagate through the @code{Negative} property of the option to beturned off.@item Joined@itemx SeparateThe option takes a mandatory argument.  @code{Joined} indicatesthat the option and argument can be included in the same @code{argv}entry (as with @code{-mflush-func=@var{name}}, for example).@code{Separate} indicates that the option and argument can beseparate @code{argv} entries (as with @code{-o}).  An option isallowed to have both of these properties.@item JoinedOrMissingThe option takes an optional argument.  If the argument is given,it will be part of the same @code{argv} entry as the option itself.This property cannot be used alongside @code{Joined} or @code{Separate}.@item UIntegerThe option's argument is a non-negative integer.  The option parserwill check and convert the argument before passing it to the relevantoption handler.@item Var(@var{var})The state of this option should be stored in variable @var{var}.The way that the state is stored depends on the type of option:@itemize @bullet@itemIf the option uses the @code{Mask} or @code{InverseMask} properties,@var{var} is the integer variable that contains the mask.@itemIf the option is a normal on/off switch, @var{var} is an integervariable that is nonzero when the option is enabled.  The optionsparser will set the variable to 1 when the positive form of theoption is used and 0 when the ``no-'' form is used.@itemIf the option takes an argument and has the @code{UInteger} property,@var{var} is an integer variable that stores the value of the argument.@itemOtherwise, if the option takes an argument, @var{var} is a pointer tothe argument string.  The pointer will be null if the argument is optionaland wasn't given.@end itemizeThe option-processing script will usually declare @var{var} in@file{options.c} and leave it to be zero-initialized at start-up time.You can modify this behavior using @code{VarExists} and @code{Init}.@item Var(@var{var}, @var{set})The option controls an integer variable @var{var} and is active when@var{var} equals @var{set}.  The option parser will set @var{var} to@var{set} when the positive form of the option is used and @code{!@var{set}}when the ``no-'' form is used.@var{var} is declared in the same way as for the single-argument formdescribed above.@item VarExistsThe variable specified by the @code{Var} property already exists.No definition should be added to @file{options.c} in response tothis option record.You should use this property only if the variable is declared outside@file{options.c}.@item Init(@var{value})The variable specified by the @code{Var} property should be staticallyinitialized to @var{value}.@item Mask(@var{name})The option is associated with a bit in the @code{target_flags}variable (@pxref{Run-time Target}) and is active when that bit is set.You may also specify @code{Var} to select a variable other than@code{target_flags}.The options-processing script will automatically allocate a unique bitfor the option.  If the option is attached to @samp{target_flags},the script will set the macro @code{MASK_@var{name}} to the appropriatebitmask.  It will also declare a @code{TARGET_@var{name}} macro that hasthe value 1 when the option is active and 0 otherwise.  If you use @code{Var}to attach the option to a different variable, the associated macros arecalled @code{OPTION_MASK_@var{name}} and @code{OPTION_@var{name}} respectively.You can disable automatic bit allocation using @code{MaskExists}.@item InverseMask(@var{othername})@itemx InverseMask(@var{othername}, @var{thisname})The option is the inverse of another option that has the@code{Mask(@var{othername})} property.  If @var{thisname} is given,the options-processing script will declare a @code{TARGET_@var{thisname}}macro that is 1 when the option is active and 0 otherwise.@item MaskExistsThe mask specified by the @code{Mask} property already exists.No @code{MASK} or @code{TARGET} definitions should be added to@file{options.h} in response to this option record.The main purpose of this property is to support synonymous options.The first option should use @samp{Mask(@var{name})} and the othersshould use @samp{Mask(@var{name}) MaskExists}.@item ReportThe state of the option should be printed by @option{-fverbose-asm}.@item UndocumentedThe option is deliberately missing documentation and should notbe included in the @option{--help} output.@item Condition(@var{cond})The option should only be accepted if preprocessor condition@var{cond} is true.  Note that any C declarations associated with theoption will be present even if @var{cond} is false; @var{cond} simplycontrols whether the option is accepted and whether it is printed inthe @option{--help} output.@end table

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -