summaryrefslogtreecommitdiff
path: root/gcc/ada/symbols-processing-vms-ia64.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-31 18:13:55 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-31 18:13:55 +0000
commit6059d0f96a6002445b48b5bf54865af29d29db7a (patch)
tree6f1cf3ee74923678377597d02b56500fcb245bab /gcc/ada/symbols-processing-vms-ia64.adb
parent7d83b288c1985be52e3980302d9a397de0fb8aed (diff)
downloadgcc-6059d0f96a6002445b48b5bf54865af29d29db7a.tar.gz
2006-10-31 Vincent Celier <celier@adacore.com>
* symbols-processing-vms-ia64.adb, symbols-processing-vms-alpha.adb (Process): Do not include symbols that come from generic instantiations in bodies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118326 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/symbols-processing-vms-ia64.adb')
-rw-r--r--gcc/ada/symbols-processing-vms-ia64.adb75
1 files changed, 56 insertions, 19 deletions
diff --git a/gcc/ada/symbols-processing-vms-ia64.adb b/gcc/ada/symbols-processing-vms-ia64.adb
index 4c732783718..5d62c3ce790 100644
--- a/gcc/ada/symbols-processing-vms-ia64.adb
+++ b/gcc/ada/symbols-processing-vms-ia64.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2005 Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2006, 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,20 +85,26 @@ package body Processing is
End_Symtab : Integer;
- Stname : Integer;
- Stinfo : Character;
- Sttype : Integer;
- Stbind : Integer;
+ Stname : Integer;
+ Stinfo : Character;
+ Sttype : Integer;
+ Stbind : Integer;
Stshndx : Integer;
Section_Headers : Section_Header_Ptr;
- Offset : Natural := 0;
+ Offset : Natural := 0;
+ OK : Boolean := True;
procedure Get_Byte (B : out Byte);
procedure Get_Half (H : out Integer);
procedure Get_Word (W : out Integer);
procedure Reset;
+ -- All the above require comments ???
+
+ --------------
+ -- Get_Byte --
+ --------------
procedure Get_Byte (B : out Byte) is
begin
@@ -106,6 +112,10 @@ package body Processing is
Offset := Offset + 1;
end Get_Byte;
+ --------------
+ -- Get_Half --
+ --------------
+
procedure Get_Half (H : out Integer) is
C1, C2 : Character;
begin
@@ -114,6 +124,10 @@ package body Processing is
Integer'(Character'Pos (C2)) * 256 + Integer'(Character'Pos (C1));
end Get_Half;
+ --------------
+ -- Get_Word --
+ --------------
+
procedure Get_Word (W : out Integer) is
H1, H2 : Integer;
begin
@@ -121,12 +135,18 @@ package body Processing is
W := H2 * 256 * 256 + H1;
end Get_Word;
+ -----------
+ -- Reset --
+ -----------
+
procedure Reset is
begin
Offset := 0;
Byte_IO.Reset (File);
end Reset;
+ -- Start of processing for Process
+
begin
-- Open the object file with Byte_IO. Return with Success = False if
-- this fails.
@@ -216,6 +236,7 @@ package body Processing is
Symtab_Index := 0;
for J in Section_Headers'Range loop
+
-- Get the data for each Section Header
Get_Word (Shname);
@@ -312,24 +333,40 @@ package body Processing is
and then Stbind /= 0
and then Stshndx /= 0
then
- declare
- S_Data : Symbol_Data;
- begin
- S_Data.Name := new String'(Strings (Stname).all);
+ -- Check if this is a symbol from a generic body
- if Sttype = 1 then
- S_Data.Kind := Data;
+ OK := True;
- else
- S_Data.Kind := Proc;
+ for J in Strings (Stname)'First .. Strings (Stname)'Last - 2 loop
+ if Strings (Stname) (J) = 'G'
+ and then Strings (Stname) (J + 1) = 'P'
+ and then Strings (Stname) (J + 2) in '0' .. '9'
+ then
+ OK := False;
+ exit;
end if;
+ end loop;
+
+ if OK then
+ declare
+ S_Data : Symbol_Data;
+ begin
+ S_Data.Name := new String'(Strings (Stname).all);
+
+ if Sttype = 1 then
+ S_Data.Kind := Data;
- -- Put the new symbol in the table
+ else
+ S_Data.Kind := Proc;
+ end if;
- Symbol_Table.Increment_Last (Complete_Symbols);
- Complete_Symbols.Table
- (Symbol_Table.Last (Complete_Symbols)) := S_Data;
- end;
+ -- Put the new symbol in the table
+
+ Symbol_Table.Increment_Last (Complete_Symbols);
+ Complete_Symbols.Table
+ (Symbol_Table.Last (Complete_Symbols)) := S_Data;
+ end;
+ end if;
end if;
end loop;