aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Obry <obry@adacore.com>2005-03-15 17:02:26 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2005-03-15 17:02:26 +0100
commit9c2d872c6a923bf0ae86c6e0576041fba6e529b9 (patch)
tree0c8eec9b45ad084aa3c15b43318cdbc80835d66f
parent454ff542f82f1320a05f8423691bf9a9890b21d3 (diff)
downloadgcc-9c2d872c6a923bf0ae86c6e0576041fba6e529b9.zip
gcc-9c2d872c6a923bf0ae86c6e0576041fba6e529b9.tar.gz
gcc-9c2d872c6a923bf0ae86c6e0576041fba6e529b9.tar.bz2
re PR ada/20226 (Error in __gnat_install_SEH_handler breaks bootstrap)
2005-03-08 Pascal Obry <obry@adacore.com> Eric Botcazou <ebotcazou@adacore.com> PR ada/20226 PR ada/20344 * init.c (__gnat_initialize): Do not call __gnat_install_SEH_handler() when IN_RTS. This is to work around a bootstrap path problem. * misc.c (gnat_parse_file): Create a SEH (Structured Exception Handler) table and pass it to __gnat_install_SEH_handler(). (gnat_handle_option): Accept OPT_fRTS_, not OPT_fRTS. * lang.opt: Fix specification of -fRTS=. From-SVN: r96499
-rw-r--r--gcc/ada/lang.opt5
-rw-r--r--gcc/ada/misc.c17
2 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ada/lang.opt b/gcc/ada/lang.opt
index 7ac89f9..584220c 100644
--- a/gcc/ada/lang.opt
+++ b/gcc/ada/lang.opt
@@ -57,8 +57,9 @@ nostdlib
Ada
; Don't look for object files
-fRTS
-Ada RejectNegative
+fRTS=
+Ada Joined RejectNegative
+; Selects the runtime
gant
Ada Joined Undocumented
diff --git a/gcc/ada/misc.c b/gcc/ada/misc.c
index 81f8249..4646c86 100644
--- a/gcc/ada/misc.c
+++ b/gcc/ada/misc.c
@@ -217,18 +217,27 @@ extern char **gnat_argv;
/* Declare functions we use as part of startup. */
-extern void __gnat_initialize (void *);
-extern void adainit (void);
-extern void _ada_gnat1drv (void);
+extern void __gnat_initialize (void *);
+extern void __gnat_install_SEH_handler (void *);
+extern void adainit (void);
+extern void _ada_gnat1drv (void);
/* The parser for the language. For us, we process the GNAT tree. */
static void
gnat_parse_file (int set_yydebug ATTRIBUTE_UNUSED)
{
+ int seh[2];
+
/* call the target specific initializations */
__gnat_initialize (NULL);
+ /* ??? call the SEH initialization routine, this is to workaround a
+ bootstrap path problem. The call below should be removed at some point and
+ the seh pointer passed to __gnat_initialize() above. */
+
+ __gnat_install_SEH_handler((void *)seh);
+
/* Call the front-end elaboration procedures */
adainit ();
@@ -289,7 +298,7 @@ gnat_handle_option (size_t scode, const char *arg, int value ATTRIBUTE_UNUSED)
gnat_argc++;
break;
- case OPT_fRTS:
+ case OPT_fRTS_:
gnat_argv[gnat_argc] = xstrdup ("-fRTS");
gnat_argc++;
break;