From: Robert Dewar Date: Tue, 20 May 2008 12:51:51 +0000 (+0200) Subject: vms_data.ads: Add entry for -gnatr Put GNAT SYNC section in proper alpha order Add... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8436e37c4bbf4bd43b0e0f07cceeddcb1e2183ff;p=gcc.git vms_data.ads: Add entry for -gnatr Put GNAT SYNC section in proper alpha order Add VMS... 2008-05-20 Robert Dewar Vincent Celier * vms_data.ads: Add entry for -gnatr Put GNAT SYNC section in proper alpha order Add VMS qualifier /DISPLAY_PROGRESS equivalent to gnatmake switch -d * gnat_ugn.texi: Add documentation for new gnatname switch --and Update the style checks section Add documentation of -gnatr Add to the "Adding the Results of Compiler Checks to gnatcheck Output" subsection the explanation how compiler checks should be disabled for gnatcheck. Update the list of Ada 95 reserved words used by in the project language Add documentation for project qualifiers. Document that abstract projects may be extended by different projects in the same project tree. Add documentation for gnatmake switch -d * ug_words: Add -gnatyy VMS equivalence string. Add entry for -gnatr From-SVN: r135647 --- diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 6654f5d16fe..4d9abacfa5f 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -4021,6 +4021,10 @@ Don't quit; try semantics, even if parse errors. @cindex @option{-gnatQ} (@command{gcc}) Don't quit; generate @file{ALI} and tree files even if illegalities. +@item -gnatr +@cindex @option{-gnatr} (@command{gcc}) +Treat pragma Restrictions as Restriction_Warnings. + @item ^-gnatR[0/1/2/3[s]]^/REPRESENTATION_INFO^ @cindex @option{-gnatR} (@command{gcc}) Output representation information for declared types and objects. @@ -5723,7 +5727,7 @@ turns on all validity checking options except for checking of @code{@b{in out}} procedure arguments. The specification of additional validity checking generates extra code (and -in the case of @option{-gnatVa} the code expansion can be substantial. +in the case of @option{-gnatVa} the code expansion can be substantial). However, these additional checks can be very useful in detecting uninitialized variables, incorrect use of unchecked conversion, and other errors leading to invalid values. The use of pragma @code{Initialize_Scalars} @@ -6023,7 +6027,7 @@ with declarations. @item ^S^STATEMENTS_AFTER_THEN_ELSE^ @emph{Check no statements after THEN/ELSE.} No statements are allowed -on the same line as a THEN OR ELSE keyword following the +on the same line as a THEN or ELSE keyword following the keyword in an IF statement. OR ELSE and AND THEN are not affected, and a special exception allows a pragma to appear after ELSE. @@ -6099,19 +6103,25 @@ around conditions in @code{if} statements, @code{while} statements and @item ^y^ALL_BUILTIN^ @emph{Set all standard style check options} This is equivalent to @code{gnaty3aAbcefhiklmnprst}, that is all checking -options enabled with the exception of @option{-gnatyo}, +options enabled with the exception of @option{-gnatyo}, @option{-gnatyI}, +@option{-gnatyS}, @option{-gnatyLnnn}, @option{-gnatyd}, @option{-gnatyu}, and @option{-gnatyx}. @ifclear vms @item - @emph{Remove style check options} This causes any subsequent options in the string to act as canceling the -corresponding style check option. +corresponding style check option. To cancel maximum nesting level control, +use @option{L} parameter witout any integer value after that, because any +digit following @option{-} in the parameter string of the @option{-gnaty} +option will be threated as canceling indentation check. The same is true +for @option{M} parameter. @option{y} and @option{N} parameters are not +alloved after @option{-}. @item + This causes any subsequent options in the string to enable the corresponding -style check option. It only has an effect if a previous ^-^REMOVE^ has been -encountered. +style check option. That is, it cancels the effect of a previous ^-^REMOVE^, +if any. @end ifclear @ifset vms @@ -6153,8 +6163,8 @@ built-in standard style check options are enabled. the exception of ORDERED_SUBPROGRAMS, UNNECESSARY_BLANK_LINES, XTRA_PARENS, and DOS_LINE_ENDINGS. In addition @end ifset -an indentation level of 3 is set. This is similar to the standard -checking option that is used for the GNAT sources. + + The switch @ifclear vms @@ -6822,6 +6832,16 @@ If the switch @option{-gnatL} is used in conjunction with @option{-gnatDG}, then the original source lines are interspersed in the expanded source (as comment lines with the original line number). +@item -gnatr +@cindex @option{-gnatr} (@command{gcc}) +@cindex pragma Restrictions +This switch causes pragma Restrictions to be treated as Restriction_Warnings +so that violation of restrictions causes warnings rather than illegalities. +This is useful during the development process when new restrictions are added +or investigated. The switch also causes pragma Profile to be treated as +Profile_Warnings, and pragma Restricted_Run_Time and pragma Ravenscar set +restriction warnings rather than restrictions. + @ifclear vms @item -gnatR[0|1|2|3[s]] @cindex @option{-gnatR} (@command{gcc}) @@ -8848,6 +8868,15 @@ This switch is not compatible with a project file (^-P^/PROJECT_FILE=^@var{file}) or with multiple compiling processes (^-j^/PROCESSES=^nnn, when nnn is greater than 1). +@item ^-d^/DISPLAY_PROGRESS^ +@cindex @option{^-d^/DISPLAY_PROGRESS^} (@command{gnatmake}) +Display progress for each source, up to date or not, as a single line + + completed x out of y (zz%) + +If the file needs to be compiled this is displayed after the invocation of +the compiler. These lines are displayed even in quiet output mode. + @item ^-D ^/DIRECTORY_OBJECTS=^@var{dir} @cindex @option{^-D^/DIRECTORY_OBJECTS^} (@command{gnatmake}) Put all object files and ALI file in directory @var{dir}. @@ -11036,7 +11065,8 @@ set of files. The usual form of the @code{gnatname} command is @smallexample -$ gnatname [@var{switches}] @var{naming_pattern} [@var{naming_patterns}] +$ gnatname [@var{switches}] @var{naming_pattern} [@var{naming_patterns}] \ + [--and @var{switches}] @var{naming_pattern} [@var{naming_patterns}]] @end smallexample @noindent @@ -11056,6 +11086,14 @@ Each Naming Pattern is enclosed between double quotes. A Naming Pattern is a regular expression similar to the wildcard patterns used in file names by the Unix shells or the DOS prompt. +@noindent +@code{gnatname} may be called with several sections of directories/patterns. +Sections are separated by switch @code{--and}. In each section, there must be +at least one pattern. If no directory is specified in a section, the current +directory (or the project directory is @code{-P} is used) is implied. +The options other that the directory switches and the patterns apply globally +even if they are in different sections. + @noindent Examples of Naming Patterns are @@ -11071,9 +11109,10 @@ see the second kind of regular expressions described in @file{g-regexp.ads} (the ``Glob'' regular expressions). @noindent -When invoked with no switches, @code{gnatname} will create a configuration -pragmas file @file{gnat.adc} in the current working directory, with pragmas -@code{Source_File_Name} for each file that contains a valid Ada unit. +When invoked with no switch @code{-P}, @code{gnatname} will create a +configuration pragmas file @file{gnat.adc} in the current working directory, +with pragmas @code{Source_File_Name} for each file that contains a valid Ada +unit. @node Switches for gnatname @section Switches for @code{gnatname} @@ -11096,6 +11135,9 @@ Display Copyright and version, then exit disregarding all other options. If @option{--version} was not used, display usage, then exit disregarding all other options. +@item --and +Start another section of directories/patterns. + @item ^-c^/CONFIG_FILE=^@file{file} @cindex @option{^-c^/CONFIG_FILE^} (@code{gnatname}) Create a configuration pragmas file @file{file} (instead of the default @@ -12033,6 +12075,7 @@ project P. @menu * Basic Syntax:: +* Qualified Projects:: * Packages:: * Expressions:: * String Types:: @@ -12090,12 +12133,16 @@ word @code{end} at the end of the project file, followed by a semi-colon. Any name in a project file, such as the project name or a variable name, has the same syntax as an Ada identifier. -The reserved words of project files are the Ada reserved words plus +The reserved words of project files are the Ada 95 reserved words plus @code{extends}, @code{external}, and @code{project}. Note that the only Ada reserved words currently used in project file syntax are: @itemize @bullet @item +@code{all} +@item +@code{at} +@item @code{case} @item @code{end} @@ -12104,6 +12151,10 @@ reserved words currently used in project file syntax are: @item @code{is} @item +@code{limited} +@item +@code{null} +@item @code{others} @item @code{package} @@ -12123,6 +12174,39 @@ reserved words currently used in project file syntax are: Comments in project files have the same syntax as in Ada, two consecutive hyphens through the end of the line. +@node Qualified Projects +@subsection Qualified Projects + +@noindent +Before the reserved @code{project}, there may be one or two "qualifiers", that +is identifiers or other reserved words, to qualify the project. + +The current list of qualifiers is: + +@itemize @bullet +@item +@code{abstract}: qualify a project with no sources. An abstract project must +have a declaration specifying that there are no sources in the project, and, +if it extends another project, the project it extends must also be a qualified +abstract project. + +@item +@code{standard}: a standard project is a non library project with sources. + +@item +@code{aggregate}: for future extension + +@item +@code{aggregate library}: for future extension + +@item +@code{library}: a library project must declare both attributes +@code{Library_Name} and @code{Library_Dir}. + +@item +@code{configuration}: a configuration project cannot be in a project tree. +@end itemize + @node Packages @subsection Packages @@ -13015,8 +13099,8 @@ The original body of @code{Util_IO} will not be considered in program builds. However, the package spec will still be found in the project @code{Utilities}. -A child project can have only one parent but it may import any number of other -projects. +A child project can have only one parent, except when it is qualified as +abstract. But it may import any number of other projects. A project is not allowed to import directly or indirectly at the same time a child project and any of its ancestors. @@ -20259,9 +20343,10 @@ use the rule named @code{Restrictions} or @code{Restriction_Warnings}. @item Style_Checks -To record compiler style checks, use the rule named +To record compiler style checks(@pxref{Style Checking}), use the rule named @code{Style_Checks}. A parameter of this rule can be either @code{All_Checks}, -which enables all the style checks, or a string that has exactly the same +which enables all the standard style checks that corresponds to @option{-gnatyy} +GNAT style check option, or a string that has exactly the same structure and semantics as the @code{string_LITERAL} parameter of GNAT pragma @code{Style_Checks} (for further information about this pragma, @pxref{Pragma Style_Checks,,, gnat_rm, GNAT Reference Manual}). @@ -20271,10 +20356,19 @@ To record compiler warnings (@pxref{Warning Message Control}), use the rule named @code{Warnings} with a parameter that is a valid @i{static_string_expression} argument of GNAT pragma @code{Warnings} (for further information about this pragma, @pxref{Pragma Warnings,,, -gnat_rm, GNAT Reference Manual}). +gnat_rm, GNAT Reference Manual}). Note, that in case of gnatcheck +'s' parameter, that corresponds to the GNAT @option{-gnatws} option, disables +all the specific warnings, but not suppresses the warning mode, +and 'e' parameter, corresponding to @option{-gnatwe} that means +"therat warnings as errors", does not have any effect. @end table +To disable a specific restriction check, use @code{-RStyle_Checks} gnatcheck +option with the corresponding restriction name as a parameter. @code{-R} is +not available for @code{Style_Checks} and @code{Warnings} options, to disable +warnings and style checks, use the corresponding warning and style options. + @node Project-Wide Checks @section Project-Wide Checks @cindex Project-wide checks (for @command{gnatcheck}) diff --git a/gcc/ada/ug_words b/gcc/ada/ug_words index c167596477a..7f8e9577e86 100644 --- a/gcc/ada/ug_words +++ b/gcc/ada/ug_words @@ -89,6 +89,7 @@ gcc -c ^ GNAT COMPILE -gnatR3 ^ /REPRESENTATION_INFO=SYMBOLIC -gnatq ^ /TRY_SEMANTICS -gnatQ ^ /FORCE_ALI +-gnatr ^ /TREAT_RESTRICTIONS_AS_WARNINGS -gnats ^ /SYNTAX_ONLY -gnatS ^ /PRINT_STANDARD -gnatt ^ /TREE_OUTPUT @@ -177,6 +178,7 @@ gcc -c ^ GNAT COMPILE -gnatW8 ^ /WIDE_CHARACTER_ENCODING=UTF8 -gnatW? ^ /WIDE_CHARACTER_ENCODING=? -gnaty ^ /STYLE_CHECKS +-gnatyy ^ /STYLE_CHECKS=ALL_BUILTIN -gnatZ ^ /ZERO_COST_EXCEPTIONS -gnatzc ^ /DISTRIBUTION_STUBS=CALLER -gnatzr ^ /DISTRIBUTION_STUBS=RECEIVER diff --git a/gcc/ada/vms_data.ads b/gcc/ada/vms_data.ads index 4a48396aec7..545080f11f6 100644 --- a/gcc/ada/vms_data.ads +++ b/gcc/ada/vms_data.ads @@ -880,154 +880,6 @@ package VMS_Data is S_Check_Subdirs 'Access, S_Check_Verb 'Access); - ---------------------------- - -- Switches for GNAT SYNC -- - ---------------------------- - - S_Sync_Add : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*" & - "-aP*"; - -- /ADD_PROJECT_SEARCH_PATH=(directory[,...]) - -- - -- Add directories to the project search path. - - S_Sync_All : aliased constant S := "/ALL " & - "-a"; - -- /NOALL (D) - -- /ALL - -- - -- Also check the components of the GNAT run time and process the needed - -- components of the GNAT RTL when building and analyzing the global - -- structure for checking the global rules. - - S_Sync_Ext : aliased constant S := "/EXTERNAL_REFERENCE=" & '"' & - "-X" & '"'; - -- /EXTERNAL_REFERENCE="name=val" - -- - -- Specifies an external reference to the project manager. Useful only if - -- /PROJECT_FILE is used. - -- - -- Example: - -- /EXTERNAL_REFERENCE="DEBUG=TRUE" - - S_Sync_Files : aliased constant S := "/FILES=@" & - "-files=@"; - -- /FILES=filename - -- - -- Take as arguments the files that are listed in the specified - -- text file. - - S_Sync_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES " & - "-eL"; - -- /NOFOLLOW_LINKS_FOR_FILES (D) - -- /FOLLOW_LINKS_FOR_FILES - -- - -- Follow links when parsing project files - - S_Sync_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" & - "DEFAULT " & - "-vP0 " & - "MEDIUM " & - "-vP1 " & - "HIGH " & - "-vP2"; - -- /MESSAGES_PROJECT_FILE[=messages-option] - -- - -- Specifies the "verbosity" of the parsing of project files. - -- messages-option may be one of the following: - -- - -- DEFAULT (D) No messages are output if there is no error or warning. - -- - -- MEDIUM A small number of messages are output. - -- - -- HIGH A great number of messages are output, most of them not - -- being useful for the user. - - S_Sync_Project : aliased constant S := "/PROJECT_FILE=<" & - "-P>"; - -- /PROJECT_FILE=filename - -- - -- Specifies the main project file to be used. The project files rooted - -- at the main project file will be parsed before the invocation of the - -- gnatcheck. The source directories to be searched will be communicated - -- to gnatcheck through logical name ADA_PRJ_INCLUDE_FILE. - - S_Sync_Quiet : aliased constant S := "/QUIET " & - "-q"; - -- /NOQUIET (D) - -- /QUIET - -- - -- Work quietly, only output warnings and errors. - - S_Sync_Subdirs : aliased constant S := "/SUBDIRS=<" & - "--subdirs=>"; - -- /SUBDIRS=dir - -- - -- The actual directories (object, exec, library, ...) are subdirectories - -- of the directory specified in the project file. If the subdirectory - -- does not exist, it is created automatically. - - S_Sync_Verb : aliased constant S := "/VERBOSE " & - "-v"; - -- /NOVERBOSE (D) - -- /VERBOSE - -- - -- The version number and copyright notice are output, as well as exact - -- copies of the gnat1 commands spawned to obtain the chop control - -- information. - - S_Sync_Exec : aliased constant S := "/EXECUTION_TIME " & - "-t"; - -- /NOEXECUTION_TIME (D) - -- /EXECUTION_TIME - -- - -- Output the execution time - - S_Sync_Details : aliased constant S := "/DETAILs=" & - "MEDIUM " & - "-om " & - "SHORT " & - "-os " & - "FULL " & - "-of"; - -- /DETAILS[=options] - -- - -- Specifies the details of the output. - -- Options may be one of the following: - -- - -- MEDIUM (D) - -- SHORT - -- FULL - - S_Sync_Warnoff : aliased constant S := "/WARNINGS_OFF " & - "-wq"; - -- - -- /WARNINGS_OFF - -- - -- Turn warnings off - - S_Sync_Output : aliased constant S := "/OUTPUT_FILE=<" & - "-out_file=>"; - -- - -- /OUTPUT_FILE=filename - -- - -- Redirect output to a text file - - Sync_Switches : aliased constant Switches := - (S_Sync_Add 'Access, - S_Sync_All 'Access, - S_Sync_Ext 'Access, - S_Sync_Follow 'Access, - S_Sync_Files 'Access, - S_Sync_Mess 'Access, - S_Sync_Project 'Access, - S_Sync_Quiet 'Access, - S_Sync_Subdirs 'Access, - S_Sync_Verb 'Access, - S_Sync_Exec 'Access, - S_Sync_Details 'Access, - S_Sync_Warnoff 'Access, - S_Sync_Output 'Access); - ---------------------------- -- Switches for GNAT CHOP -- ---------------------------- @@ -2109,6 +1961,16 @@ package VMS_Data is -- readable to any Ada programmer, and is useful to determine the -- characteristics of target dependent types in package Standard. + S_GCC_Reswarn : aliased constant S := "/TREAT_RESTRICTIONS_AS_WARNINGS " & + "-gnatr"; + + -- /NO_TREAT_RESTRICTIONS_AS_WARNINGS (D) + -- /TREAT_RESTRICTIONS_AS_WARNINGS + -- + -- Causes all restrictions to be treated as warnings (pragma Restriction + -- treated as Restriction_Warnings, pragma Profile as Profile_Warnings, + -- and pragma Ravenscar sets restriction warnings instead of restrictions) + S_GCC_Report : aliased constant S := "/REPORT_ERRORS=" & "VERBOSE " & "-gnatv " & @@ -4440,6 +4302,17 @@ package VMS_Data is -- Put all object files and .ALI files in . -- This qualifier is not compatible with /PROJECT_FILE. + S_Make_Disprog : aliased constant S := "/DISPLAY_PROGRESS " & + "-d"; + -- /NOPLAY_PROGRESS (D) + -- /DISPLAY_PROGRESS + -- + -- Display progress for each source, up to date or not, as a single line + -- completed x out of y (zz%) + -- If the file needs to be compiled this is displayed after the + -- invocation of the compiler. These lines are displayed even in quiet + -- output mode (/QUIET). + S_Make_Doobj : aliased constant S := "/DO_OBJECT_CHECK " & "-n"; -- /NODO_OBJECT_CHECK (D) @@ -4801,6 +4674,7 @@ package VMS_Data is S_Make_Current 'Access, S_Make_Dep 'Access, S_Make_Dirobj 'Access, + S_Make_Disprog 'Access, S_Make_Doobj 'Access, S_Make_Execut 'Access, S_Make_Ext 'Access, @@ -6625,6 +6499,154 @@ package VMS_Data is S_Stub_Tree 'Access, S_Stub_Verbose 'Access); + ---------------------------- + -- Switches for GNAT SYNC -- + ---------------------------- + + S_Sync_Add : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*" & + "-aP*"; + -- /ADD_PROJECT_SEARCH_PATH=(directory[,...]) + -- + -- Add directories to the project search path. + + S_Sync_All : aliased constant S := "/ALL " & + "-a"; + -- /NOALL (D) + -- /ALL + -- + -- Also check the components of the GNAT run time and process the needed + -- components of the GNAT RTL when building and analyzing the global + -- structure for checking the global rules. + + S_Sync_Ext : aliased constant S := "/EXTERNAL_REFERENCE=" & '"' & + "-X" & '"'; + -- /EXTERNAL_REFERENCE="name=val" + -- + -- Specifies an external reference to the project manager. Useful only if + -- /PROJECT_FILE is used. + -- + -- Example: + -- /EXTERNAL_REFERENCE="DEBUG=TRUE" + + S_Sync_Files : aliased constant S := "/FILES=@" & + "-files=@"; + -- /FILES=filename + -- + -- Take as arguments the files that are listed in the specified + -- text file. + + S_Sync_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES " & + "-eL"; + -- /NOFOLLOW_LINKS_FOR_FILES (D) + -- /FOLLOW_LINKS_FOR_FILES + -- + -- Follow links when parsing project files + + S_Sync_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" & + "DEFAULT " & + "-vP0 " & + "MEDIUM " & + "-vP1 " & + "HIGH " & + "-vP2"; + -- /MESSAGES_PROJECT_FILE[=messages-option] + -- + -- Specifies the "verbosity" of the parsing of project files. + -- messages-option may be one of the following: + -- + -- DEFAULT (D) No messages are output if there is no error or warning. + -- + -- MEDIUM A small number of messages are output. + -- + -- HIGH A great number of messages are output, most of them not + -- being useful for the user. + + S_Sync_Project : aliased constant S := "/PROJECT_FILE=<" & + "-P>"; + -- /PROJECT_FILE=filename + -- + -- Specifies the main project file to be used. The project files rooted + -- at the main project file will be parsed before the invocation of the + -- gnatcheck. The source directories to be searched will be communicated + -- to gnatcheck through logical name ADA_PRJ_INCLUDE_FILE. + + S_Sync_Quiet : aliased constant S := "/QUIET " & + "-q"; + -- /NOQUIET (D) + -- /QUIET + -- + -- Work quietly, only output warnings and errors. + + S_Sync_Subdirs : aliased constant S := "/SUBDIRS=<" & + "--subdirs=>"; + -- /SUBDIRS=dir + -- + -- The actual directories (object, exec, library, ...) are subdirectories + -- of the directory specified in the project file. If the subdirectory + -- does not exist, it is created automatically. + + S_Sync_Verb : aliased constant S := "/VERBOSE " & + "-v"; + -- /NOVERBOSE (D) + -- /VERBOSE + -- + -- The version number and copyright notice are output, as well as exact + -- copies of the gnat1 commands spawned to obtain the chop control + -- information. + + S_Sync_Exec : aliased constant S := "/EXECUTION_TIME " & + "-t"; + -- /NOEXECUTION_TIME (D) + -- /EXECUTION_TIME + -- + -- Output the execution time + + S_Sync_Details : aliased constant S := "/DETAILs=" & + "MEDIUM " & + "-om " & + "SHORT " & + "-os " & + "FULL " & + "-of"; + -- /DETAILS[=options] + -- + -- Specifies the details of the output. + -- Options may be one of the following: + -- + -- MEDIUM (D) + -- SHORT + -- FULL + + S_Sync_Warnoff : aliased constant S := "/WARNINGS_OFF " & + "-wq"; + -- + -- /WARNINGS_OFF + -- + -- Turn warnings off + + S_Sync_Output : aliased constant S := "/OUTPUT_FILE=<" & + "-out_file=>"; + -- + -- /OUTPUT_FILE=filename + -- + -- Redirect output to a text file + + Sync_Switches : aliased constant Switches := + (S_Sync_Add 'Access, + S_Sync_All 'Access, + S_Sync_Ext 'Access, + S_Sync_Follow 'Access, + S_Sync_Files 'Access, + S_Sync_Mess 'Access, + S_Sync_Project 'Access, + S_Sync_Quiet 'Access, + S_Sync_Subdirs 'Access, + S_Sync_Verb 'Access, + S_Sync_Exec 'Access, + S_Sync_Details 'Access, + S_Sync_Warnoff 'Access, + S_Sync_Output 'Access); + ---------------------------- -- Switches for GNAT XREF -- ----------------------------