From: Mathieu Desnoyers Date: Mon, 14 Feb 2011 17:03:09 +0000 (-0500) Subject: UST markers: fix structure alignment for recent gcc X-Git-Tag: v0.12~61 X-Git-Url: http://git.lttng.org/?p=ust.git;a=commitdiff_plain;h=773655f35716237829e6e252e27165ca4044f930 UST markers: fix structure alignment for recent gcc 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 --- diff --git a/include/ust/marker.h b/include/ust/marker.h index 0f42d5b..a1f55b0 100644 --- a/include/ust/marker.h +++ b/include/ust/marker.h @@ -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)], \