Mark packed structure element used with atomic operation aligned.

This commit is contained in:
Nathan Froyd 2013-06-28 21:42:19 +00:00 committed by Joseph Myers
parent ef65da39e6
commit ce61a2ad2e
2 changed files with 18 additions and 1 deletions

View File

@ -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.

View 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;