diff options
author | Vincent Celier <celier@adacore.com> | 2005-07-07 11:41:44 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2005-07-07 11:41:44 +0200 |
commit | 33420a449faae383e5bee8594fc6f4a4cf9788f9 (patch) | |
tree | 01f3c4e4c1db80c4fc748db751b6d49be6b68903 /gcc | |
parent | 2366e7c600b5d2306acfd13b4324d77cea66859d (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/bindgen.adb | 14 | ||||
-rw-r--r-- | gcc/ada/gnatbind.adb | 3 |
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"); |