mirror of git://sourceware.org/git/glibc.git
Mark packed structure element used with atomic operation aligned.
This commit is contained in:
parent
ef65da39e6
commit
ce61a2ad2e
|
@ -1,3 +1,9 @@
|
||||||
|
2013-06-28 Nathan Froyd <froydnj@codesourcery.com>
|
||||||
|
Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* elf/dl-profile.c (struct here_cg_arc_record): Declare 'count'
|
||||||
|
as being properly aligned.
|
||||||
|
|
||||||
2013-06-28 Maciej W. Rozycki <macro@codesourcery.com>
|
2013-06-28 Maciej W. Rozycki <macro@codesourcery.com>
|
||||||
|
|
||||||
* dlfcn/modstatic5.c: New file.
|
* dlfcn/modstatic5.c: New file.
|
||||||
|
|
|
@ -131,7 +131,18 @@ struct here_cg_arc_record
|
||||||
{
|
{
|
||||||
uintptr_t from_pc;
|
uintptr_t from_pc;
|
||||||
uintptr_t self_pc;
|
uintptr_t self_pc;
|
||||||
uint32_t count;
|
/* The count field is atomically incremented in _dl_mcount, which
|
||||||
|
requires it to be properly aligned for its type, and for this
|
||||||
|
alignment to be visible to the compiler. The amount of data
|
||||||
|
before an array of this structure is calculated as
|
||||||
|
expected_size in _dl_start_profile. Everything in that
|
||||||
|
calculation is a multiple of 4 bytes (in the case of
|
||||||
|
kcountsize, because it is derived from a subtraction of
|
||||||
|
page-aligned values, and the corresponding calculation in
|
||||||
|
__monstartup also ensures it is at least a multiple of the size
|
||||||
|
of u_long), so all copies of this field do in fact have the
|
||||||
|
appropriate alignment. */
|
||||||
|
uint32_t count __attribute__ ((aligned (__alignof__ (uint32_t))));
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
static struct here_cg_arc_record *data;
|
static struct here_cg_arc_record *data;
|
||||||
|
|
Loading…
Reference in New Issue