Salut,
J'essaye de compiler la branche expérimentale (4.6.0) de Gcc avec le support de Ada sous MinGW.
Cependant, la compilation sort sur une erreur au prétexte que:
Je vais vous faire grâce de l'ordre de mes recherches, mais, l'erreur indiquée est due à au code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 g-socthi.adb:280:45 value not in range of type "Interfaces.C.unsigned" g-socthi.adb:280:45 static expression fails Constraint-check(à la ligne qui précède le commentaire, pour être précis), dans un fichier qui est utilisé exclusivement pour MinGW (g-socthi-mingw.adb pour ceux que cela intéresse) et MSG_WAITALL dont il est question est défini sous la forme de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function C_Recvmsg (S : C.int; Msg : System.Address; Flags : C.int) return System.CRTL.ssize_t is use type C.size_t; Fill : constant Boolean := (C.unsigned (Flags) and SOSC.MSG_WAITALL) /= 0; -- Is the MSG_WAITALL flag set? If so we need to fully fill all vectors
dans un fichier qui est destiné à être utilisé par l'ensemble des systèmes ( g-socket.adb, pour ceux que cela intéresse).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Flags : constant array (0 .. 3) of C.int := (0 => SOSC.MSG_OOB, -- Process_Out_Of_Band_Data 1 => SOSC.MSG_PEEK, -- Peek_At_Incoming_Data 2 => SOSC.MSG_WAITALL, -- Wait_For_A_Full_Reception 3 => SOSC.MSG_EOR); -- Send_End_Of_Record
Le plus intriguant, c'est que FLags me semble être défini comme étant de type C.int, ce qui me fait me poser la question de l'intérêt de j'assimile à une conversion !.
Enfin bref, ma première idée serait de remplacer la ligne
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part (C.unsigned (Flags) and SOSC.MSG_WAITALL) /= 0;
Ma question est, en déinitive toute bête : Croyez vous que je puisse effectuer cette modification sans que cela ne vienne "tout casser" par la suite
Code : Sélectionner tout - Visualiser dans une fenêtre à part Flags and SOSC.MSG_WAITALL) /= 0;
Question subsidiaire : si j'ai confirmation que cette modification résout le problème et n'en pose pas d'autre, quelqu'un sait il à qui adresser le patch
J'ai en effet en tête que ce n'est pas l'équipe de Gcc qui s'occupe du suivi et des bug dans Ada
Partager