From 97ed5872c6629a96fcc4b4ff4ccaca41950ae26c Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Fri, 5 Aug 2011 15:46:16 +0200 Subject: [multiple changes] 2011-08-05 Ed Schonberg * sem_ch3.adb: (Check_Private_Overriding): better error message, suggested by AI95-0068. 2011-08-05 Hristian Kirtchev * exp_ch7.adb (Find_Last_Init): Use Next_Suitable_Statement to retrieve the two potential initialization calls. This accounts for any access-before-elaboration checks which may precede the initialization calls. (Next_Suitable_Statement): New routine. Returns the next real statement after the input node while skipping generated checks. * sem_elab.adb (Check_A_Call): New formal parameter In_Init_Proc along with comment on usage. Do not generate Elaborate_All when the trigger is a finalization call coming from a type init proc. (Check_Elab_Call): Propagate the initialization procedure context to subsequent calls to Check_A_Call. (Check_Internal_Call_Continue): Propagate the initialization procedure context to subsequent calls to Check_Elab_Call. (Is_Finalization_Procedure): New routine. Returns True if the input entity denotes a [Deep_]Finalize routine. * sem_elab.ads (Check_Elab_Call): New formal parameter In_Init_Proc along with comment on usage. 2011-08-05 Vadim Godunko * s-atocou.ads: Add list of supported platforms. 2011-08-05 Yannick Moy * sem_prag.adb, restrict.adb: Correct style for or'ing Boolean variables * opt.ads (Disable_ALI_File): new Boolean flag * lib-writ.adb (Write_ALI): when Disable_ALI_File is set, do nothing 2011-08-05 Ed Falis * env.c (__gnat_environ): Fix includes for RTPs and VTHREADS so that environ is properly defined. 2011-08-05 Vincent Celier * make.adb (Compilation_Phase): Exit immediately when all objects have been found up to date, to avoid multiple exit messages. * prj-nmsc.adb (Add_Source): Allow duplicate source file names in the same project for languages with no compiler. * gnat_ugn.texi: Document compiler switch -gnateI and gnatmake switch -eI. From-SVN: r177434 --- gcc/ada/env.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) (limited to 'gcc/ada/env.c') diff --git a/gcc/ada/env.c b/gcc/ada/env.c index c58139a..9d7301f 100644 --- a/gcc/ada/env.c +++ b/gcc/ada/env.c @@ -56,10 +56,25 @@ extern "C" { #include #endif -#if defined (__vxworks) \ - && ! (defined (__RTP__) || defined (__COREOS__) || defined (__VXWORKSMILS__)) -#include "envLib.h" -extern char** ppGlobalEnviron; +#if defined (__vxworks) + #if defined (__RTP__) + /* On VxWorks 6 Real-Time process mode, environ is defined in unistd.h. */ + #include + #elif defined (VTHREADS) + /* VTHREADS mode applies to both VxWorks 653 and VxWorks MILS. The + inclusion of vThreadsData.h is necessary to workaround a bug with + envLib.h on VxWorks MILS. */ + #include + #include + #else + /* This should work for kernel mode on both VxWorks 5 and VxWorks 6. */ + #include + + /* In that mode environ is a macro which reference the following symbol. + As the symbol is not defined in any VxWorks include files we declare + it as extern. */ + extern char** ppGlobalEnviron; + #endif #endif /* We don't have libiberty, so use malloc. */ @@ -200,8 +215,7 @@ __gnat_setenv (char *name, char *value) char ** __gnat_environ (void) { -#if defined (VMS) || defined (RTX) \ - || (defined (VTHREADS) && ! defined (__VXWORKSMILS__)) +#if defined (VMS) || defined (RTX) /* Not implemented */ return NULL; #elif defined (__APPLE__) @@ -212,14 +226,10 @@ __gnat_environ (void) #elif defined (sun) extern char **_environ; return _environ; -#else -#if ! (defined (__vxworks) \ - && ! (defined (__RTP__) || defined (__COREOS__) \ - || defined (__VXWORKSMILS__))) - /* in VxWorks kernel mode environ is macro and not a variable */ - /* same thing on 653 in the CoreOS and for VxWorks MILS vThreads */ +#elif ! (defined (__vxworks)) extern char **environ; -#endif + return environ; +#else return environ; #endif } -- cgit v1.1