aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2024-08-16 17:08:32 +0200
committerMarc Poulhiès <dkm@gcc.gnu.org>2024-10-08 10:37:11 +0200
commiteeb0a0eae55a68069edd0d9074e7e3adfbceee64 (patch)
tree4d820a2590b1359ef3c78408ff48458606d9feb9 /gcc/go
parent3376bc79ba0833f9ad8a9ec4860aeb217710cb5b (diff)
downloadgcc-eeb0a0eae55a68069edd0d9074e7e3adfbceee64.zip
gcc-eeb0a0eae55a68069edd0d9074e7e3adfbceee64.tar.gz
gcc-eeb0a0eae55a68069edd0d9074e7e3adfbceee64.tar.bz2
ada: Rework s-linux/osinte for arm/aarch64-android sigactions
Building an aarch64-android compiler with the current sources initially intended for arm-android expectedly trips on problems. This change is meant to address: ``` .../gcc/ada/rts % ../../gnat1 -quiet ... a-stbufi.adb -I. s-osinte.ads:591:07: error: component "sa_flags" overlaps "sa_mask" at line 590 ``` s-linux__android.ads makes hardcoded assumptions on the size of sigset_t, based on observations performed in the course of the arm port. Then sysem headers show sa_flags placed VERY differently between the 32 and the 64 bits variants. See android-sysroot/usr/include/bits/signal_types.h ``` %if defined(__LP64__) int sa_flags; \ union { \ sighandler_t sa_handler; \ void (*sa_sigaction)(int, struct siginfo*, void*); \ }; \ sigset_t sa_mask; \ void (*sa_restorer)(void); \ %else union { sighandler_t sa_handler; void (*sa_sigaction)(int, struct siginfo*, void*); }; sigset_t sa_mask; int sa_flags; void (*sa_restorer)(void); ``` gcc/ada/ChangeLog: * libgnarl/s-linux__android-arm.ads: New file, renaming of ... * libgnarl/s-linux__android.ads: ... this file. * libgnarl/s-linux__android-aarch64.ads: New file. Based on the -arm variant, with sa_ field positions adjusted. * Makefile.rtl (arm/aarch64-android pairs): Adjust accordingly. * libgnarl/s-osinte__android.ads: Rather than making assumptions on the actual type of the C sigset_t, use Os_Constants.SIZEOF_sigset_t to define an Ada sigset_t type of the proper size. Use C.int instead of unsigned_long for sa_flags.
Diffstat (limited to 'gcc/go')
0 files changed, 0 insertions, 0 deletions