Messages in this thread | | | Subject | Re: [PATCH 2/2] Tracepoints: Fix section alignment using pointer array | From | Steven Rostedt <> | Date | Wed, 02 Feb 2011 13:56:55 -0500 |
| |
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
| |