diff --git a/sysdeps/i386/nptl/rseq-access.h b/sysdeps/i386/nptl/rseq-access.h index 753152cb58..55b500b2b0 100644 --- a/sysdeps/i386/nptl/rseq-access.h +++ b/sysdeps/i386/nptl/rseq-access.h @@ -19,9 +19,9 @@ /* Read member of the RSEQ area directly. */ #define RSEQ_GETMEM(member) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4 \ - || sizeof (RSEQ_SELF()->member) == 8, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4 \ + || sizeof ((struct rseq_area) {}.member) == 8, \ "size of rseq data"); \ ((struct rseq_area __seg_gs *)__rseq_offset)->member; \ }) @@ -31,8 +31,8 @@ x86-32. */ #define RSEQ_GETMEM_ONCE(member) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4, \ "size of rseq data"); \ ((volatile struct rseq_area __seg_gs *)__rseq_offset)->member; \ }) @@ -40,9 +40,9 @@ /* Set member of the RSEQ area directly. */ #define RSEQ_SETMEM(member, value) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4 \ - || sizeof (RSEQ_SELF()->member) == 8, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4 \ + || sizeof ((struct rseq_area) {}.member) == 8, \ "size of rseq data"); \ ((struct rseq_area __seg_gs *)__rseq_offset)->member = (value); \ }) @@ -52,8 +52,8 @@ x86-32. */ #define RSEQ_SETMEM_ONCE(member, value) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4, \ "size of rseq data"); \ ((volatile struct rseq_area __seg_gs *)__rseq_offset)->member = (value); \ }) diff --git a/sysdeps/x86_64/64/nptl/rseq-access.h b/sysdeps/x86_64/64/nptl/rseq-access.h index 64e5b8d712..932690b50a 100644 --- a/sysdeps/x86_64/64/nptl/rseq-access.h +++ b/sysdeps/x86_64/64/nptl/rseq-access.h @@ -19,9 +19,9 @@ /* Read member of the RSEQ area directly. */ #define RSEQ_GETMEM(member) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4 \ - || sizeof (RSEQ_SELF()->member) == 8, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4 \ + || sizeof ((struct rseq_area) {}.member) == 8, \ "size of rseq data"); \ ((struct rseq_area __seg_fs *)__rseq_offset)->member; \ }) @@ -29,9 +29,9 @@ /* Read member of the RSEQ area directly, with single-copy atomicity semantics. */ #define RSEQ_GETMEM_ONCE(member) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4 \ - || sizeof (RSEQ_SELF()->member) == 8, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4 \ + || sizeof ((struct rseq_area) {}.member) == 8, \ "size of rseq data"); \ ((volatile struct rseq_area __seg_fs *)__rseq_offset)->member; \ }) @@ -39,9 +39,9 @@ /* Set member of the RSEQ area directly. */ #define RSEQ_SETMEM(member, value) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4 \ - || sizeof (RSEQ_SELF()->member) == 8, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4 \ + || sizeof ((struct rseq_area) {}.member) == 8, \ "size of rseq data"); \ ((struct rseq_area __seg_fs *)__rseq_offset)->member = (value); \ }) @@ -49,9 +49,9 @@ /* Set member of the RSEQ area directly, with single-copy atomicity semantics. */ #define RSEQ_SETMEM_ONCE(member, value) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4 \ - || sizeof (RSEQ_SELF()->member) == 8, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4 \ + || sizeof ((struct rseq_area) {}.member) == 8, \ "size of rseq data"); \ ((volatile struct rseq_area __seg_fs *)__rseq_offset)->member = (value); \ }) diff --git a/sysdeps/x86_64/x32/nptl/rseq-access.h b/sysdeps/x86_64/x32/nptl/rseq-access.h index d9bb215c35..7d34e9473c 100644 --- a/sysdeps/x86_64/x32/nptl/rseq-access.h +++ b/sysdeps/x86_64/x32/nptl/rseq-access.h @@ -19,7 +19,7 @@ /* Read member of the RSEQ area directly, with single-copy atomicity semantics. */ #define RSEQ_GETMEM_ONCE(member) \ ({ \ - __typeof (RSEQ_SELF()->member) __value; \ + __typeof ((struct rseq_area) {}.member) __value; \ _Static_assert (sizeof (__value) == 1 \ || sizeof (__value) == 4 \ || sizeof (__value) == 8, \ @@ -59,18 +59,18 @@ /* Set member of the RSEQ area directly, with single-copy atomicity semantics. */ #define RSEQ_SETMEM_ONCE(member, value) \ ({ \ - _Static_assert (sizeof (RSEQ_SELF()->member) == 1 \ - || sizeof (RSEQ_SELF()->member) == 4 \ - || sizeof (RSEQ_SELF()->member) == 8, \ + _Static_assert (sizeof ((struct rseq_area) {}.member) == 1 \ + || sizeof ((struct rseq_area) {}.member) == 4 \ + || sizeof ((struct rseq_area) {}.member) == 8, \ "size of rseq data"); \ - if (sizeof (RSEQ_SELF()->member) == 1) \ + if (sizeof ((struct rseq_area) {}.member) == 1) \ asm volatile ("movb %0,%%fs:%c1(%2)" \ : \ : "iq" ((uint8_t) cast_to_integer (value)), \ "i" (offsetof (struct rseq_area, member)), \ "r" ((long long int) __rseq_offset) \ : "memory"); \ - else if (sizeof (RSEQ_SELF()->member) == 4) \ + else if (sizeof ((struct rseq_area) {}.member) == 4) \ asm volatile ("movl %0,%%fs:%c1(%2)" \ : \ : IMM_MODE ((uint32_t) cast_to_integer (value)), \