summaryrefslogtreecommitdiff
path: root/gcc/ada/bindgen.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-04 07:58:27 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-04 07:58:27 +0000
commit1994083aff1b0a99355601bdd7103ba331537c52 (patch)
treee3568863be5d41557b621dbcf15418e52a93d1c0 /gcc/ada/bindgen.adb
parent3861f4328fde0ffec86d91349d5a639a28fe1c59 (diff)
downloadgcc-1994083aff1b0a99355601bdd7103ba331537c52.tar.gz
2011-08-04 Robert Dewar <dewar@adacore.com>
* sem_util.adb: Minor reformatting. 2011-08-04 Hristian Kirtchev <kirtchev@adacore.com> * bindgen.adb (Gen_Finalize_Library_Ada): Update the import string for library-level finalizers. (Gen_Finalize_Library_C): Update the import string for library-level finalizers. (Gen_Finalize_Library_Defs_C): Update the definition name of a library-level finalizer. * exp_ch7.adb: Remove with and use clauses for Stringt. (Create_Finalizer): Remove local variables Conv_Name, Prag_Decl, Spec_Decl. Add local variable Body_Id. The names of library-level finalizers are now manually fully qualified and are no longer external. A single name is now capable of servicing .NET, JVM and non-VM targets. Pragma Export is no longer required to provide visibility for the name. (Create_Finalizer_String): Removed. (New_Finalizer_Name): New routine which mimics New_..._Name. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177322 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/bindgen.adb')
-rw-r--r--gcc/ada/bindgen.adb44
1 files changed, 23 insertions, 21 deletions
diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb
index 1eab63c5de3..01637a4a31a 100644
--- a/gcc/ada/bindgen.adb
+++ b/gcc/ada/bindgen.adb
@@ -1688,13 +1688,16 @@ package body Bindgen is
Write_Statement_Buffer;
-- Generate:
- -- pragma Import (CIL, F<Count>, "xx.yy_pkg.Finalize[B/S]");
+ -- pragma Import (CIL, F<Count>,
+ -- "xx.yy_pkg.xx__yy__finalize_[body|spec]");
-- -- for .NET targets
- -- pragma Import (Java, F<Count>, "xx$yy.Finalize[B/S]");
+ -- pragma Import (Java, F<Count>,
+ -- "xx$yy.xx__yy__finalize_[body|spec]");
-- -- for JVM targets
- -- pragma Import (Ada, F<Count>, "xx__yy__Finalize[B/S]");
+ -- pragma Import (Ada, F<Count>,
+ -- "xx__yy__finalize_[body|spec]");
-- -- for default targets
if VM_Target = CLI_Target then
@@ -1723,36 +1726,35 @@ package body Bindgen is
-- Perform name construction
- -- .NET xx.yy_pkg.finalize
+ -- .NET xx.yy_pkg.xx__yy__finalize
if VM_Target = CLI_Target then
Set_Unit_Name (Mode => Dot);
- Set_String ("_pkg.finalize");
+ Set_String ("_pkg.");
- -- JVM xx$yy.finalize
+ -- JVM xx$yy.xx__yy__finalize
elsif VM_Target = JVM_Target then
Set_Unit_Name (Mode => Dollar_Sign);
- Set_String (".finalize");
+ Set_Char ('.');
+ end if;
-- Default xx__yy__finalize
- else
- Set_Unit_Name;
- Set_String ("__finalize");
- end if;
+ Set_Unit_Name;
+ Set_String ("__finalize_");
-- Package spec processing
if U.Utype = Is_Spec
or else U.Utype = Is_Spec_Only
then
- Set_Char ('S');
+ Set_String ("spec");
-- Package body processing
else
- Set_Char ('B');
+ Set_String ("body");
end if;
Set_String (""");");
@@ -1895,12 +1897,12 @@ package body Bindgen is
-- uname_E--;
-- if (uname_E == 0)
- -- uname__finalize[S|B] ();
+ -- uname__finalize_[spec|body] ();
-- Otherwise, finalization routines are called unconditionally:
-- uname_E--;
- -- uname__finalize[S|B] ();
+ -- uname__finalize_[spec|body] ();
Set_String (" ");
Set_Unit_Name;
@@ -1918,19 +1920,19 @@ package body Bindgen is
Set_String (" ");
Get_Name_String (Uspec.Uname);
Set_Unit_Name;
- Set_String ("__finalize");
+ Set_String ("__finalize_");
-- Package spec processing
if U.Utype = Is_Spec
or else U.Utype = Is_Spec_Only
then
- Set_Char ('S');
+ Set_String ("spec");
-- Package body processing
else
- Set_Char ('B');
+ Set_String ("body");
end if;
Set_String (" ();");
@@ -1982,14 +1984,14 @@ package body Bindgen is
Set_String ("extern void ");
Get_Name_String (Uspec.Uname);
Set_Unit_Name;
- Set_String ("__finalize");
+ Set_String ("__finalize_");
if U.Utype = Is_Spec
or else U.Utype = Is_Spec_Only
then
- Set_Char ('S');
+ Set_String ("spec");
else
- Set_Char ('B');
+ Set_String ("body");
end if;
Set_String (" (void);");