From: Eric Botcazou Date: Thu, 29 Jun 2017 18:57:47 +0000 (+0000) Subject: backport: re PR sanitizer/78992 (Incorrect sigaction definition on 32-bit sparc) X-Git-Tag: releases/gcc-5.5.0~178 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5a49473db6d8b04213476fceeed4a543f7b3fab;p=thirdparty%2Fgcc.git backport: re PR sanitizer/78992 (Incorrect sigaction definition on 32-bit sparc) Backport from mainline 2017-01-10 James Clarke PR sanitizer/78992 * sanitizer_common/sanitizer_platform_limits_posix.h (struct __sanitizer_sigaction): Cherry-pick upstream r291561. 2016-11-30 Maxim Ostapenko PR sanitizer/78532 * sanitizer_common/sanitizer_platform_limits_posix.h (__sanitizer_sigaction): Adjust for sparc targets and various Glibc versions. From-SVN: r249808 --- diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog index 995f3c93ca26..f8e1a098778b 100644 --- a/libsanitizer/ChangeLog +++ b/libsanitizer/ChangeLog @@ -1,3 +1,19 @@ +2017-06-29 Eric Botcazou + + Backport from mainline + 2017-01-10 James Clarke + + PR sanitizer/78992 + * sanitizer_common/sanitizer_platform_limits_posix.h + (struct __sanitizer_sigaction): Cherry-pick upstream r291561. + + 2016-11-30 Maxim Ostapenko + + PR sanitizer/78532 + * sanitizer_common/sanitizer_platform_limits_posix.h + (__sanitizer_sigaction): Adjust for sparc targets and various Glibc + versions. + 2017-05-30 Jakub Jelinek Backported from mainline diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h index 657cd85264e7..60867ff185b0 100644 --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h @@ -16,6 +16,10 @@ #include "sanitizer_internal_defs.h" #include "sanitizer_platform.h" +#ifndef __GLIBC_PREREQ +#define __GLIBC_PREREQ(x, y) 0 +#endif + namespace __sanitizer { extern unsigned struct_utsname_sz; extern unsigned struct_stat_sz; @@ -565,7 +569,17 @@ namespace __sanitizer { __sanitizer_sigset_t sa_mask; #ifndef __mips__ #if defined(__sparc__) +#if __GLIBC_PREREQ (2, 20) + // On sparc glibc 2.19 and earlier sa_flags was unsigned long. +#if defined(__arch64__) + // To maintain ABI compatibility on sparc64 when switching to an int, + // __glibc_reserved0 was added. + int __glibc_reserved0; +#endif + int sa_flags; +#else unsigned long sa_flags; +#endif #else int sa_flags; #endif