aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Celier <celier@adacore.com>2005-07-07 11:41:44 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2005-07-07 11:41:44 +0200
commit33420a449faae383e5bee8594fc6f4a4cf9788f9 (patch)
tree01f3c4e4c1db80c4fc748db751b6d49be6b68903
parent2366e7c600b5d2306acfd13b4324d77cea66859d (diff)
downloadgcc-33420a449faae383e5bee8594fc6f4a4cf9788f9.zip
gcc-33420a449faae383e5bee8594fc6f4a4cf9788f9.tar.gz
gcc-33420a449faae383e5bee8594fc6f4a4cf9788f9.tar.bz2
bindgen.adb (Gen_Output_File_C): When switch -a was specified...
2005-07-07 Vincent Celier <celier@adacore.com> * bindgen.adb (Gen_Output_File_C): When switch -a was specified, put the destructor/constructor attributes for <lib>final/<lib>init. * gnatbind.adb (Gnatbind): Allow -a to be used in conjunction with -C From-SVN: r101692
-rw-r--r--gcc/ada/bindgen.adb14
-rw-r--r--gcc/ada/gnatbind.adb3
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb
index e37a386..bd38674 100644
--- a/gcc/ada/bindgen.adb
+++ b/gcc/ada/bindgen.adb
@@ -2522,8 +2522,18 @@ package body Bindgen is
WBI (" (int, int, char, char, char, char,");
WBI (" const char *, const char *,");
WBI (" int, int, int, int, int);");
- WBI ("extern void " & Ada_Final_Name.all & " (void);");
- WBI ("extern void " & Ada_Init_Name.all & " (void);");
+
+ if Use_Pragma_Linker_Constructor then
+ WBI ("extern void " & Ada_Final_Name.all &
+ " (void) __attribute__((destructor));");
+ WBI ("extern void " & Ada_Init_Name.all &
+ " (void) __attribute__((constructor));");
+
+ else
+ WBI ("extern void " & Ada_Final_Name.all & " (void);");
+ WBI ("extern void " & Ada_Init_Name.all & " (void);");
+ end if;
+
WBI ("extern void system__standard_library__adafinal (void);");
if not No_Main_Subprogram then
diff --git a/gcc/ada/gnatbind.adb b/gcc/ada/gnatbind.adb
index cbd3cea..270d334 100644
--- a/gcc/ada/gnatbind.adb
+++ b/gcc/ada/gnatbind.adb
@@ -413,9 +413,6 @@ begin
if Bind_Main_Program then
Fail ("switch -a must be used in conjunction with -n or -Lxxx");
- elsif not Ada_Bind_File then
- Fail ("switch -a cannot be used when C code is generated");
-
elsif not Gnatbind_Supports_Auto_Init then
Fail ("automatic initialisation of elaboration " &
"not supported on this platform");