This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] Fix incorrect binding to MapViewOfFile in

Despite the "dw" prefix on the name, the dwNumberOfBytesToMap argument
to MapViewOfFile was changed from DWORD to SIZE_T when 64bit Windows
came about.

This change adjusts the binding we have for it in System.Win32
accordingly. For consistency with established practice, an s-win32
specific version of size_t is introduced and g-sercom__mingw.adb is
adjusted to disambiguate between this new size_t and the one already
exposed in System.CRTL.

Tested on x86_64-pc-linux-gnu, committed on trunk

2019-08-13  Olivier Hainque  <>


	* libgnat/ Define size_t and fix the MapViewOfFile
	binding to use it instead of DWORD for the dwNumberOfBytesToMap
	* libgnat/g-sercom__mingw.adb (Read): State which definition of
	size_t to fetch in call to Last_Index.
--- gcc/ada/libgnat/g-sercom__mingw.adb
+++ gcc/ada/libgnat/g-sercom__mingw.adb
@@ -167,7 +167,7 @@ package body GNAT.Serial_Communications is
          Raise_Error ("read error");
       end if;
-      Last := Last_Index (Buffer'First, size_t (Read_Last));
+      Last := Last_Index (Buffer'First, CRTL.size_t (Read_Last));
    end Read;

--- gcc/ada/libgnat/
+++ gcc/ada/libgnat/
@@ -63,6 +63,7 @@ package System.Win32 is
    type BYTE   is new Interfaces.C.unsigned_char;
    type LONG   is new Interfaces.C.long;
    type CHAR   is new Interfaces.C.char;
+   type SIZE_T is new Interfaces.C.size_t;
    type BOOL   is new;
    for BOOL'Size use'Size;
@@ -238,7 +239,7 @@ package System.Win32 is
       dwDesiredAccess      : DWORD;
       dwFileOffsetHigh     : DWORD;
       dwFileOffsetLow      : DWORD;
-      dwNumberOfBytesToMap : DWORD) return System.Address;
+      dwNumberOfBytesToMap : SIZE_T) return System.Address;
    pragma Import (Stdcall, MapViewOfFile, "MapViewOfFile");
    function UnmapViewOfFile (lpBaseAddress : System.Address) return BOOL;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]