mirror of git://sourceware.org/git/glibc.git
x86: Simplify RSEQ area access expressions
Replace manual cast with a direct `(struct rseq_area __seg_gs *)__rseq_offset` dereference to access `member`. This avoids redundant `offsetof(struct rseq_area, member)` and improves readability while preserving semantics. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
This commit is contained in:
parent
e47728a77c
commit
99518a3a35
|
|
@ -23,8 +23,7 @@
|
||||||
|| sizeof (RSEQ_SELF()->member) == 4 \
|
|| sizeof (RSEQ_SELF()->member) == 4 \
|
||||||
|| sizeof (RSEQ_SELF()->member) == 8, \
|
|| sizeof (RSEQ_SELF()->member) == 8, \
|
||||||
"size of rseq data"); \
|
"size of rseq data"); \
|
||||||
(*(__typeof (RSEQ_SELF()->member) __seg_gs *) \
|
((struct rseq_area __seg_gs *)__rseq_offset)->member; \
|
||||||
(__rseq_offset + offsetof (struct rseq_area, member))); \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Read member of the RSEQ area directly, with single-copy atomicity semantics.
|
/* Read member of the RSEQ area directly, with single-copy atomicity semantics.
|
||||||
|
|
@ -35,8 +34,7 @@
|
||||||
_Static_assert (sizeof (RSEQ_SELF()->member) == 1 \
|
_Static_assert (sizeof (RSEQ_SELF()->member) == 1 \
|
||||||
|| sizeof (RSEQ_SELF()->member) == 4, \
|
|| sizeof (RSEQ_SELF()->member) == 4, \
|
||||||
"size of rseq data"); \
|
"size of rseq data"); \
|
||||||
(*(volatile __typeof (RSEQ_SELF()->member) __seg_gs *) \
|
((volatile struct rseq_area __seg_gs *)__rseq_offset)->member; \
|
||||||
(__rseq_offset + offsetof (struct rseq_area, member))); \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Set member of the RSEQ area directly. */
|
/* Set member of the RSEQ area directly. */
|
||||||
|
|
@ -46,8 +44,7 @@
|
||||||
|| sizeof (RSEQ_SELF()->member) == 4 \
|
|| sizeof (RSEQ_SELF()->member) == 4 \
|
||||||
|| sizeof (RSEQ_SELF()->member) == 8, \
|
|| sizeof (RSEQ_SELF()->member) == 8, \
|
||||||
"size of rseq data"); \
|
"size of rseq data"); \
|
||||||
(*(__typeof (RSEQ_SELF()->member) __seg_gs *) \
|
((struct rseq_area __seg_gs *)__rseq_offset)->member = (value); \
|
||||||
(__rseq_offset + offsetof (struct rseq_area, member)) = (value)); \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Set member of the RSEQ area directly, with single-copy atomicity semantics.
|
/* Set member of the RSEQ area directly, with single-copy atomicity semantics.
|
||||||
|
|
@ -58,6 +55,5 @@
|
||||||
_Static_assert (sizeof (RSEQ_SELF()->member) == 1 \
|
_Static_assert (sizeof (RSEQ_SELF()->member) == 1 \
|
||||||
|| sizeof (RSEQ_SELF()->member) == 4, \
|
|| sizeof (RSEQ_SELF()->member) == 4, \
|
||||||
"size of rseq data"); \
|
"size of rseq data"); \
|
||||||
(*(volatile __typeof (RSEQ_SELF()->member) __seg_gs *) \
|
((volatile struct rseq_area __seg_gs *)__rseq_offset)->member = (value); \
|
||||||
(__rseq_offset + offsetof (struct rseq_area, member)) = (value)); \
|
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,7 @@
|
||||||
|| sizeof (RSEQ_SELF()->member) == 4 \
|
|| sizeof (RSEQ_SELF()->member) == 4 \
|
||||||
|| sizeof (RSEQ_SELF()->member) == 8, \
|
|| sizeof (RSEQ_SELF()->member) == 8, \
|
||||||
"size of rseq data"); \
|
"size of rseq data"); \
|
||||||
(*(__typeof (RSEQ_SELF()->member) __seg_fs *) \
|
((struct rseq_area __seg_fs *)__rseq_offset)->member; \
|
||||||
(__rseq_offset + offsetof (struct rseq_area, member))); \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Read member of the RSEQ area directly, with single-copy atomicity semantics. */
|
/* Read member of the RSEQ area directly, with single-copy atomicity semantics. */
|
||||||
|
|
@ -34,8 +33,7 @@
|
||||||
|| sizeof (RSEQ_SELF()->member) == 4 \
|
|| sizeof (RSEQ_SELF()->member) == 4 \
|
||||||
|| sizeof (RSEQ_SELF()->member) == 8, \
|
|| sizeof (RSEQ_SELF()->member) == 8, \
|
||||||
"size of rseq data"); \
|
"size of rseq data"); \
|
||||||
(*(volatile __typeof (RSEQ_SELF()->member) __seg_fs *) \
|
((volatile struct rseq_area __seg_fs *)__rseq_offset)->member; \
|
||||||
(__rseq_offset + offsetof (struct rseq_area, member))); \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Set member of the RSEQ area directly. */
|
/* Set member of the RSEQ area directly. */
|
||||||
|
|
@ -45,8 +43,7 @@
|
||||||
|| sizeof (RSEQ_SELF()->member) == 4 \
|
|| sizeof (RSEQ_SELF()->member) == 4 \
|
||||||
|| sizeof (RSEQ_SELF()->member) == 8, \
|
|| sizeof (RSEQ_SELF()->member) == 8, \
|
||||||
"size of rseq data"); \
|
"size of rseq data"); \
|
||||||
(*(__typeof (RSEQ_SELF()->member) __seg_fs *) \
|
((struct rseq_area __seg_fs *)__rseq_offset)->member = (value); \
|
||||||
(__rseq_offset + offsetof (struct rseq_area, member)) = (value)); \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Set member of the RSEQ area directly, with single-copy atomicity semantics. */
|
/* Set member of the RSEQ area directly, with single-copy atomicity semantics. */
|
||||||
|
|
@ -56,6 +53,5 @@
|
||||||
|| sizeof (RSEQ_SELF()->member) == 4 \
|
|| sizeof (RSEQ_SELF()->member) == 4 \
|
||||||
|| sizeof (RSEQ_SELF()->member) == 8, \
|
|| sizeof (RSEQ_SELF()->member) == 8, \
|
||||||
"size of rseq data"); \
|
"size of rseq data"); \
|
||||||
(*(volatile __typeof (RSEQ_SELF()->member) __seg_fs *) \
|
((volatile struct rseq_area __seg_fs *)__rseq_offset)->member = (value); \
|
||||||
(__rseq_offset + offsetof (struct rseq_area, member)) = (value)); \
|
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue