UST markers: fix structure alignment for recent gcc
authorMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mon, 14 Feb 2011 17:03:09 +0000 (12:03 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mon, 14 Feb 2011 17:03:09 +0000 (12:03 -0500)
GCC 4.5 (and possibly some late 4.4) choose to align structures on large
multiples, which breaks the __marker section (adding extra padding between
object sections). Increase the structure alignment to fix this issue.

Note that kernel tracepoints have recently been changed to use an array of
pointers (which are pointing to the actual tracepoint structures), thus removing
the requirement for these odd structure alignments.

But given that markers are in "maintainance mode", let's do the quick fix and
just increase the minimum alignment size.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/ust/marker.h

index 0f42d5b1941f3d63036ad6839b55bb4c085854c1..a1f55b0b76338f6db9fa7d4c7309b3f7f6ba862c 100644 (file)
@@ -75,7 +75,11 @@ struct marker {
        const char *tp_name;    /* Optional tracepoint name */
        void *tp_cb;            /* Optional tracepoint callback */
        void *location;         /* Address of marker in code */
-} __attribute__((aligned(8)));
+} __attribute__((aligned(128)));/*
+                                * Aligned on 128 bytes because it is
+                                * globally visible and gcc happily
+                                * align these on the structure size.
+                                */
 
 #define GET_MARKER(channel, name)      (__mark_##channel##_##name)
 
@@ -143,7 +147,7 @@ struct marker {
                __attribute__((section("__markers_strings")))           \
                = #channel "\0" #name "\0" format;                      \
                static struct marker GET_MARKER(channel, name)          \
-               __attribute__((section("__markers"), aligned(8))) =     \
+               __attribute__((section("__markers"), aligned(128))) =   \
                { __mstrtab_##channel##_##name,                         \
                        &__mstrtab_##channel##_##name[sizeof(#channel)],        \
                        &__mstrtab_##channel##_##name[sizeof(#channel) + sizeof(#name)],                \
This page took 0.024266 seconds and 4 git commands to generate.