ada: Add size clause to System.Address
commit31365eda4602181acced5b0479eb50ef1213e836
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 8 Mar 2023 17:11:31 +0000 (8 18:11 +0100)
committerMarc Poulhiès <poulhies@adacore.com>
Thu, 25 May 2023 07:44:18 +0000 (25 09:44 +0200)
tree09de03f53f5ab375fa377e7c13cafcdb1b21aa67
parentec48b99c24a422bf97af91e82203d23b69094e7c
ada: Add size clause to System.Address

Standard'Address_Size is the value provided by the code generator for the
size of pointers, and it is set as the default size of every thin pointer
by the front-end.  Now it is documented in the GNAT RM as having the value
of System.Address'Size, which is indeed the case on (correctly configured)
platforms where pointers contain exactly the number of bits that are needed
to address the memory space.

However, on platforms where pointers contain additional bits of metadata,
it has a larger value and the documented relation does not hold, which also
means that unchecked conversions between System.Address and pointers are
seen as potentially problematic.  In order to fix the discrepancy on these
platforms, this change adds the obvious size clause to System.Address, which
is confirming on all the other (correctly configured) platforms.

gcc/ada/

* libgnat/system-aix.ads (Address): Likewise.
* libgnat/system-darwin-arm.ads (Address): Likewise.
* libgnat/system-darwin-ppc.ads (Address): Likewise.
* libgnat/system-darwin-x86.ads (Address): Likewise.
* libgnat/system-djgpp.ads (Address): Likewise.
* libgnat/system-dragonfly-x86_64.ads (Address): Likewise.
* libgnat/system-freebsd.ads (Address): Likewise.
* libgnat/system-hpux-ia64.ads (Address): Likewise.
* libgnat/system-hpux.ads (Address): Likewise.
* libgnat/system-linux-alpha.ads (Address): Likewise.
* libgnat/system-linux-arm.ads (Address): Likewise.
* libgnat/system-linux-hppa.ads (Address): Likewise.
* libgnat/system-linux-ia64.ads (Address): Likewise.
* libgnat/system-linux-m68k.ads (Address): Likewise.
* libgnat/system-linux-mips.ads (Address): Likewise.
* libgnat/system-linux-ppc.ads (Address): Likewise.
* libgnat/system-linux-riscv.ads (Address): Likewise.
* libgnat/system-linux-s390.ads (Address): Likewise.
* libgnat/system-linux-sh4.ads (Address): Likewise.
* libgnat/system-linux-sparc.ads (Address): Likewise.
* libgnat/system-linux-x86.ads (Address): Likewise.
* libgnat/system-lynxos178-ppc.ads (Address): Likewise.
* libgnat/system-lynxos178-x86.ads (Address): Likewise.
* libgnat/system-mingw.ads (Address): Likewise.
* libgnat/system-qnx-arm.ads (Address): Likewise.
* libgnat/system-rtems.ads (Address): Likewise.
* libgnat/system-solaris-sparc.ads (Address): Likewise.
* libgnat/system-solaris-x86.ads (Address): Likewise.
* libgnat/system-vxworks-ppc-kernel.ads (Address): Likewise.
* libgnat/system-vxworks-ppc-rtp-smp.ads (Address): Likewise.
* libgnat/system-vxworks-ppc-rtp.ads (Address): Likewise.
* libgnat/system-vxworks7-aarch64-rtp-smp.ads (Address): Likewise.
* libgnat/system-vxworks7-aarch64.ads (Address): Likewise.
* libgnat/system-vxworks7-arm-rtp-smp.ads (Address): Likewise.
* libgnat/system-vxworks7-arm.ads (Address): Likewise.
* libgnat/system-vxworks7-ppc-kernel.ads (Address): Likewise.
* libgnat/system-vxworks7-ppc-rtp-smp.ads (Address): Likewise.
* libgnat/system-vxworks7-ppc64-kernel.ads (Address): Likewise.
* libgnat/system-vxworks7-ppc64-rtp-smp.ads (Address): Likewise.
* libgnat/system-vxworks7-x86-kernel.ads (Address): Likewise.
* libgnat/system-vxworks7-x86-rtp-smp.ads (Address): Likewise.
* libgnat/system-vxworks7-x86_64-kernel.ads (Address): Likewise.
* libgnat/system-vxworks7-x86_64-rtp-smp.ads (Address): Likewise.
43 files changed:
gcc/ada/libgnat/system-aix.ads
gcc/ada/libgnat/system-darwin-arm.ads
gcc/ada/libgnat/system-darwin-ppc.ads
gcc/ada/libgnat/system-darwin-x86.ads
gcc/ada/libgnat/system-djgpp.ads
gcc/ada/libgnat/system-dragonfly-x86_64.ads
gcc/ada/libgnat/system-freebsd.ads
gcc/ada/libgnat/system-hpux-ia64.ads
gcc/ada/libgnat/system-hpux.ads
gcc/ada/libgnat/system-linux-alpha.ads
gcc/ada/libgnat/system-linux-arm.ads
gcc/ada/libgnat/system-linux-hppa.ads
gcc/ada/libgnat/system-linux-ia64.ads
gcc/ada/libgnat/system-linux-m68k.ads
gcc/ada/libgnat/system-linux-mips.ads
gcc/ada/libgnat/system-linux-ppc.ads
gcc/ada/libgnat/system-linux-riscv.ads
gcc/ada/libgnat/system-linux-s390.ads
gcc/ada/libgnat/system-linux-sh4.ads
gcc/ada/libgnat/system-linux-sparc.ads
gcc/ada/libgnat/system-linux-x86.ads
gcc/ada/libgnat/system-lynxos178-ppc.ads
gcc/ada/libgnat/system-lynxos178-x86.ads
gcc/ada/libgnat/system-mingw.ads
gcc/ada/libgnat/system-qnx-arm.ads
gcc/ada/libgnat/system-rtems.ads
gcc/ada/libgnat/system-solaris-sparc.ads
gcc/ada/libgnat/system-solaris-x86.ads
gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
gcc/ada/libgnat/system-vxworks7-aarch64.ads
gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
gcc/ada/libgnat/system-vxworks7-arm.ads
gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads