Skip to content

Commit

Permalink
Mark packed structure element used with atomic operation aligned.
Browse files Browse the repository at this point in the history
  • Loading branch information
Nathan Froyd authored and Joseph Myers committed Jun 28, 2013
1 parent ef65da3 commit ce61a2a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
6 changes: 6 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
13 changes: 12 additions & 1 deletion elf/dl-profile.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit ce61a2a

Please sign in to comment.