diff options
71 files changed, 1168 insertions, 203 deletions
diff --git a/gcc/ada/Makefile.in b/gcc/ada/Makefile.in index 4b9e58c..811f29c 100644 --- a/gcc/ada/Makefile.in +++ b/gcc/ada/Makefile.in @@ -457,8 +457,6 @@ endif ifeq ($(strip $(filter-out alpha% dec vx%,$(targ))),) LIBGNAT_TARGET_PAIRS = \ - a-sytaco.ads<a-sytaco-vxworks.ads \ - a-sytaco.adb<a-sytaco-vxworks.adb \ a-intnam.ads<a-intnam-vxworks.ads \ a-numaux.ads<a-numaux-vxworks.ads \ s-inmaop.adb<s-inmaop-posix.adb \ @@ -485,8 +483,6 @@ endif ifeq ($(strip $(filter-out m68k% wrs vx%,$(targ))),) LIBGNAT_TARGET_PAIRS = \ - a-sytaco.ads<a-sytaco-vxworks.ads \ - a-sytaco.adb<a-sytaco-vxworks.adb \ a-intnam.ads<a-intnam-vxworks.ads \ a-numaux.ads<a-numaux-vxworks.ads \ s-inmaop.adb<s-inmaop-posix.adb \ @@ -524,8 +520,6 @@ endif ifeq ($(strip $(filter-out powerpc% wrs vxworks,$(targ))),) LIBGNAT_TARGET_PAIRS = \ - a-sytaco.ads<a-sytaco-vxworks.ads \ - a-sytaco.adb<a-sytaco-vxworks.adb \ a-intnam.ads<a-intnam-vxworks.ads \ a-numaux.ads<a-numaux-vxworks.ads \ s-inmaop.adb<s-inmaop-posix.adb \ @@ -563,8 +557,6 @@ endif ifeq ($(strip $(filter-out sparc% wrs vx%,$(targ))),) LIBGNAT_TARGET_PAIRS = \ - a-sytaco.ads<a-sytaco-vxworks.ads \ - a-sytaco.adb<a-sytaco-vxworks.adb \ a-intnam.ads<a-intnam-vxworks.ads \ a-numaux.ads<a-numaux-vxworks.ads \ s-inmaop.adb<s-inmaop-posix.adb \ @@ -593,8 +585,6 @@ endif ifeq ($(strip $(filter-out %86 wrs vxworks,$(targ))),) LIBGNAT_TARGET_PAIRS = \ - a-sytaco.ads<a-sytaco-vxworks.ads \ - a-sytaco.adb<a-sytaco-vxworks.adb \ a-intnam.ads<a-intnam-vxworks.ads \ i-vxwork.ads<i-vxwork-x86.ads \ s-inmaop.adb<s-inmaop-posix.adb \ @@ -634,8 +624,6 @@ endif ifeq ($(strip $(filter-out xscale% coff wrs vx%,$(targ))),) LIBGNAT_TARGET_PAIRS = \ - a-sytaco.ads<a-sytaco-vxworks.ads \ - a-sytaco.adb<a-sytaco-vxworks.adb \ a-intnam.ads<a-intnam-vxworks.ads \ a-numaux.ads<a-numaux-vxworks.ads \ s-inmaop.adb<s-inmaop-posix.adb \ @@ -664,8 +652,6 @@ endif ifeq ($(strip $(filter-out mips% wrs vx%,$(targ))),) LIBGNAT_TARGET_PAIRS = \ - a-sytaco.ads<a-sytaco-vxworks.ads \ - a-sytaco.adb<a-sytaco-vxworks.adb \ a-intnam.ads<a-intnam-vxworks.ads \ a-numaux.ads<a-numaux-vxworks.ads \ s-inmaop.adb<s-inmaop-posix.adb \ @@ -1251,11 +1237,13 @@ endif ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),) TOOLS_TARGET_PAIRS= \ mlib-tgt.adb<mlib-tgt-vms-ia64.adb \ - symbols.adb<symbols-vms-ia64.adb + symbols.adb<symbols-vms.adb \ + symbols-processing.adb<symbols-processing-vms-ia64.adb else TOOLS_TARGET_PAIRS= \ mlib-tgt.adb<mlib-tgt-vms-alpha.adb \ - symbols.adb<symbols-vms-alpha.adb + symbols.adb<symbols-vms.adb \ + symbols-processing.adb<symbols-processing-vms-alpha.adb endif GNATLIB_SHARED=gnatlib-shared-vms @@ -1507,12 +1495,12 @@ endif # subdirectory and copied. LIBGNAT_SRCS = ada.h adaint.c adaint.h argv.c cio.c cstreams.c \ errno.c exit.c cal.c ctrl_c.c \ - raise.h raise.c sysdep.c aux-io.c init.c seh_init.c \ + raise.h raise.c sysdep.c aux-io.c init.c initialize.c seh_init.c \ final.c tracebak.c tb-alvms.c tb-alvxw.c expect.c mkdir.c socket.c gsocket.h \ $(EXTRA_LIBGNAT_SRCS) LIBGNAT_OBJS = adaint.o argv.o cio.o cstreams.o ctrl_c.o errno.o exit.o \ - raise.o sysdep.o aux-io.o init.o seh_init.o cal.o final.o \ + raise.o sysdep.o aux-io.o init.o initialize.o seh_init.o cal.o final.o \ tracebak.o expect.o mkdir.o socket.o $(EXTRA_LIBGNAT_OBJS) # NOTE ??? - when the -I option for compiling Ada code is made to work, @@ -2029,26 +2017,30 @@ socket.o : socket.c gsocket.h sysdep.o : sysdep.c gen-soccon: gen-soccon.c gsocket.h - $(CC) $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) \ - $(ALL_CPPFLAGS) $(INCLUDES) -DTARGET=\"$(target_alias)\" \ + $(CC) $(ALL_CFLAGS) $(ADA_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + -UIN_GCC -DTARGET=\"$(target_alias)\" \ $< $(OUTPUT_OPTION) cio.o : cio.c - $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) \ + $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) \ $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) init.o : init.c ada.h types.h raise.h - $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) \ + $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) \ + $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) + +initialize.o : initialize.c + $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) \ $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) # No optimization to compile this file as optimizations (-O1 or above) breaks # the SEH handling on Windows. The reasons are not clear. seh_init.o : seh_init.c raise.h - $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) -O0 \ + $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) -O0 \ $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) raise.o : raise.c raise.h - $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) \ + $(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) \ $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) # Need to keep the frame pointer in this file to pop the stack properly on diff --git a/gcc/ada/a-direct.ads b/gcc/ada/a-direct.ads index 5047cc7..d16e2f6 100644 --- a/gcc/ada/a-direct.ads +++ b/gcc/ada/a-direct.ads @@ -178,8 +178,9 @@ package Ada.Directories is -- and form given by Form, or copying of the file with the name given by -- Source_Name (in the absence of Name_Error). - - -- File and directory name operations: + ---------------------------------------- + -- File and directory name operations -- + ---------------------------------------- function Full_Name (Name : String) return String; -- Returns the full name corresponding to the file name specified by Name. @@ -231,15 +232,16 @@ package Ada.Directories is -- Name is not a possible simple name (if Extension is null) or base name -- (if Extension is non-null). - - -- File and directory queries: + -------------------------------- + -- File and directory queries -- + -------------------------------- type File_Kind is (Directory, Ordinary_File, Special_File); -- The type File_Kind represents the kind of file represented by an -- external file or directory. type File_Size is range 0 .. Long_Long_Integer'Last; - -- The type File_Size represents the size of an external file. + -- The type File_Size represents the size of an external file function Exists (Name : String) return Boolean; -- Returns True if external file represented by Name exists, and False @@ -403,19 +405,16 @@ private -- Search_Type need to be a controlled type, because it includes component -- of type Dir_Type (in GNAT.Directory_Operations) that need to be closed - -- (if opened) during finalization. - -- The component need to be an access value, because Search_Data is not - -- fully defined in the spec. + -- (if opened) during finalization. The component need to be an access + -- value, because Search_Data is not fully defined in the spec. type Search_Type is new Ada.Finalization.Controlled with record Value : Search_Ptr; end record; procedure Finalize (Search : in out Search_Type); - -- Close the directory, if opened, and deallocate Value. + -- Close the directory, if opened, and deallocate Value procedure End_Search (Search : in out Search_Type) renames Finalize; end Ada.Directories; - - diff --git a/gcc/ada/a-direio.ads b/gcc/ada/a-direio.ads index 8526d29..6106922 100644 --- a/gcc/ada/a-direio.ads +++ b/gcc/ada/a-direio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -35,7 +35,6 @@ -- -- ------------------------------------------------------------------------------ - with Ada.IO_Exceptions; with System.Direct_IO; with Interfaces.C_Streams; diff --git a/gcc/ada/a-exctra.ads b/gcc/ada/a-exctra.ads index 97a110f..f8eae60 100644 --- a/gcc/ada/a-exctra.ads +++ b/gcc/ada/a-exctra.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2003 Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -35,7 +35,7 @@ -- -- ------------------------------------------------------------------------------ --- This package is part of the support for tracebacks on exceptions. +-- This package is part of the support for tracebacks on exceptions with System.Traceback_Entries; @@ -47,7 +47,7 @@ package Ada.Exceptions.Traceback is -- Code location in executing program type Tracebacks_Array is array (Positive range <>) of TBE.Traceback_Entry; - -- A traceback array is an array of traceback entries. + -- A traceback array is an array of traceback entries function Tracebacks (E : Exception_Occurrence) return Tracebacks_Array; -- This function extracts the traceback information from an exception diff --git a/gcc/ada/a-exexda.adb b/gcc/ada/a-exexda.adb index 63085f6..c7949ac 100644 --- a/gcc/ada/a-exexda.adb +++ b/gcc/ada/a-exexda.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -152,7 +152,6 @@ package body Exception_Data is Info : in out String; Ptr : in out Natural); - -- The "functional" interface to the exception information not involving -- a traceback decorator uses preallocated intermediate buffers to avoid -- the use of secondary stack. Preallocation requires preliminary length diff --git a/gcc/ada/a-exextr.adb b/gcc/ada/a-exextr.adb index 835c2cb..7fa41e0 100644 --- a/gcc/ada/a-exextr.adb +++ b/gcc/ada/a-exextr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -190,7 +190,6 @@ package body Exception_Traces is Last_Chance_Handler (Excep.all); end Unhandled_Exception_Terminate; - ------------------------------------ -- Handling GNAT.Exception_Traces -- ------------------------------------ diff --git a/gcc/ada/a-slcain.adb b/gcc/ada/a-slcain.adb index 6d395af..a986420 100644 --- a/gcc/ada/a-slcain.adb +++ b/gcc/ada/a-slcain.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004 Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -76,5 +76,3 @@ begin RI := RI + 1; end loop; end Ada.Strings.Less_Case_Insensitive; - - diff --git a/gcc/ada/a-stream.ads b/gcc/ada/a-stream.ads index 8f07326..53300dc 100644 --- a/gcc/ada/a-stream.ads +++ b/gcc/ada/a-stream.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2001 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -35,7 +35,6 @@ -- -- ------------------------------------------------------------------------------ - package Ada.Streams is pragma Pure (Streams); diff --git a/gcc/ada/a-stzhas.ads b/gcc/ada/a-stzhas.ads index f205928..8a8436c 100644 --- a/gcc/ada/a-stzhas.ads +++ b/gcc/ada/a-stzhas.ads @@ -19,6 +19,3 @@ function Ada.Strings.Wide_Wide_Hash (Key : Wide_Wide_String) return Containers.Hash_Type; pragma Pure (Ada.Strings.Wide_Wide_Hash); - - - diff --git a/gcc/ada/a-swmwco.ads b/gcc/ada/a-swmwco.ads index 200d900..ffb50ca 100644 --- a/gcc/ada/a-swmwco.ads +++ b/gcc/ada/a-swmwco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2001 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -182,7 +182,6 @@ private (AF.Controlled with Character_Ranges'Unrestricted_Access); - Lower_Case_Mapping : aliased constant Wide_Character_Mapping_Values := (Length => 56, diff --git a/gcc/ada/a-szmzco.ads b/gcc/ada/a-szmzco.ads index d82e2ba..77450de 100644 --- a/gcc/ada/a-szmzco.ads +++ b/gcc/ada/a-szmzco.ads @@ -182,7 +182,6 @@ private (AF.Controlled with Character_Ranges'Unrestricted_Access); - Lower_Case_Mapping : aliased constant Wide_Wide_Character_Mapping_Values := (Length => 56, diff --git a/gcc/ada/a-tiinau.adb b/gcc/ada/a-tiinau.adb index 0397771..8dede97 100644 --- a/gcc/ada/a-tiinau.adb +++ b/gcc/ada/a-tiinau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2003 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -52,7 +52,7 @@ package body Ada.Text_IO.Integer_Aux is (File : in File_Type; Buf : out String; Ptr : in out Natural); - -- This is an auxiliary routine that is used to load an possibly signed + -- This is an auxiliary routine that is used to load a possibly signed -- integer literal value from the input file into Buf, starting at Ptr + 1. -- On return, Ptr is set to the last character stored. diff --git a/gcc/ada/a-wichun.adb b/gcc/ada/a-wichun.adb new file mode 100755 index 0000000..96a0ea1 --- /dev/null +++ b/gcc/ada/a-wichun.adb @@ -0,0 +1,167 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- A D A . W I D E _ C H A R A C T E R T S . U N I C O D E -- +-- -- +-- B o d y -- +-- -- +-- Copyright (C) 2005 Free Software Foundation, Inc. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 2, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- +-- for more details. You should have received a copy of the GNU General -- +-- Public License distributed with GNAT; see file COPYING. If not, write -- +-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- +-- MA 02111-1307, USA. -- +-- -- +-- As a special exception, if other files instantiate generics from this -- +-- unit, or you link this unit with other files to produce an executable, -- +-- this unit does not by itself cause the resulting executable to be -- +-- covered by the GNU General Public License. This exception does not -- +-- however invalidate any other reasons why the executable file might be -- +-- covered by the GNU Public License. -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +package body Ada.Wide_Characters.Unicode is + + package G renames GNAT.UTF_32; + + ------------------ + -- Get_Category -- + ------------------ + + function Get_Category (U : Wide_Character) return Category is + begin + return Category (G.Get_Category (Wide_Character'Pos (U))); + end Get_Category; + + -------------- + -- Is_Digit -- + -------------- + + function Is_Digit (U : Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Digit (Wide_Character'Pos (U)); + end Is_Digit; + + function Is_Digit (C : Category) return Boolean is + begin + return G.Is_UTF_32_Digit (G.Category (C)); + end Is_Digit; + + --------------- + -- Is_Letter -- + --------------- + + function Is_Letter (U : Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Letter (Wide_Character'Pos (U)); + end Is_Letter; + + function Is_Letter (C : Category) return Boolean is + begin + return G.Is_UTF_32_Letter (G.Category (C)); + end Is_Letter; + + ------------------------ + -- Is_Line_Terminator -- + ------------------------ + + function Is_Line_Terminator (U : Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Line_Terminator (Wide_Character'Pos (U)); + end Is_Line_Terminator; + + ------------- + -- Is_Mark -- + ------------- + + function Is_Mark (U : Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Mark (Wide_Character'Pos (U)); + end Is_Mark; + + function Is_Mark (C : Category) return Boolean is + begin + return G.Is_UTF_32_Mark (G.Category (C)); + end Is_Mark; + + -------------------- + -- Is_Non_Graphic -- + -------------------- + + function Is_Non_Graphic (U : Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Non_Graphic (Wide_Character'Pos (U)); + end Is_Non_Graphic; + + function Is_Non_Graphic (C : Category) return Boolean is + begin + return G.Is_UTF_32_Non_Graphic (G.Category (C)); + end Is_Non_Graphic; + + -------------- + -- Is_Other -- + -------------- + + function Is_Other (U : Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Other (Wide_Character'Pos (U)); + end Is_Other; + + function Is_Other (C : Category) return Boolean is + begin + return G.Is_UTF_32_Other (G.Category (C)); + end Is_Other; + + -------------------- + -- Is_Punctuation -- + -------------------- + + function Is_Punctuation (U : Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Punctuation (Wide_Character'Pos (U)); + end Is_Punctuation; + + function Is_Punctuation (C : Category) return Boolean is + begin + return G.Is_UTF_32_Punctuation (G.Category (C)); + end Is_Punctuation; + + -------------- + -- Is_Space -- + -------------- + + function Is_Space (U : Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Space (Wide_Character'Pos (U)); + end Is_Space; + + function Is_Space (C : Category) return Boolean is + begin + return G.Is_UTF_32_Space (G.Category (C)); + end Is_Space; + + ------------------- + -- To_Upper_Case -- + ------------------- + + function To_Upper_Case + (U : Wide_Character) return Wide_Character + is + begin + return + Wide_Character'Val + (G.UTF_32_To_Upper_Case (Wide_Character'Pos (U))); + end To_Upper_Case; + +end Ada.Wide_Characters.Unicode; diff --git a/gcc/ada/a-wichun.ads b/gcc/ada/a-wichun.ads new file mode 100755 index 0000000..7bfe045 --- /dev/null +++ b/gcc/ada/a-wichun.ads @@ -0,0 +1,190 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- A D A . W I D E _ C H A R A C T E R S . U N I C O D E -- +-- -- +-- S p e c -- +-- -- +-- Copyright (C) 2005 Free Software Foundation, Inc. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 2, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- +-- for more details. You should have received a copy of the GNU General -- +-- Public License distributed with GNAT; see file COPYING. If not, write -- +-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- +-- MA 02111-1307, USA. -- +-- -- +-- As a special exception, if other files instantiate generics from this -- +-- unit, or you link this unit with other files to produce an executable, -- +-- this unit does not by itself cause the resulting executable to be -- +-- covered by the GNU General Public License. This exception does not -- +-- however invalidate any other reasons why the executable file might be -- +-- covered by the GNU Public License. -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +-- Unicode categorization routines for Wide_Character. Note that this +-- package is strictly speaking Ada 2005 (since it is a child of an +-- Ada 2005 unit), but we make it available in Ada 95 mode, since it +-- only deals with wide characters. + +with GNAT.UTF_32; + +package Ada.Wide_Characters.Unicode is + + -- The following type defines the categories from the unicode definitions. + -- The one addition we make is Fe, which represents the characters FFFE + -- and FFFF in any of the planes. + + type Category is new GNAT.UTF_32.Category; + -- Cc Other, Control + -- Cf Other, Format + -- Cn Other, Not Assigned + -- Co Other, Private Use + -- Cs Other, Surrogate + -- Ll Letter, Lowercase + -- Lm Letter, Modifier + -- Lo Letter, Other + -- Lt Letter, Titlecase + -- Lu Letter, Uppercase + -- Mc Mark, Spacing Combining + -- Me Mark, Enclosing + -- Mn Mark, Nonspacing + -- Nd Number, Decimal Digit + -- Nl Number, Letter + -- No Number, Other + -- Pc Punctuation, Connector + -- Pd Punctuation, Dash + -- Pe Punctuation, Close + -- Pf Punctuation, Final quote + -- Pi Punctuation, Initial quote + -- Po Punctuation, Other + -- Ps Punctuation, Open + -- Sc Symbol, Currency + -- Sk Symbol, Modifier + -- Sm Symbol, Math + -- So Symbol, Other + -- Zl Separator, Line + -- Zp Separator, Paragraph + -- Zs Separator, Space + -- Fe relative position FFFE/FFFF in plane + + function Get_Category (U : Wide_Character) return Category; + pragma Inline (Get_Category); + -- Given a Wide_Character, returns corresponding Category, or Cn if the + -- code does not have an assigned unicode category. + + -- The following functions perform category tests corresponding to lexical + -- classes defined in the Ada standard. There are two interfaces for each + -- function. The second takes a Category (e.g. returned by Get_Category). + -- The first takes a Wide_Character. The form taking the Wide_Character is + -- typically more efficient than calling Get_Category, but if several + -- different tests are to be performed on the same code, it is more + -- efficient to use Get_Category to get the category, then test the + -- resulting category. + + function Is_Letter (U : Wide_Character) return Boolean; + function Is_Letter (C : Category) return Boolean; + pragma Inline (Is_Letter); + -- Returns true iff U is a letter that can be used to start an identifier, + -- or if C is one of the corresponding categories, which are the following: + -- Letter, Uppercase (Lu) + -- Letter, Lowercase (Ll) + -- Letter, Titlecase (Lt) + -- Letter, Modifier (Lm) + -- Letter, Other (Lo) + -- Number, Letter (Nl) + + function Is_Digit (U : Wide_Character) return Boolean; + function Is_Digit (C : Category) return Boolean; + pragma Inline (Is_Digit); + -- Returns true iff U is a digit that can be used to extend an identifer, + -- or if C is one of the corresponding categories, which are the following: + -- Number, Decimal_Digit (Nd) + + function Is_Line_Terminator (U : Wide_Character) return Boolean; + pragma Inline (Is_Line_Terminator); + -- Returns true iff U is an allowed line terminator for source programs, + -- if U is in the category Zp (Separator, Paragaph), or Zs (Separator, + -- Line), or if U is a conventional line terminator (CR, LF, VT, FF). + -- There is no category version for this function, since the set of + -- characters does not correspond to a set of Unicode categories. + + function Is_Mark (U : Wide_Character) return Boolean; + function Is_Mark (C : Category) return Boolean; + pragma Inline (Is_Mark); + -- Returns true iff U is a mark character which can be used to extend an + -- identifier, or if C is one of the corresponding categories, which are + -- the following: + -- Mark, Non-Spacing (Mn) + -- Mark, Spacing Combining (Mc) + + function Is_Other (U : Wide_Character) return Boolean; + function Is_Other (C : Category) return Boolean; + pragma Inline (Is_Other); + -- Returns true iff U is an other format character, which means that it + -- can be used to extend an identifier, but is ignored for the purposes of + -- matching of identiers, or if C is one of the corresponding categories, + -- which are the following: + -- Other, Format (Cf) + + function Is_Punctuation (U : Wide_Character) return Boolean; + function Is_Punctuation (C : Category) return Boolean; + pragma Inline (Is_Punctuation); + -- Returns true iff U is a punctuation character that can be used to + -- separate pices of an identifier, or if C is one of the corresponding + -- categories, which are the following: + -- Punctuation, Connector (Pc) + + function Is_Space (U : Wide_Character) return Boolean; + function Is_Space (C : Category) return Boolean; + pragma Inline (Is_Space); + -- Returns true iff U is considered a space to be ignored, or if C is one + -- of the corresponding categories, which are the following: + -- Separator, Space (Zs) + + function Is_Non_Graphic (U : Wide_Character) return Boolean; + function Is_Non_Graphic (C : Category) return Boolean; + pragma Inline (Is_Non_Graphic); + -- Returns true iff U is considered to be a non-graphic character, or if C + -- is one of the corresponding categories, which are the following: + -- Other, Control (Cc) + -- Other, Private Use (Co) + -- Other, Surrogate (Cs) + -- Separator, Line (Zl) + -- Separator, Paragraph (Zp) + -- FFFE or FFFF positions in any plane (Fe) + -- + -- Note that the Ada category format effector is subsumed by the above + -- list of Unicode categories. + -- + -- Note that Other, Unassiged (Cn) is quite deliberately not included + -- in the list of categories above. This means that should any of these + -- code positions be defined in future with graphic characters they will + -- be allowed without a need to change implementations or the standard. + -- + -- Note that Other, Format (Cf) is also quite deliberately not included + -- in the list of categories above. This means that these characters can + -- be included in character and string literals. + + -- The following function is used to fold to upper case, as required by + -- the Ada 2005 standard rules for identifier case folding. Two + -- identifiers are equivalent if they are identical after folding all + -- letters to upper case using this routine. + + function To_Upper_Case (U : Wide_Character) return Wide_Character; + pragma Inline (To_Upper_Case); + -- If U represents a lower case letter, returns the corresponding upper + -- case letter, otherwise U is returned unchanged. The folding is locale + -- independent as defined by documents referenced in the note in section + -- 1 of ISO/IEC 10646:2003 + +end Ada.Wide_Characters.Unicode; diff --git a/gcc/ada/a-widcha.ads b/gcc/ada/a-widcha.ads new file mode 100755 index 0000000..d912e3d --- /dev/null +++ b/gcc/ada/a-widcha.ads @@ -0,0 +1,21 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- A D A . W I D E _ C H A R A C T E R S -- +-- -- +-- S p e c -- +-- -- +-- This specification is adapted from the Ada Reference Manual for use with -- +-- GNAT. In accordance with the copyright of that document, you can freely -- +-- copy and modify this specification, provided that if you redistribute a -- +-- modified version, any changes that you have made are clearly indicated. -- +-- -- +------------------------------------------------------------------------------ + +-- Note: strictly this is an Ada 2005 package, but we make it freely +-- available in Ada 95 mode, since it deals only with wide characters. + +package Ada.Wide_Characters is +pragma Pure (Wide_Characters); +end Ada.Wide_Characters; diff --git a/gcc/ada/a-zchara.ads b/gcc/ada/a-zchara.ads new file mode 100755 index 0000000..916a9c0 --- /dev/null +++ b/gcc/ada/a-zchara.ads @@ -0,0 +1,18 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- A D A . W I D E _ W I D E _ C H A R A C T E R S -- +-- -- +-- S p e c -- +-- -- +-- This specification is adapted from the Ada Reference Manual for use with -- +-- GNAT. In accordance with the copyright of that document, you can freely -- +-- copy and modify this specification, provided that if you redistribute a -- +-- modified version, any changes that you have made are clearly indicated. -- +-- -- +------------------------------------------------------------------------------ + +package Ada.Wide_Wide_Characters is +pragma Pure (Wide_Wide_Characters); +end Ada.Wide_Wide_Characters; diff --git a/gcc/ada/a-zchuni.adb b/gcc/ada/a-zchuni.adb new file mode 100755 index 0000000..827a98f --- /dev/null +++ b/gcc/ada/a-zchuni.adb @@ -0,0 +1,167 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- A D A . W I D E _ W I D E _ C H A R A C T E R T S . U N I C O D E -- +-- -- +-- B o d y -- +-- -- +-- Copyright (C) 2005 Free Software Foundation, Inc. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 2, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- +-- for more details. You should have received a copy of the GNU General -- +-- Public License distributed with GNAT; see file COPYING. If not, write -- +-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- +-- MA 02111-1307, USA. -- +-- -- +-- As a special exception, if other files instantiate generics from this -- +-- unit, or you link this unit with other files to produce an executable, -- +-- this unit does not by itself cause the resulting executable to be -- +-- covered by the GNU General Public License. This exception does not -- +-- however invalidate any other reasons why the executable file might be -- +-- covered by the GNU Public License. -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +package body Ada.Wide_Wide_Characters.Unicode is + + package G renames GNAT.UTF_32; + + ------------------ + -- Get_Category -- + ------------------ + + function Get_Category (U : Wide_Wide_Character) return Category is + begin + return Category (G.Get_Category (Wide_Wide_Character'Pos (U))); + end Get_Category; + + -------------- + -- Is_Digit -- + -------------- + + function Is_Digit (U : Wide_Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Digit (Wide_Wide_Character'Pos (U)); + end Is_Digit; + + function Is_Digit (C : Category) return Boolean is + begin + return G.Is_UTF_32_Digit (G.Category (C)); + end Is_Digit; + + --------------- + -- Is_Letter -- + --------------- + + function Is_Letter (U : Wide_Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Letter (Wide_Wide_Character'Pos (U)); + end Is_Letter; + + function Is_Letter (C : Category) return Boolean is + begin + return G.Is_UTF_32_Letter (G.Category (C)); + end Is_Letter; + + ------------------------ + -- Is_Line_Terminator -- + ------------------------ + + function Is_Line_Terminator (U : Wide_Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Line_Terminator (Wide_Wide_Character'Pos (U)); + end Is_Line_Terminator; + + ------------- + -- Is_Mark -- + ------------- + + function Is_Mark (U : Wide_Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Mark (Wide_Wide_Character'Pos (U)); + end Is_Mark; + + function Is_Mark (C : Category) return Boolean is + begin + return G.Is_UTF_32_Mark (G.Category (C)); + end Is_Mark; + + -------------------- + -- Is_Non_Graphic -- + -------------------- + + function Is_Non_Graphic (U : Wide_Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Non_Graphic (Wide_Wide_Character'Pos (U)); + end Is_Non_Graphic; + + function Is_Non_Graphic (C : Category) return Boolean is + begin + return G.Is_UTF_32_Non_Graphic (G.Category (C)); + end Is_Non_Graphic; + + -------------- + -- Is_Other -- + -------------- + + function Is_Other (U : Wide_Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Other (Wide_Wide_Character'Pos (U)); + end Is_Other; + + function Is_Other (C : Category) return Boolean is + begin + return G.Is_UTF_32_Other (G.Category (C)); + end Is_Other; + + -------------------- + -- Is_Punctuation -- + -------------------- + + function Is_Punctuation (U : Wide_Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Punctuation (Wide_Wide_Character'Pos (U)); + end Is_Punctuation; + + function Is_Punctuation (C : Category) return Boolean is + begin + return G.Is_UTF_32_Punctuation (G.Category (C)); + end Is_Punctuation; + + -------------- + -- Is_Space -- + -------------- + + function Is_Space (U : Wide_Wide_Character) return Boolean is + begin + return G.Is_UTF_32_Space (Wide_Wide_Character'Pos (U)); + end Is_Space; + + function Is_Space (C : Category) return Boolean is + begin + return G.Is_UTF_32_Space (G.Category (C)); + end Is_Space; + + ------------------- + -- To_Upper_Case -- + ------------------- + + function To_Upper_Case + (U : Wide_Wide_Character) return Wide_Wide_Character + is + begin + return + Wide_Wide_Character'Val + (G.UTF_32_To_Upper_Case (Wide_Wide_Character'Pos (U))); + end To_Upper_Case; + +end Ada.Wide_Wide_Characters.Unicode; diff --git a/gcc/ada/a-zchuni.ads b/gcc/ada/a-zchuni.ads new file mode 100755 index 0000000..a7bf566 --- /dev/null +++ b/gcc/ada/a-zchuni.ads @@ -0,0 +1,188 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- A D A . W I D E _ W I D E _ C H A R A C T E R T S . U N I C O D E -- +-- -- +-- S p e c -- +-- -- +-- Copyright (C) 2005 Free Software Foundation, Inc. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 2, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- +-- for more details. You should have received a copy of the GNU General -- +-- Public License distributed with GNAT; see file COPYING. If not, write -- +-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- +-- MA 02111-1307, USA. -- +-- -- +-- As a special exception, if other files instantiate generics from this -- +-- unit, or you link this unit with other files to produce an executable, -- +-- this unit does not by itself cause the resulting executable to be -- +-- covered by the GNU General Public License. This exception does not -- +-- however invalidate any other reasons why the executable file might be -- +-- covered by the GNU Public License. -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +-- Unicode categorization routines for Wide_Wide_Character + +with GNAT.UTF_32; + +package Ada.Wide_Wide_Characters.Unicode is + + -- The following type defines the categories from the unicode definitions. + -- The one addition we make is Fe, which represents the characters FFFE + -- and FFFF in any of the planes. + + type Category is new GNAT.UTF_32.Category; + -- Cc Other, Control + -- Cf Other, Format + -- Cn Other, Not Assigned + -- Co Other, Private Use + -- Cs Other, Surrogate + -- Ll Letter, Lowercase + -- Lm Letter, Modifier + -- Lo Letter, Other + -- Lt Letter, Titlecase + -- Lu Letter, Uppercase + -- Mc Mark, Spacing Combining + -- Me Mark, Enclosing + -- Mn Mark, Nonspacing + -- Nd Number, Decimal Digit + -- Nl Number, Letter + -- No Number, Other + -- Pc Punctuation, Connector + -- Pd Punctuation, Dash + -- Pe Punctuation, Close + -- Pf Punctuation, Final quote + -- Pi Punctuation, Initial quote + -- Po Punctuation, Other + -- Ps Punctuation, Open + -- Sc Symbol, Currency + -- Sk Symbol, Modifier + -- Sm Symbol, Math + -- So Symbol, Other + -- Zl Separator, Line + -- Zp Separator, Paragraph + -- Zs Separator, Space + -- Fe relative position FFFE/FFFF in plane + + function Get_Category (U : Wide_Wide_Character) return Category; + pragma Inline (Get_Category); + -- Given a Wide_Wide_Character, returns corresponding Category, or Cn if + -- the code does not have an assigned unicode category. + + -- The following functions perform category tests corresponding to lexical + -- classes defined in the Ada standard. There are two interfaces for each + -- function. The second takes a Category (e.g. returned by Get_Category). + -- The first takes a Wide_Wide_Character. The form taking the + -- Wide_Wide_Character is typically more efficient than calling + -- Get_Category, but if several different tests are to be performed on the + -- same code, it is more efficient to use Get_Category to get the category, + -- then test the resulting category. + + function Is_Letter (U : Wide_Wide_Character) return Boolean; + function Is_Letter (C : Category) return Boolean; + pragma Inline (Is_Letter); + -- Returns true iff U is a letter that can be used to start an identifier, + -- or if C is one of the corresponding categories, which are the following: + -- Letter, Uppercase (Lu) + -- Letter, Lowercase (Ll) + -- Letter, Titlecase (Lt) + -- Letter, Modifier (Lm) + -- Letter, Other (Lo) + -- Number, Letter (Nl) + + function Is_Digit (U : Wide_Wide_Character) return Boolean; + function Is_Digit (C : Category) return Boolean; + pragma Inline (Is_Digit); + -- Returns true iff U is a digit that can be used to extend an identifer, + -- or if C is one of the corresponding categories, which are the following: + -- Number, Decimal_Digit (Nd) + + function Is_Line_Terminator (U : Wide_Wide_Character) return Boolean; + pragma Inline (Is_Line_Terminator); + -- Returns true iff U is an allowed line terminator for source programs, + -- if U is in the category Zp (Separator, Paragaph), or Zs (Separator, + -- Line), or if U is a conventional line terminator (CR, LF, VT, FF). + -- There is no category version for this function, since the set of + -- characters does not correspond to a set of Unicode categories. + + function Is_Mark (U : Wide_Wide_Character) return Boolean; + function Is_Mark (C : Category) return Boolean; + pragma Inline (Is_Mark); + -- Returns true iff U is a mark character which can be used to extend an + -- identifier, or if C is one of the corresponding categories, which are + -- the following: + -- Mark, Non-Spacing (Mn) + -- Mark, Spacing Combining (Mc) + + function Is_Other (U : Wide_Wide_Character) return Boolean; + function Is_Other (C : Category) return Boolean; + pragma Inline (Is_Other); + -- Returns true iff U is an other format character, which means that it + -- can be used to extend an identifier, but is ignored for the purposes of + -- matching of identiers, or if C is one of the corresponding categories, + -- which are the following: + -- Other, Format (Cf) + + function Is_Punctuation (U : Wide_Wide_Character) return Boolean; + function Is_Punctuation (C : Category) return Boolean; + pragma Inline (Is_Punctuation); + -- Returns true iff U is a punctuation character that can be used to + -- separate pices of an identifier, or if C is one of the corresponding + -- categories, which are the following: + -- Punctuation, Connector (Pc) + + function Is_Space (U : Wide_Wide_Character) return Boolean; + function Is_Space (C : Category) return Boolean; + pragma Inline (Is_Space); + -- Returns true iff U is considered a space to be ignored, or if C is one + -- of the corresponding categories, which are the following: + -- Separator, Space (Zs) + + function Is_Non_Graphic (U : Wide_Wide_Character) return Boolean; + function Is_Non_Graphic (C : Category) return Boolean; + pragma Inline (Is_Non_Graphic); + -- Returns true iff U is considered to be a non-graphic character, or if C + -- is one of the corresponding categories, which are the following: + -- Other, Control (Cc) + -- Other, Private Use (Co) + -- Other, Surrogate (Cs) + -- Separator, Line (Zl) + -- Separator, Paragraph (Zp) + -- FFFE or FFFF positions in any plane (Fe) + -- + -- Note that the Ada category format effector is subsumed by the above + -- list of Unicode categories. + -- + -- Note that Other, Unassiged (Cn) is quite deliberately not included + -- in the list of categories above. This means that should any of these + -- code positions be defined in future with graphic characters they will + -- be allowed without a need to change implementations or the standard. + -- + -- Note that Other, Format (Cf) is also quite deliberately not included + -- in the list of categories above. This means that these characters can + -- be included in character and string literals. + + -- The following function is used to fold to upper case, as required by + -- the Ada 2005 standard rules for identifier case folding. Two + -- identifiers are equivalent if they are identical after folding all + -- letters to upper case using this routine. + + function To_Upper_Case + (U : Wide_Wide_Character) return Wide_Wide_Character; + pragma Inline (To_Upper_Case); + -- If U represents a lower case letter, returns the corresponding upper + -- case letter, otherwise U is returned unchanged. The folding is locale + -- independent as defined by documents referenced in the note in section + -- 1 of ISO/IEC 10646:2003 + +end Ada.Wide_Wide_Characters.Unicode; diff --git a/gcc/ada/comperr.adb b/gcc/ada/comperr.adb index 3988800a..309948a 100644 --- a/gcc/ada/comperr.adb +++ b/gcc/ada/comperr.adb @@ -294,7 +294,6 @@ package body Comperr is End_Line; end if; - Write_Str ("| Use a subject line meaningful to you" & " and us to track the bug."); diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb index 06d8e7c..3a53814 100644 --- a/gcc/ada/exp_ch11.adb +++ b/gcc/ada/exp_ch11.adb @@ -730,7 +730,6 @@ package body Exp_Ch11 is end; end if; - -- If an exception occurrence is present, then we must declare it -- and initialize it from the value stored in the TSD @@ -1175,7 +1174,6 @@ package body Exp_Ch11 is Name_Buffer (Name_Len) := ASCII.NUL; end if; - if Opt.Exception_Locations_Suppressed then Name_Len := 0; end if; diff --git a/gcc/ada/exp_smem.adb b/gcc/ada/exp_smem.adb index 6898cbe..c2b1297 100644 --- a/gcc/ada/exp_smem.adb +++ b/gcc/ada/exp_smem.adb @@ -492,5 +492,4 @@ package body Exp_Smem is end if; end On_Lhs_Of_Assignment; - end Exp_Smem; diff --git a/gcc/ada/fmap.adb b/gcc/ada/fmap.adb index 0c7ec89..6b001f2 100644 --- a/gcc/ada/fmap.adb +++ b/gcc/ada/fmap.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2003, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2005, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -297,7 +297,6 @@ package body Fmap is return; end if; - Name_Len := Last - First + 1; Name_Buffer (1 .. Name_Len) := SP (First .. Last); Uname := Find_Name; diff --git a/gcc/ada/g-boubuf.adb b/gcc/ada/g-boubuf.adb index 5b6a9a8..fd70707 100644 --- a/gcc/ada/g-boubuf.adb +++ b/gcc/ada/g-boubuf.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003 Ada Core Technologies, Inc. -- +-- Copyright (C) 2003-2005, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -89,5 +89,4 @@ package body GNAT.Bounded_Buffers is end Bounded_Buffer; - end GNAT.Bounded_Buffers; diff --git a/gcc/ada/g-calend.adb b/gcc/ada/g-calend.adb index 18c74ac..7f0bda2 100644 --- a/gcc/ada/g-calend.adb +++ b/gcc/ada/g-calend.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2001 Ada Core Technologies, Inc. -- +-- Copyright (C) 1999-2005 Ada Core Technologies, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -253,7 +253,6 @@ package body GNAT.Calendar is sec : aliased C.long; usec : aliased C.long; - begin timeval_to_duration (T, sec'Access, usec'Access); return Duration (sec) + Duration (usec) / Micro; diff --git a/gcc/ada/g-debpoo.ads b/gcc/ada/g-debpoo.ads index 1ac0e56..b21842c 100644 --- a/gcc/ada/g-debpoo.ads +++ b/gcc/ada/g-debpoo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -85,7 +85,6 @@ -- This allows faster checks, and limits the performance impact of using -- this pool. - with System; use System; with System.Storage_Elements; use System.Storage_Elements; with System.Checked_Pools; diff --git a/gcc/ada/g-moreex.ads b/gcc/ada/g-moreex.ads index 21983ea..21f83c3 100644 --- a/gcc/ada/g-moreex.ads +++ b/gcc/ada/g-moreex.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000 Ada Core Technologies, Inc. -- +-- Copyright (C) 2000-2005, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -45,9 +45,9 @@ package GNAT.Most_Recent_Exception is function Occurrence return Ada.Exceptions.Exception_Occurrence; - -- Returns the Exception_Occurrence for the most recently raised - -- exception in the current task. If no exception has been raised - -- in the current task prior to the call, returns Null_Occurrence. + -- Returns the Exception_Occurrence for the most recently raised exception + -- in the current task. If no exception has been raised in the current task + -- prior to the call, returns Null_Occurrence. function Occurrence_Access return Ada.Exceptions.Exception_Occurrence_Access; @@ -73,5 +73,4 @@ package GNAT.Most_Recent_Exception is -- -- not about the Constraint_Error exception being handled -- -- by the current handler code. - end GNAT.Most_Recent_Exception; diff --git a/gcc/ada/g-regpat.ads b/gcc/ada/g-regpat.ads index 82bab7f..0b8c38e 100644 --- a/gcc/ada/g-regpat.ads +++ b/gcc/ada/g-regpat.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1986 by University of Toronto. -- --- Copyright (C) 1996-2004 Ada Core Technologies, Inc. -- +-- Copyright (C) 1996-2005 Ada Core Technologies, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -524,7 +524,6 @@ pragma Preelaborate (Regpat); -- Expression_Error is raised if the given expression is not a legal -- regular expression. - procedure Match (Expression : String; Data : String; diff --git a/gcc/ada/g-soccon-vms.adb b/gcc/ada/g-soccon-vms.adb index ebd394c..42df2a6 100644 --- a/gcc/ada/g-soccon-vms.adb +++ b/gcc/ada/g-soccon-vms.adb @@ -4,9 +4,9 @@ -- -- -- G N A T . S O C K E T S . C O N S T A N T S -- -- -- --- S p e c -- +-- B o d y -- -- -- --- Copyright (C) 2000-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/g-soliop-mingw.ads b/gcc/ada/g-soliop-mingw.ads index e930da9..710d3c1 100644 --- a/gcc/ada/g-soliop-mingw.ads +++ b/gcc/ada/g-soliop-mingw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2003 Ada Core Technologies, Inc. -- +-- Copyright (C) 2001-2005 Ada Core Technologies, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -36,7 +36,6 @@ -- This is the Windows/NT version of this package - package GNAT.Sockets.Linker_Options is private pragma Linker_Options ("-lwsock32"); diff --git a/gcc/ada/gen-soccon.c b/gcc/ada/gen-soccon.c index de63816..04dfccf 100644 --- a/gcc/ada/gen-soccon.c +++ b/gcc/ada/gen-soccon.c @@ -4,7 +4,7 @@ ** ** ** G E N - S O C C O N ** ** ** -** Copyright (C) 2004 Free Software Foundation, Inc. ** +** Copyright (C) 2004-2005 Free Software Foundation, Inc. ** ** ** ** GNAT is free software; you can redistribute it and/or modify it under ** ** terms of the GNU General Public License as published by the Free Soft- ** @@ -27,11 +27,16 @@ #include <stdio.h> #include <string.h> -#include "socket.h" +#include "gsocket.h" + +#ifdef __MINGW32__ +#include <winsock2.h> +#else #include <netinet/in.h> #include <netinet/tcp.h> -#include <sys/filio.h> +#include <sys/ioctl.h> #include <netdb.h> +#endif struct line { char *text; @@ -48,8 +53,8 @@ struct line *first = NULL, *last = NULL; #define _NL TXT("") /* Empty line */ -#define itoad(n) itoa ("%d", n) -#define itoax(n) itoa ("16#%08x#", n) +#define itoad(n) f_itoa ("%d", n) +#define itoax(n) f_itoa ("16#%08x#", n) #define CND(name,comment) add_line(#name, itoad (name), comment); /* Constant (decimal) */ @@ -63,12 +68,13 @@ struct line *first = NULL, *last = NULL; void output (void); /* Generate output spec */ -char *itoa (char *, int); +char *f_itoa (char *, int); /* int to string */ void add_line (char *, char*, char*); -void main (void) { +int +main (void) { TXT("------------------------------------------------------------------------------") TXT("-- --") @@ -78,7 +84,7 @@ TXT("-- G N A T . S O C K E T S . C O N S T A N T S TXT("-- --") TXT("-- S p e c --") TXT("-- --") -TXT("-- Copyright (C) 2000-2004 Free Software Foundation, Inc. --") +TXT("-- Copyright (C) 2000-2005 Free Software Foundation, Inc. --") TXT("-- --") TXT("-- GNAT is free software; you can redistribute it and/or modify it under --") TXT("-- terms of the GNU General Public License as published by the Free Soft- --") @@ -507,15 +513,10 @@ CND(SO_ERROR, "Get/clear error status") #endif CND(SO_BROADCAST, "Can send broadcast msgs") -#ifndef IP_ADD_MEMBERSHIP -#define IP_ADD_MEMBERSHIP -1 -#endif -CND(IP_ADD_MEMBERSHIP, "Join a multicast group") - -#ifndef IP_DROP_MEMBERSHIP -#define IP_DROP_MEMBERSHIP -1 +#ifndef IP_MULTICAST_IF +#define IP_MULTICAST_IF -1 #endif -CND(IP_DROP_MEMBERSHIP, "Leave a multicast group") +CND(IP_MULTICAST_IF, "Set/get mcast interface") #ifndef IP_MULTICAST_TTL #define IP_MULTICAST_TTL -1 @@ -526,10 +527,22 @@ CND(IP_MULTICAST_TTL, "Set/get multicast TTL") #define IP_MULTICAST_LOOP -1 #endif CND(IP_MULTICAST_LOOP, "Set/get mcast loopback") + +#ifndef IP_ADD_MEMBERSHIP +#define IP_ADD_MEMBERSHIP -1 +#endif +CND(IP_ADD_MEMBERSHIP, "Join a multicast group") + +#ifndef IP_DROP_MEMBERSHIP +#define IP_DROP_MEMBERSHIP -1 +#endif +CND(IP_DROP_MEMBERSHIP, "Leave a multicast group") + _NL TXT("end GNAT.Sockets.Constants;") -output (); + output (); + return 0; } void @@ -563,13 +576,14 @@ output (void) { } char * -itoa (char *fmt, int n) { +f_itoa (char *fmt, int n) { char buf[32]; sprintf (buf, fmt, n); return strdup (buf); } -void add_line (char *_text, char *_value, char *_comment) { +void +add_line (char *_text, char *_value, char *_comment) { struct line *l = (struct line *) malloc (sizeof (struct line)); l->text = _text; l->value = _value; diff --git a/gcc/ada/gprep.adb b/gcc/ada/gprep.adb index 02e0752..9b59832 100644 --- a/gcc/ada/gprep.adb +++ b/gcc/ada/gprep.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2004, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2005, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -312,7 +312,6 @@ package body GPrep is null; end Obsolescent_Check; - --------------- -- Post_Scan -- --------------- diff --git a/gcc/ada/i-cexten.ads b/gcc/ada/i-cexten.ads index e1203ff..c78303c 100644 --- a/gcc/ada/i-cexten.ads +++ b/gcc/ada/i-cexten.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992,1993,1994,1995 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -247,5 +247,4 @@ package Interfaces.C.Extensions is type Signed_32 is range -2 ** 31 .. 2 ** 31 - 1; for Signed_32'Size use 32; - end Interfaces.C.Extensions; diff --git a/gcc/ada/i-os2thr.ads b/gcc/ada/i-os2thr.ads index 0c3f3aa..0bee969 100644 --- a/gcc/ada/i-os2thr.ads +++ b/gcc/ada/i-os2thr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1993-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1993-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -91,7 +91,6 @@ pragma Preelaborate (Threads); function DosKillThread (Id : TID) return APIRET; pragma Import (C, DosKillThread, "DosKillThread"); - DCWW_WAIT : constant := 0; DCWW_NOWAIT : constant := 1; -- Values for "Option" parameter in DosWaitThread call diff --git a/gcc/ada/i-vxwork-x86.ads b/gcc/ada/i-vxwork-x86.ads index bbae923..e6edc14 100644 --- a/gcc/ada/i-vxwork-x86.ads +++ b/gcc/ada/i-vxwork-x86.ads @@ -1,12 +1,12 @@ ------------------------------------------------------------------------------ -- -- --- GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS -- +-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- -- -- -- I N T E R F A C E S . V X W O R K S -- -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2004 Ada Core Technologies, Inc. -- +-- Copyright (C) 1999-2005, AdaCore -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -137,6 +137,10 @@ package Interfaces.VxWorks is -- user handler. The routine generates a wrapper around the user -- handler to save and restore context + function intContext return int; + -- Binding to the C routine intContext. This function returns 1 only + -- if the current execution state is in interrupt context. + function intVecGet (Vector : Interrupt_Vector) return VOIDFUNCPTR; -- Binding to the C routine intVecGet. Use this to get the @@ -200,6 +204,7 @@ private -- Target-dependent floating point context type pragma Import (C, intConnect, "intConnect"); + pragma Import (C, intContext, "intContext"); pragma Import (C, intVecGet, "intVecGet"); pragma Import (C, intVecSet, "intVecSet"); pragma Import (C, intVecGet2, "intVecGet2"); diff --git a/gcc/ada/i-vxwork.ads b/gcc/ada/i-vxwork.ads index fc1acb1..0c2febc 100644 --- a/gcc/ada/i-vxwork.ads +++ b/gcc/ada/i-vxwork.ads @@ -1,12 +1,12 @@ ------------------------------------------------------------------------------ -- -- --- GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS -- +-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- -- -- -- I N T E R F A C E S . V X W O R K S -- -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2003 Ada Core Technologies, Inc. -- +-- Copyright (C) 1999-2005, AdaCore -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -138,6 +138,10 @@ package Interfaces.VxWorks is -- user handler. The routine generates a wrapper around the user -- handler to save and restore context + function intContext return int; + -- Binding to the C routine intContext. This function returns 1 only + -- if the current execution state is in interrupt context. + function intVecGet (Vector : Interrupt_Vector) return VOIDFUNCPTR; -- Binding to the C routine intVecGet. Use this to get the @@ -192,6 +196,7 @@ private -- Target-dependent floating point context type pragma Import (C, intConnect, "intConnect"); + pragma Import (C, intContext, "intContext"); pragma Import (C, intVecGet, "intVecGet"); pragma Import (C, intVecSet, "intVecSet"); pragma Import (C, INUM_TO_IVEC, "__gnat_inum_to_ivec"); diff --git a/gcc/ada/makeutl.ads b/gcc/ada/makeutl.ads index 2053e3e..94b337a 100644 --- a/gcc/ada/makeutl.ads +++ b/gcc/ada/makeutl.ads @@ -63,7 +63,6 @@ package Makeutl is -- of project Project, in project tree In_Tree, and in the projects that -- it imports directly or indirectly, and returns the result. - -- Package Mains is used to store the mains specified on the command line -- and to retrieve them when a project file is used, to verify that the -- files exist and that they belong to a project file. diff --git a/gcc/ada/memroot.adb b/gcc/ada/memroot.adb index edfce66..4f515d2 100644 --- a/gcc/ada/memroot.adb +++ b/gcc/ada/memroot.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2003 Ada Core Technologies, Inc. -- +-- Copyright (C) 1997-2005, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -425,6 +425,7 @@ package body Memroot is pragma Warnings (Off, Line); procedure Find_File; + pragma Inline (Find_File); -- Position Curs1 and Curs2 so that Line (Curs1 .. Curs2) contains -- the file name. The file name may not be on the current line since -- a frame may be printed on more than one line when there is a lot @@ -432,21 +433,21 @@ package body Memroot is -- lines of input. procedure Find_Line; + pragma Inline (Find_Line); -- Position Curs1 and Curs2 so that Line (Curs1 .. Curs2) contains -- the line number. procedure Find_Name; + pragma Inline (Find_Name); -- Position Curs1 and Curs2 so that Line (Curs1 .. Curs2) contains -- the subprogram name. function Skip_To_Space (Pos : Integer) return Integer; + pragma Inline (Skip_To_Space); -- Scans Line starting with position Pos, returning the position -- immediately before the first space, or the value of Last if no -- spaces were found - - pragma Inline (Find_File, Find_Line, Find_Name, Skip_To_Space); - --------------- -- Find_File -- --------------- diff --git a/gcc/ada/mlib-prj.adb b/gcc/ada/mlib-prj.adb index 541f485..794c102 100644 --- a/gcc/ada/mlib-prj.adb +++ b/gcc/ada/mlib-prj.adb @@ -811,7 +811,7 @@ package body MLib.Prj is (B_Start & Get_Name_String (Data.Library_Name) & ".adb"); Add_Argument ("-L" & Get_Name_String (Data.Library_Name)); - -- Check if Binder'Default_Switches ("Ada) is defined. If it is, + -- Check if Binder'Default_Switches ("Ada") is defined. If it is, -- add these switches to call gnatbind. declare diff --git a/gcc/ada/namet.adb b/gcc/ada/namet.adb index b10696d..916c667 100644 --- a/gcc/ada/namet.adb +++ b/gcc/ada/namet.adb @@ -120,7 +120,6 @@ package body Namet is end loop; end Add_Str_To_Name_Buffer; - -------------- -- Finalize -- -------------- @@ -314,7 +313,6 @@ package body Namet is Insert_Character (Character'Val (Hex (2))); end if; - -- WW (wide wide character insertion) elsif C = 'W' diff --git a/gcc/ada/namet.ads b/gcc/ada/namet.ads index 3a3e5e0..2434dd7 100644 --- a/gcc/ada/namet.ads +++ b/gcc/ada/namet.ads @@ -61,7 +61,6 @@ package Namet is -- followed by an upper case letter (other than the WW -- sequence), or an underscore. - -- Operator symbols Stored with an initial letter O, and the remainder -- of the name is the lower case characters XXX where -- the name is Name_Op_XXX, see Snames spec for a full diff --git a/gcc/ada/prj-makr.adb b/gcc/ada/prj-makr.adb index d04ab20..f1c9c0f 100644 --- a/gcc/ada/prj-makr.adb +++ b/gcc/ada/prj-makr.adb @@ -119,8 +119,6 @@ package body Prj.Makr is is Tree : constant Project_Node_Tree_Ref := new Project_Node_Tree_Data; - - Path_Name : String (1 .. File_Path'Length + Project_File_Extension'Length); Path_Last : Natural := File_Path'Length; diff --git a/gcc/ada/prj-proc.adb b/gcc/ada/prj-proc.adb index 7ccd575..e351f7a 100644 --- a/gcc/ada/prj-proc.adb +++ b/gcc/ada/prj-proc.adb @@ -2185,7 +2185,6 @@ package body Prj.Proc is Location_Of (From_Project_Node, From_Project_Node_Tree); - begin Project := Processed_Projects.Get (Name); diff --git a/gcc/ada/repinfo.ads b/gcc/ada/repinfo.ads index 72a31ed..902cabe 100644 --- a/gcc/ada/repinfo.ads +++ b/gcc/ada/repinfo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -55,7 +55,7 @@ package Repinfo is -- For composite types, there are three cases: -- 1. In some cases the front end knows the values statically, - -- for example in the ase where representation clauses or + -- for example in the case where representation clauses or -- pragmas specify the values. -- 2. If Backend_Layout is True, then the backend is responsible diff --git a/gcc/ada/s-finimp.adb b/gcc/ada/s-finimp.adb index 0ef7443..6f40fa3 100644 --- a/gcc/ada/s-finimp.adb +++ b/gcc/ada/s-finimp.adb @@ -85,9 +85,6 @@ package body System.Finalization_Implementation is return SSE.Storage_Count; pragma Import (Ada, Parent_Size, "ada__tags__parent_size"); - function Parent_Tag (T : Ada.Tags.Tag) return Ada.Tags.Tag; - pragma Import (Ada, Parent_Tag, "ada__tags__parent_tag"); - function Get_Deep_Controller (Obj : System.Address) return RC_Ptr; -- Given the address (obj) of a tagged object, return a -- pointer to the record controller of this object. @@ -473,7 +470,7 @@ package body System.Finalization_Implementation is -- when there are no controller at this level while Offset = -2 loop - The_Tag := Parent_Tag (The_Tag); + The_Tag := Ada.Tags.Parent_Tag (The_Tag); Offset := RC_Offset (The_Tag); end loop; diff --git a/gcc/ada/s-restri.adb b/gcc/ada/s-restri.adb index be39f23..da6d285 100644 --- a/gcc/ada/s-restri.adb +++ b/gcc/ada/s-restri.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004 Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -145,4 +145,3 @@ begin end loop; end Acquire_Restrictions; end System.Restrictions; - diff --git a/gcc/ada/s-restri.ads b/gcc/ada/s-restri.ads index fc0e3e9..6aec4e2 100644 --- a/gcc/ada/s-restri.ads +++ b/gcc/ada/s-restri.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004 Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -65,5 +65,3 @@ package System.Restrictions is -- must be False, and Max_Tasks must not be set to zero. end System.Restrictions; - - diff --git a/gcc/ada/s-tasinf.adb b/gcc/ada/s-tasinf.adb index 86aa5a4..9ad8bb0 100644 --- a/gcc/ada/s-tasinf.adb +++ b/gcc/ada/s-tasinf.adb @@ -4,10 +4,10 @@ -- -- -- S Y S T E M . T A S K _ I N F O -- -- -- --- S p e c -- +-- B o d y -- -- (Compiler Interface) -- -- -- --- Copyright (C) 1998-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -40,5 +40,4 @@ -- implementation of the Task_Info pragma. package body System.Task_Info is - end System.Task_Info; diff --git a/gcc/ada/s-traent-vms.adb b/gcc/ada/s-traent-vms.adb index 532acad..157c3e0 100644 --- a/gcc/ada/s-traent-vms.adb +++ b/gcc/ada/s-traent-vms.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003 Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -65,4 +65,3 @@ package body System.Traceback_Entries is end TB_Entry_For; end System.Traceback_Entries; - diff --git a/gcc/ada/s-traent-vms.ads b/gcc/ada/s-traent-vms.ads index 0d27c19..d79e200 100644 --- a/gcc/ada/s-traent-vms.ads +++ b/gcc/ada/s-traent-vms.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003 Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -56,4 +56,3 @@ package System.Traceback_Entries is function TB_Entry_For (PC : System.Address) return Traceback_Entry; end System.Traceback_Entries; - diff --git a/gcc/ada/s-traent.adb b/gcc/ada/s-traent.adb index a143714..27fe9c4 100644 --- a/gcc/ada/s-traent.adb +++ b/gcc/ada/s-traent.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003 Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -35,7 +35,6 @@ -- -- ------------------------------------------------------------------------------ - package body System.Traceback_Entries is ------------ diff --git a/gcc/ada/s-traent.ads b/gcc/ada/s-traent.ads index d0c0865..33e4dff 100644 --- a/gcc/ada/s-traent.ads +++ b/gcc/ada/s-traent.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003 Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -58,5 +58,3 @@ package System.Traceback_Entries is -- Returns an entry representing a frame for a call instruction at PC. end System.Traceback_Entries; - - diff --git a/gcc/ada/s-valint.adb b/gcc/ada/s-valint.adb index 9d8b6b1..6e4b6ee 100644 --- a/gcc/ada/s-valint.adb +++ b/gcc/ada/s-valint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -44,8 +44,7 @@ package body System.Val_Int is function Scan_Integer (Str : String; Ptr : access Integer; - Max : Integer) - return Integer + Max : Integer) return Integer is Uval : Unsigned; -- Unsigned result @@ -79,7 +78,6 @@ package body System.Val_Int is else return Integer (Uval); end if; - end Scan_Integer; ------------------- @@ -89,7 +87,6 @@ package body System.Val_Int is function Value_Integer (Str : String) return Integer is V : Integer; P : aliased Integer := Str'First; - begin V := Scan_Integer (Str, P'Access, Str'Last); Scan_Trailing_Blanks (Str, P); diff --git a/gcc/ada/s-vallli.adb b/gcc/ada/s-vallli.adb index 14ecb2b..56e830b 100644 --- a/gcc/ada/s-vallli.adb +++ b/gcc/ada/s-vallli.adb @@ -4,9 +4,9 @@ -- -- -- S Y S T E M . V A L _ L L I -- -- -- --- S p e c -- +-- B o d y -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -44,8 +44,7 @@ package body System.Val_LLI is function Scan_Long_Long_Integer (Str : String; Ptr : access Integer; - Max : Integer) - return Long_Long_Integer + Max : Integer) return Long_Long_Integer is Uval : Long_Long_Unsigned; -- Unsigned result @@ -80,7 +79,6 @@ package body System.Val_LLI is else return Long_Long_Integer (Uval); end if; - end Scan_Long_Long_Integer; ----------------------------- @@ -95,7 +93,6 @@ package body System.Val_LLI is V := Scan_Long_Long_Integer (Str, P'Access, Str'Last); Scan_Trailing_Blanks (Str, P); return V; - end Value_Long_Long_Integer; end System.Val_LLI; diff --git a/gcc/ada/s-vallli.ads b/gcc/ada/s-vallli.ads index 7b52220..3efb1d0 100644 --- a/gcc/ada/s-vallli.ads +++ b/gcc/ada/s-vallli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -40,8 +40,7 @@ pragma Pure (Val_LLI); function Scan_Long_Long_Integer (Str : String; Ptr : access Integer; - Max : Integer) - return Long_Long_Integer; + Max : Integer) return Long_Long_Integer; -- This function scans the string starting at Str (Ptr.all) for a valid -- integer according to the syntax described in (RM 3.5(43)). The substring -- scanned extends no further than Str (Max). There are three cases for the diff --git a/gcc/ada/s-valllu.adb b/gcc/ada/s-valllu.adb index 2403e9d..bfb1b5d 100644 --- a/gcc/ada/s-valllu.adb +++ b/gcc/ada/s-valllu.adb @@ -4,9 +4,9 @@ -- -- -- S Y S T E M . V A L _ L L U -- -- -- --- S p e c -- +-- B o d y -- -- -- --- Copyright (C) 1992-1997 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -43,8 +43,7 @@ package body System.Val_LLU is function Scan_Long_Long_Unsigned (Str : String; Ptr : access Integer; - Max : Integer) - return Long_Long_Unsigned + Max : Integer) return Long_Long_Unsigned is P : Integer; -- Local copy of the pointer @@ -286,8 +285,7 @@ package body System.Val_LLU is ------------------------------ function Value_Long_Long_Unsigned - (Str : String) - return Long_Long_Unsigned + (Str : String) return Long_Long_Unsigned is V : Long_Long_Unsigned; P : aliased Integer := Str'First; @@ -296,7 +294,6 @@ package body System.Val_LLU is V := Scan_Long_Long_Unsigned (Str, P'Access, Str'Last); Scan_Trailing_Blanks (Str, P); return V; - end Value_Long_Long_Unsigned; end System.Val_LLU; diff --git a/gcc/ada/s-valllu.ads b/gcc/ada/s-valllu.ads index 8311f52..c3a6c2b 100644 --- a/gcc/ada/s-valllu.ads +++ b/gcc/ada/s-valllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -42,8 +42,7 @@ pragma Pure (Val_LLU); function Scan_Long_Long_Unsigned (Str : String; Ptr : access Integer; - Max : Integer) - return System.Unsigned_Types.Long_Long_Unsigned; + Max : Integer) return System.Unsigned_Types.Long_Long_Unsigned; -- This function scans the string starting at Str (Ptr.all) for a valid -- integer according to the syntax described in (RM 3.5(43)). The substring -- scanned extends no further than Str (Max). There are three cases for the @@ -71,8 +70,7 @@ pragma Pure (Val_LLU); -- is greater than Max as required in this case. function Value_Long_Long_Unsigned - (Str : String) - return System.Unsigned_Types.Long_Long_Unsigned; + (Str : String) return System.Unsigned_Types.Long_Long_Unsigned; -- Used in computing X'Value (Str) where X is a modular integer type whose -- modulus exceeds the range of System.Unsigned_Types.Unsigned. Str is the -- string argument of the attribute. Constraint_Error is raised if the diff --git a/gcc/ada/s-valrea.adb b/gcc/ada/s-valrea.adb index 28f687e..0c5128e 100644 --- a/gcc/ada/s-valrea.adb +++ b/gcc/ada/s-valrea.adb @@ -4,9 +4,9 @@ -- -- -- S Y S T E M . V A L _ R E A L -- -- -- --- S p e c -- +-- B o d y -- -- -- --- Copyright (C) 1992-2003 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -43,8 +43,7 @@ package body System.Val_Real is function Scan_Real (Str : String; Ptr : access Integer; - Max : Integer) - return Long_Long_Float + Max : Integer) return Long_Long_Float is procedure Reset; pragma Import (C, Reset, "__gnat_init_float"); @@ -369,7 +368,6 @@ package body System.Val_Real is return Uval; end if; end if; - end Scan_Real; ---------------- @@ -384,7 +382,6 @@ package body System.Val_Real is V := Scan_Real (Str, P'Access, Str'Last); Scan_Trailing_Blanks (Str, P); return V; - end Value_Real; end System.Val_Real; diff --git a/gcc/ada/s-valrea.ads b/gcc/ada/s-valrea.ads index 94e4058..2d01468 100644 --- a/gcc/ada/s-valrea.ads +++ b/gcc/ada/s-valrea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -37,8 +37,7 @@ pragma Pure (Val_Real); function Scan_Real (Str : String; Ptr : access Integer; - Max : Integer) - return Long_Long_Float; + Max : Integer) return Long_Long_Float; -- This function scans the string starting at Str (Ptr.all) for a valid -- real literal according to the syntax described in (RM 3.5(43)). The -- substring scanned extends no further than Str (Max). There are three diff --git a/gcc/ada/scn.adb b/gcc/ada/scn.adb index b83be64..3cbce8c 100644 --- a/gcc/ada/scn.adb +++ b/gcc/ada/scn.adb @@ -45,8 +45,8 @@ package body Scn is -- keyword as an identifier once for a given keyword). procedure Check_End_Of_Line; - -- Called when end of line encountered. Checks that line is not - -- too long, and that other style checks for the end of line are met. + -- Called when end of line encountered. Checks that line is not too long, + -- and that other style checks for the end of line are met. function Determine_License return License_Type; -- Scan header of file and check that it has an appropriate GNAT-style diff --git a/gcc/ada/seh_init.c b/gcc/ada/seh_init.c index 15cda4f..c1ee9ca 100644 --- a/gcc/ada/seh_init.c +++ b/gcc/ada/seh_init.c @@ -36,7 +36,6 @@ #ifdef IN_RTS #include "tconfig.h" #include "tsystem.h" -#include <sys/stat.h> /* We don't have libiberty, so us malloc. */ #define xmalloc(S) malloc (S) diff --git a/gcc/ada/sem_dist.adb b/gcc/ada/sem_dist.adb index 188190f..cc71e21 100644 --- a/gcc/ada/sem_dist.adb +++ b/gcc/ada/sem_dist.adb @@ -425,7 +425,6 @@ package body Sem_Dist is (Loc, New_External_Name ( Chars (User_Type), 'R')); - Full_Obj_Type : constant Entity_Id := Make_Defining_Identifier (Loc, Chars (Obj_Type)); diff --git a/gcc/ada/sem_elim.ads b/gcc/ada/sem_elim.ads index 4e9911f..50c4659 100644 --- a/gcc/ada/sem_elim.ads +++ b/gcc/ada/sem_elim.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -58,6 +58,4 @@ package Sem_Elim is -- subprogram. N is the node for the call, and E is the entity of -- the subprogram being eliminated. - - end Sem_Elim; diff --git a/gcc/ada/system-hpux-ia64.ads b/gcc/ada/system-hpux-ia64.ads new file mode 100644 index 0000000..c507d97 --- /dev/null +++ b/gcc/ada/system-hpux-ia64.ads @@ -0,0 +1,153 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- S Y S T E M -- +-- -- +-- S p e c -- +-- (HP-UX/ia64 Version) -- +-- -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- +-- -- +-- This specification is derived from the Ada Reference Manual for use with -- +-- GNAT. The copyright notice above, and the license provisions that follow -- +-- apply solely to the contents of the part following the private keyword. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 2, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- +-- for more details. You should have received a copy of the GNU General -- +-- Public License distributed with GNAT; see file COPYING. If not, write -- +-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- +-- MA 02111-1307, USA. -- +-- -- +-- As a special exception, if other files instantiate generics from this -- +-- unit, or you link this unit with other files to produce an executable, -- +-- this unit does not by itself cause the resulting executable to be -- +-- covered by the GNU General Public License. This exception does not -- +-- however invalidate any other reasons why the executable file might be -- +-- covered by the GNU Public License. -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +package System is +pragma Pure (System); +-- Note that we take advantage of the implementation permission to make this +-- unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada 2005, this is +-- Pure in any case (AI-362). + + type Name is (SYSTEM_NAME_GNAT); + System_Name : constant Name := SYSTEM_NAME_GNAT; + + -- System-Dependent Named Numbers + + Min_Int : constant := Long_Long_Integer'First; + Max_Int : constant := Long_Long_Integer'Last; + + Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; + Max_Nonbinary_Modulus : constant := Integer'Last; + + Max_Base_Digits : constant := Long_Long_Float'Digits; + Max_Digits : constant := Long_Long_Float'Digits; + + Max_Mantissa : constant := 63; + Fine_Delta : constant := 2.0 ** (-Max_Mantissa); + + Tick : constant := 0.01; + + -- Storage-related Declarations + + type Address is private; + Null_Address : constant Address; + + Storage_Unit : constant := 8; + Word_Size : constant := 64; + Memory_Size : constant := 2 ** 64; + + -- Address comparison + + function "<" (Left, Right : Address) return Boolean; + function "<=" (Left, Right : Address) return Boolean; + function ">" (Left, Right : Address) return Boolean; + function ">=" (Left, Right : Address) return Boolean; + function "=" (Left, Right : Address) return Boolean; + + pragma Import (Intrinsic, "<"); + pragma Import (Intrinsic, "<="); + pragma Import (Intrinsic, ">"); + pragma Import (Intrinsic, ">="); + pragma Import (Intrinsic, "="); + + -- Other System-Dependent Declarations + + type Bit_Order is (High_Order_First, Low_Order_First); + Default_Bit_Order : constant Bit_Order := High_Order_First; + + -- Priority-related Declarations (RM D.1) + + Max_Priority : constant Positive := 30; + Max_Interrupt_Priority : constant Positive := 31; + + subtype Any_Priority is Integer range 0 .. 31; + subtype Priority is Any_Priority range 0 .. 30; + subtype Interrupt_Priority is Any_Priority range 31 .. 31; + + Default_Priority : constant Priority := 15; + +private + + type Address is mod Memory_Size; + Null_Address : constant Address := 0; + + -------------------------------------- + -- System Implementation Parameters -- + -------------------------------------- + + -- These parameters provide information about the target that is used + -- by the compiler. They are in the private part of System, where they + -- can be accessed using the special circuitry in the Targparm unit + -- whose source should be consulted for more detailed descriptions + -- of the individual switch values. + + AAMP : constant Boolean := False; + Backend_Divide_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := False; + Command_Line_Args : constant Boolean := True; + Compiler_System_Version : constant Boolean := False; + Configurable_Run_Time : constant Boolean := False; + Denorm : constant Boolean := True; + Duration_32_Bits : constant Boolean := False; + Exit_Status_Supported : constant Boolean := True; + Fractional_Fixed_Ops : constant Boolean := False; + Frontend_Layout : constant Boolean := False; + Functions_Return_By_DSP : constant Boolean := False; + Machine_Overflows : constant Boolean := False; + Machine_Rounds : constant Boolean := True; + OpenVMS : constant Boolean := False; + Preallocated_Stacks : constant Boolean := False; + Signed_Zeros : constant Boolean := True; + Stack_Check_Default : constant Boolean := False; + Stack_Check_Probes : constant Boolean := False; + Support_64_Bit_Divides : constant Boolean := True; + Support_Aggregates : constant Boolean := True; + Support_Composite_Assign : constant Boolean := True; + Support_Composite_Compare : constant Boolean := True; + Support_Long_Shifts : constant Boolean := True; + Suppress_Standard_Library : constant Boolean := False; + Use_Ada_Main_Program_Name : constant Boolean := False; + ZCX_By_Default : constant Boolean := False; + GCC_ZCX_Support : constant Boolean := False; + Front_End_ZCX_Support : constant Boolean := False; + + -- Obsolete entries, to be removed eventually (bootstrap issues!) + + High_Integrity_Mode : constant Boolean := False; + Long_Shifts_Inlined : constant Boolean := True; + +end System; diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb index afbb50a..c3fda4a 100644 --- a/gcc/ada/targparm.adb +++ b/gcc/ada/targparm.adb @@ -628,7 +628,6 @@ package body Targparm is end loop; end if; - if Fatal then raise Unrecoverable_Error; end if; diff --git a/gcc/ada/uname.adb b/gcc/ada/uname.adb index 7353c9f..114d2a3 100644 --- a/gcc/ada/uname.adb +++ b/gcc/ada/uname.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2004, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -527,8 +527,7 @@ package body Uname is function New_Child (Old : Unit_Name_Type; - Newp : Unit_Name_Type) - return Unit_Name_Type + Newp : Unit_Name_Type) return Unit_Name_Type is P : Natural; diff --git a/gcc/ada/uname.ads b/gcc/ada/uname.ads index 2439b9d..d96780a 100644 --- a/gcc/ada/uname.ads +++ b/gcc/ada/uname.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-1998, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -140,8 +140,7 @@ package Uname is function New_Child (Old : Unit_Name_Type; - Newp : Unit_Name_Type) - return Unit_Name_Type; + Newp : Unit_Name_Type) return Unit_Name_Type; -- Old is a child unit name (for either a body or spec). Newp is the -- unit name of the actual parent (this may be different from the -- parent in old). The returned unit name is formed by taking the diff --git a/gcc/ada/vxaddr2line.adb b/gcc/ada/vxaddr2line.adb index 6d79cfc..35afbcc 100644 --- a/gcc/ada/vxaddr2line.adb +++ b/gcc/ada/vxaddr2line.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2004 Ada Core Technologies, Inc. -- +-- Copyright (C) 2002-2005 Ada Core Technologies, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -83,6 +83,7 @@ procedure VxAddr2Line is type Architecture is (SOLARIS_I586, WINDOWS_POWERPC, + WINDOWS_I586, WINDOWS_M68K, SOLARIS_POWERPC, DEC_ALPHA); @@ -121,6 +122,11 @@ procedure VxAddr2Line is Nm_Binary => null, Addr_Digits_To_Skip => 0, Bt_Offset_From_Call => -4), + WINDOWS_I586 => + (Addr2line_Binary => null, + Nm_Binary => null, + Addr_Digits_To_Skip => 0, + Bt_Offset_From_Call => -2), SOLARIS_POWERPC => (Addr2line_Binary => null, Nm_Binary => null, diff --git a/gcc/ada/xeinfo.adb b/gcc/ada/xeinfo.adb index 272112d..f485614 100644 --- a/gcc/ada/xeinfo.adb +++ b/gcc/ada/xeinfo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -25,7 +25,7 @@ ------------------------------------------------------------------------------ -- Program to construct C header file a-einfo.h (C version of einfo.ads spec) --- for use by Gigi. This header file contaInF all definitions and access +-- for use by Gigi. This header file contains all definitions and access -- functions, but does not contain set procedures, since Gigi is not allowed -- to modify the GNAT tree) diff --git a/gcc/ada/xnmake.adb b/gcc/ada/xnmake.adb index e4802f2..bddbfc8 100644 --- a/gcc/ada/xnmake.adb +++ b/gcc/ada/xnmake.adb @@ -283,8 +283,12 @@ begin end loop; end if; + -- Loop keeps going until "package" keyword written + exit when Match (Line, "package"); + -- Deal with WITH lines, writing to body or spec as appropriate + if Match (Line, Body_Only, M) then Replace (M, X); WriteB (Line); @@ -293,6 +297,8 @@ begin Replace (M, X); WriteS (Line); + -- Change header from Template to Spec and write to spec file + else if Match (Line, Templ, M) then Replace (M, A & " S p e c "); @@ -300,6 +306,8 @@ begin WriteS (Line); + -- Write header line to body file + if Match (Line, Spec, M) then Replace (M, A & "B o d y"); end if; diff --git a/gcc/ada/xsinfo.adb b/gcc/ada/xsinfo.adb index c6ade51..6e8948e 100644 --- a/gcc/ada/xsinfo.adb +++ b/gcc/ada/xsinfo.adb @@ -88,9 +88,12 @@ procedure XSinfo is M : Match_Result; - procedure Getline; - -- Get non-comment, non-blank line. Also skips "for " rep clauses. + -- Get non-comment, non-blank line. Also skips "for " rep clauses + + ------------- + -- Getline -- + ------------- procedure Getline is begin diff --git a/gcc/ada/xsnames.adb b/gcc/ada/xsnames.adb index d93cfbd..5f80ac5 100644 --- a/gcc/ada/xsnames.adb +++ b/gcc/ada/xsnames.adb @@ -24,10 +24,11 @@ -- -- ------------------------------------------------------------------------------ --- This utility is used to make a new version of the Snames package when --- new names are added to the spec, the existing versions of snames.ads and --- snames.adb are read, and updated to match the set of names in snames.ads. --- The updated versions are written to snames.ns and snames.nb (new spec/body) +-- This utility is used to make a new version of the Snames package when new +-- names are added to the spec, the existing versions of snames.ads and +-- snames.adb and snames.h are read, and updated to match the set of names in +-- snames.ads. The updated versions are written to snames.ns, snames.nb (new +-- spec/body), and snames.nh (new header file). with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Ada.Strings.Unbounded.Text_IO; use Ada.Strings.Unbounded.Text_IO; @@ -44,6 +45,8 @@ procedure XSnames is InS : File_Type; OutS : File_Type; OutB : File_Type; + InH : File_Type; + OutH : File_Type; A, B : VString := Nul; Line : VString := Nul; @@ -74,12 +77,90 @@ procedure XSnames is M : Match_Result; + type Header_Symbol is (None, Attr, Conv, Prag); + -- A symbol in the header file + + -- Prefixes used in the header file + + Header_Attr : aliased String := "Attr"; + Header_Conv : aliased String := "Convention"; + Header_Prag : aliased String := "Pragma"; + + type String_Ptr is access all String; + Header_Prefix : constant array (Header_Symbol) of String_Ptr := + (null, + Header_Attr'Access, + Header_Conv'Access, + Header_Prag'Access); + + -- Patterns used in the spec file + + Get_Attr : Pattern := Span (' ') & "Attribute_" & Break (",)") * Name1; + Get_Conv : Pattern := Span (' ') & "Convention_" & Break (",)") * Name1; + Get_Prag : Pattern := Span (' ') & "Pragma_" & Break (",)") * Name1; + + type Header_Symbol_Counter is array (Header_Symbol) of Natural; + Header_Counter : Header_Symbol_Counter := (0, 0, 0, 0); + + Header_Current_Symbol : Header_Symbol := None; + Header_Pending_Line : VString := Nul; + + ------------------------ + -- Output_Header_Line -- + ------------------------ + + procedure Output_Header_Line (S : Header_Symbol) is + begin + -- Skip all the #define for S-prefixed symbols in the header. + -- Of course we are making implicit assumptions: + -- (1) No newline between symbols with the same prefix. + -- (2) Prefix order is the same as in snames.ads. + + if Header_Current_Symbol /= S then + declare + Pat : String := "#define " & Header_Prefix (S).all; + In_Pat : Boolean := False; + + begin + if Header_Current_Symbol /= None then + Put_Line (OutH, Header_Pending_Line); + end if; + + loop + Line := Get_Line (InH); + + if Match (Line, Pat) then + In_Pat := true; + elsif In_Pat then + Header_Pending_Line := Line; + exit; + else + Put_Line (OutH, Line); + end if; + end loop; + + Header_Current_Symbol := S; + end; + end if; + + -- Now output the line + + Put_Line (OutH, "#define " & Header_Prefix (S).all + & "_" & Name1 & (30 - Length (Name1)) * ' ' + & Header_Counter (S)); + Header_Counter (S) := Header_Counter (S) + 1; + end Output_Header_Line; + +-- Start of processing for XSnames + begin Open (InB, In_File, "snames.adb"); Open (InS, In_File, "snames.ads"); + Open (InH, In_File, "snames.h"); Create (OutS, Out_File, "snames.ns"); Create (OutB, Out_File, "snames.nb"); + Create (OutH, Out_File, "snames.nh"); Anchored_Mode := True; Oname := Nul; @@ -99,6 +180,13 @@ begin if not Match (Line, Name_Ref) then Put_Line (OutS, Line); + if Match (Line, Get_Attr) then + Output_Header_Line (Attr); + elsif Match (Line, Get_Conv) then + Output_Header_Line (Conv); + elsif Match (Line, Get_Prag) then + Output_Header_Line (Prag); + end if; else Oval := Lpad (V (Val), 3, '0'); @@ -144,6 +232,13 @@ begin Put_Line (OutB, Line); while not End_Of_File (InB) loop - Put_Line (OutB, Get_Line (InB)); + Line := Get_Line (InB); + Put_Line (OutB, Line); + end loop; + + Put_Line (OutH, Header_Pending_Line); + while not End_Of_File (InH) loop + Line := Get_Line (InH); + Put_Line (OutH, Line); end loop; end XSnames; |