Re: [PATCH 2/2] Tracepoints: Fix section alignment using pointerarray

From: Steven Rostedt
Date: Wed Feb 02 2011 - 13:57:00 EST


On Wed, 2011-02-02 at 13:31 -0500, Mathieu Desnoyers wrote:

> > History:
> >
> > commit 7e066fb870fcd1025ec3ba7bbde5d541094f4ce1 added the aligned(32) type and
> > variable attribute to the tracepoint structures to deal with gcc happily
> > aligning statically defined structures on 32-byte multiples.
> >
> > commit 15e3540ce2159705f18fad6147ffedf04445ad64 tried to use a 8-byte alignment
> > for tracepoint structures by applying both the variable and type attribute to
> > tracepoint structures definitions and declarations. It worked fine with gcc
> > 4.5.1, but broke with gcc 4.4.4 and 4.4.5.
>
> Small nit: this reference to commit 15e3540ce2159705f18fad6147ffedf04445ad64
> should be changed to a non-commit-id-related explanation, because the commit has
> been rolled back from -tip.

OK, I just did a git commit --amend to fix it. Here's the new text:


commit 7e066fb870fcd1025ec3ba7bbde5d541094f4ce1 added the aligned(32) type a
variable attribute to the tracepoint structures to deal with gcc happily
aligning statically defined structures on 32-byte multiples.

One attempt was to use a 8-byte alignment for tracepoint structures by apply
both the variable and type attribute to tracepoint structures definitions an
declarations. It worked fine with gcc 4.5.1, but broke with gcc 4.4.4 and 4.

The reason is that the "aligned" attribute only specify the _minimum_ alignm
for a structure, leaving both the compiler and the linker free to align on
larger multiples. Because tracepoint.c expects the structures to be placed a
array within each section, up-alignment cause NULL-pointer exceptions due to
extra unexpected padding.

This version has just been pushed. I just changed the wording to leave
out the reference to the reverted commit.

-- Steve


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/