[Ada] Fix 32/64bit mistake on SYSTEM_INFO component in s-win32
authorOlivier Hainque <hainque@adacore.com>
Wed, 18 Sep 2019 08:31:56 +0000 (08:31 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 18 Sep 2019 08:31:56 +0000 (08:31 +0000)
commit600db6ca89bc1f93d9f6f72c629e1c5d5c176068
tree8a406b36529cc4fc49603e29d850cb18e1e17b8b
parent6f934861c1eb93234e63483e04975bf0cd612da7
[Ada] Fix 32/64bit mistake on SYSTEM_INFO component in s-win32

The dwActiveProcessorMask field in a SYSTEM_INFO structure on Windows
should be DWORD_PTR, an integer the size of a pointer.

In s-win32, it is currently declared as DWORD. This happens to work on
32bit hosts and is wrong on 64bit hosts, causing mishaps in accesses to
this component and all the following ones.

The proposed correction adds a definition for DWORD_PTR and uses it for
dwActiveProcessorMask in System.Win32.SYSTEM_INFO.

2019-09-18  Olivier Hainque  <hainque@adacore.com>

gcc/ada/

* libgnat/s-win32.ads (DWORD_PTR): New type, pointer size
unsigned int.
(SYSTEM_INFO): Use it for dwActiveProcessorMask.

gcc/testsuite/

* gnat.dg/system_info1.adb: New testcase.

From-SVN: r275843
gcc/ada/ChangeLog
gcc/ada/libgnat/s-win32.ads
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/system_info1.adb [new file with mode: 0644]