2011/3/28 Kai Tietz <ktiet...@googlemail.com>: > > ChangeLog gcc/ada (ada_wt.txt) > > 2011-03-28 Kai Tietz > > * raise-gcc.c (PERSONALITY_FUNCTION): Add prototype to > prevent warning. > * g-socthi-mingw.adb (C_Recvmsg): Handle MSG_WAITALL for > windows native targets. > * s-oscons-tmplt.c (MSG_WAITALL): Define it for native windows > targets to flag value.
Just noticed I had a wrong shift-value for MSG_WAITALL. It should be 8. Updated patch attached. Kai
Index: gcc/gcc/ada/g-socthi-mingw.adb =================================================================== --- gcc.orig/gcc/ada/g-socthi-mingw.adb 2010-09-09 16:07:42.000000000 +0200 +++ gcc/gcc/ada/g-socthi-mingw.adb 2011-03-28 09:42:45.039326300 +0200 @@ -277,7 +277,8 @@ package body GNAT.Sockets.Thin is use type C.size_t; Fill : constant Boolean := - (C.unsigned (Flags) and SOSC.MSG_WAITALL) /= 0; + SOSC.MSG_WAITALL /= -1 + and then (C.unsigned (Flags) and SOSC.MSG_WAITALL) /= 0; -- Is the MSG_WAITALL flag set? If so we need to fully fill all vectors Res : C.int; Index: gcc/gcc/ada/raise-gcc.c =================================================================== --- gcc.orig/gcc/ada/raise-gcc.c 2010-10-28 22:36:06.000000000 +0200 +++ gcc/gcc/ada/raise-gcc.c 2011-03-28 09:11:43.053384100 +0200 @@ -1065,6 +1065,11 @@ typedef _Unwind_Action phases_arg_t; #endif _Unwind_Reason_Code +PERSONALITY_FUNCTION (version_arg_t, phases_arg_t, + _Unwind_Exception_Class, _Unwind_Exception *, + _Unwind_Context *); + +_Unwind_Reason_Code PERSONALITY_FUNCTION (version_arg_t version_arg, phases_arg_t phases_arg, _Unwind_Exception_Class uw_exception_class, Index: gcc/gcc/ada/s-oscons-tmplt.c =================================================================== --- gcc.orig/gcc/ada/s-oscons-tmplt.c 2010-12-24 11:41:57.000000000 +0100 +++ gcc/gcc/ada/s-oscons-tmplt.c 2011-03-28 09:15:39.683932300 +0200 @@ -1084,6 +1084,10 @@ CND(MSG_PEEK, "Peek at incoming data") CND(MSG_EOR, "Send end of record") #ifndef MSG_WAITALL +#ifdef __MINWGW32__ +/* We use it on windows native targets, so set to flag value. */ +# define MSG_WAITALL (1 << 3) +#else # define MSG_WAITALL -1 #endif CND(MSG_WAITALL, "Wait for full reception")