diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-04-25 17:54:39 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-04-25 17:54:39 +0200 |
commit | 211e7410b32e6cb4b45d414883c5d6d5f37faa31 (patch) | |
tree | 55dae71c0ef21060e28548eed6b71f8e8f1b0965 /gcc/ada/fmap.adb | |
parent | f66c70dc0392cfa06f6414a8b9fa65adb9051b58 (diff) | |
download | gcc-211e7410b32e6cb4b45d414883c5d6d5f37faa31.zip gcc-211e7410b32e6cb4b45d414883c5d6d5f37faa31.tar.gz gcc-211e7410b32e6cb4b45d414883c5d6d5f37faa31.tar.bz2 |
[multiple changes]
2017-04-25 Arnaud Charlet <charlet@adacore.com>
* exp_ch4.adb (Expand_N_Case_Expression): Emit error message when
generating C code on complex case expressions.
2017-04-25 Arnaud Charlet <charlet@adacore.com>
* sem_prag.adb (Analyze_Pragma): Generate a warning instead
of silently ignoring pragma Ada_xxx in Latest_Ada_Only mode.
* directio.ads, ioexcept.ads, sequenio.ads, text_io.ads: Use
Ada_2012 instead of Ada_2005 to be compatible with the above
change.
* bindgen.adb: Silence new warning on pragma Ada_95.
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com>
* checks.adb (Generate_Range_Check): Revert part of previous change.
2017-04-25 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Try_Container_Indexing): Handle properly a
container indexing operation that appears as a an actual in a
parameter association in a procedure call.
2017-04-25 Olivier Ramonat <ramonat@adacore.com>
* prj-proc.adb, sem_util.adb, s-stposu.adb, sem_attr.adb, prj-conf.ads:
Fix spelling mistakes.
2017-04-25 Bob Duff <duff@adacore.com>
* types.ads, osint.adb, sinput-c.adb, sinput-d.adb, sinput-l.adb,
* sinput-p.adb: Use regular fat pointers, with bounds checking,
for source buffers. Fix misc obscure bugs.
* sinput.ads, sinput.adb: Use regular fat pointers, with bounds
checking, for source buffers. Modify representation clause for
Source_File_Record as appropriate. Move Source_File_Index_Table
from spec to body, because it is not used outside the body.
Move Set_Source_File_Index_Table into the private part, because
it is used only in the body and in children. Use trickery to
modify the dope in the generic instantiation case. It's ugly,
but not as ugly as the previous method. Fix documentation.
Remove obsolete code.
* fname-sf.adb, targparm.adb: Fix misc out-of-bounds
indexing in source buffers.
* fmap.adb: Avoid conversions from one string type to another.
Remove a use of global name buffer.
* osint.ads, sfn_scan.ads, sfn_scan.adb, sinput-c.ads: Comment
fixes.
From-SVN: r247252
Diffstat (limited to 'gcc/ada/fmap.adb')
-rw-r--r-- | gcc/ada/fmap.adb | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/gcc/ada/fmap.adb b/gcc/ada/fmap.adb index 738d0ac..d517c2a 100644 --- a/gcc/ada/fmap.adb +++ b/gcc/ada/fmap.adb @@ -45,9 +45,6 @@ package body Fmap is -- procedure Initialize, so that no attempt is made to open the mapping -- file in procedure Update_Mapping_File. - function To_Big_String_Ptr is new Unchecked_Conversion - (Source_Buffer_Ptr, Big_String_Ptr); - Max_Buffer : constant := 1_500; Buffer : String (1 .. Max_Buffer); -- Used to buffer output when writing to a new mapping file @@ -180,11 +177,9 @@ package body Fmap is procedure Initialize (File_Name : String) is Src : Source_Buffer_Ptr; Hi : Source_Ptr; - BS : Big_String_Ptr; - SP : String_Ptr; - First : Positive := 1; - Last : Natural := 0; + First : Source_Ptr := 1; + Last : Source_Ptr := 0; Uname : Unit_Name_Type; Fname : File_Name_Type; @@ -204,7 +199,7 @@ package body Fmap is -- the name buffer contains "/". procedure Get_Line; - -- Get a line from the mapping file, where a line is SP (First .. Last) + -- Get a line from the mapping file, where a line is Src (First .. Last) procedure Report_Truncated; -- Report a warning when the mapping file is truncated @@ -263,23 +258,23 @@ package body Fmap is -- If not at the end of file, skip the end of line - while First < SP'Last - and then (SP (First) = CR - or else SP (First) = LF - or else SP (First) = EOF) + while First < Src'Last + and then (Src (First) = CR + or else Src (First) = LF + or else Src (First) = EOF) loop First := First + 1; end loop; -- If not at the end of file, find the end of this new line - if First < SP'Last and then SP (First) /= EOF then + if First < Src'Last and then Src (First) /= EOF then Last := First; - while Last < SP'Last - and then SP (Last + 1) /= CR - and then SP (Last + 1) /= LF - and then SP (Last + 1) /= EOF + while Last < Src'Last + and then Src (Last + 1) /= CR + and then Src (Last + 1) /= LF + and then Src (Last + 1) /= EOF loop Last := Last + 1; end loop; @@ -302,9 +297,7 @@ package body Fmap is begin Empty_Tables; - Name_Len := File_Name'Length; - Name_Buffer (1 .. Name_Len) := File_Name; - Read_Source_File (Name_Enter, 0, Hi, Src, Config); + Read_Source_File (Name_Enter (File_Name), 1, Hi, Src, Config); if Null_Source_Buffer_Ptr (Src) then Write_Str ("warning: could not read mapping file """); @@ -313,9 +306,6 @@ package body Fmap is No_Mapping_File := True; else - BS := To_Big_String_Ptr (Src); - SP := BS (1 .. Natural (Hi))'Unrestricted_Access; - loop -- Get the unit name @@ -325,19 +315,19 @@ package body Fmap is exit when First > Last; - if (Last < First + 2) or else (SP (Last - 1) /= '%') - or else (SP (Last) /= 's' and then SP (Last) /= 'b') + if (Last < First + 2) or else (Src (Last - 1) /= '%') + or else (Src (Last) /= 's' and then Src (Last) /= 'b') then Write_Line ("warning: mapping file """ & File_Name & """ is incorrectly formatted"); - Write_Line ("Line = """ & SP (First .. Last) & '"'); + Write_Line ("Line = """ & String (Src (First .. Last)) & '"'); Empty_Tables; return; end if; - Name_Len := Last - First + 1; - Name_Buffer (1 .. Name_Len) := SP (First .. Last); + Name_Len := Integer (Last - First + 1); + Name_Buffer (1 .. Name_Len) := String (Src (First .. Last)); Uname := Find_Unit_Name; -- Get the file name @@ -352,8 +342,8 @@ package body Fmap is return; end if; - Name_Len := Last - First + 1; - Name_Buffer (1 .. Name_Len) := SP (First .. Last); + Name_Len := Integer (Last - First + 1); + Name_Buffer (1 .. Name_Len) := String (Src (First .. Last)); Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len)); Fname := Find_File_Name; @@ -369,8 +359,8 @@ package body Fmap is return; end if; - Name_Len := Last - First + 1; - Name_Buffer (1 .. Name_Len) := SP (First .. Last); + Name_Len := Integer (Last - First + 1); + Name_Buffer (1 .. Name_Len) := String (Src (First .. Last)); Pname := Find_File_Name; -- Add the mappings for this unit name |