From ba4a2f78eeb327397844448956bcc7abd5729050 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Fri, 17 Apr 2009 11:06:20 +0200 Subject: [multiple changes] 2009-04-17 Pascal Obry * initialize.c: Set gnat_argv with UTF-8 encoded strings on Windows. * adaint.h, argv.c, bindgen.adb: Reverted to previous version. 2009-04-17 Robert Dewar * a-except.adb, a-except-2005.adb: Add PE_Address_Of_Intrinsic * sem_attr.adb (Analyze_Attribute, case Address): Use PE_Address_Of_Intrinsic. * types.ads: Add PE_Address_Of_Intrinsic * types.h: Add PE_Address_Of_Intrinsic From-SVN: r146226 --- gcc/ada/initialize.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'gcc/ada/initialize.c') diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c index dbaf80f..5e7b2ff 100644 --- a/gcc/ada/initialize.c +++ b/gcc/ada/initialize.c @@ -43,6 +43,8 @@ #ifdef IN_RTS #include "tconfig.h" #include "tsystem.h" +/* We don't have libiberty, so use malloc. */ +#define xmalloc(S) malloc (S) #else #include "config.h" #include "system.h" @@ -55,11 +57,15 @@ /******************************************/ #if defined (__MINGW32__) +#include "mingw32.h" #include extern void __gnat_init_float (void); extern void __gnat_install_SEH_handler (void *); +extern int gnat_argc; +extern char **gnat_argv; + #ifndef RTX /* Do not define for RTX since it is only used for creating child processes which is not supported in RTX. */ @@ -75,6 +81,32 @@ __gnat_initialize (void *eh) given that we have set Max_Digits etc with this in mind */ __gnat_init_float (); + /* Adjust gnat_argv to support Unicode characters. */ + { + char arg_utf8[MAX_PATH]; + LPWSTR *wargv; + int wargc; + int k; + + wargv = CommandLineToArgvW (GetCommandLineW(), &wargc); + + if (wargv != NULL) + { + /* Set gnat_argv with arguments encoded in UTF-8. */ + gnat_argv = (char **) xmalloc ((wargc + 1) * sizeof (char *)); + + for (k=0; k