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>
|
||||
|
||||
* dlfcn/modstatic5.c: New file.
|
||||
|
|
|
@ -131,7 +131,18 @@ struct here_cg_arc_record
|
|||
{
|
||||
uintptr_t from_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));
|
||||
|
||||
static struct here_cg_arc_record *data;
|
||||
|
|
Loading…
Reference in New Issue