diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | backends/ChangeLog | 4 | ||||
-rw-r--r-- | backends/linux-core-note.c | 2 | ||||
-rw-r--r-- | configure.ac | 13 | ||||
-rw-r--r-- | lib/ChangeLog | 5 | ||||
-rw-r--r-- | lib/eu-config.h | 8 | ||||
-rw-r--r-- | libcpu/ChangeLog | 4 | ||||
-rw-r--r-- | libcpu/memory-access.h | 2 | ||||
-rw-r--r-- | libdw/ChangeLog | 4 | ||||
-rw-r--r-- | libdw/memory-access.h | 2 | ||||
-rw-r--r-- | libelf/ChangeLog | 4 | ||||
-rw-r--r-- | libelf/gelf_xlate.c | 2 |
12 files changed, 51 insertions, 4 deletions
@@ -1,3 +1,8 @@ +2017-08-18 Ulf Hermann <ulf.hermann@qt.io> + + * configure.ac: Check if the compiler supports + __attribute__((gcc_struct)). + 2017-09-19 Mark Wielaard <mark@klomp.org> * README: Add basic build instructions. diff --git a/backends/ChangeLog b/backends/ChangeLog index 79b50ebf..8c3f42c6 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,7 @@ +2017-08-18 Ulf Hermann <ulf.hermann@qt.io> + + * linux-core-note.c: Use attribute_packed. + 2017-04-27 Ulf Hermann <ulf.hermann@qt.io> * Makefile.am: Use dso_LDFLAGS. diff --git a/backends/linux-core-note.c b/backends/linux-core-note.c index 67638d70..08282ba4 100644 --- a/backends/linux-core-note.c +++ b/backends/linux-core-note.c @@ -111,7 +111,7 @@ struct EBLHOOK(prstatus) FIELD (INT, pr_fpvalid); } #ifdef ALIGN_PRSTATUS - __attribute__ ((packed, aligned (ALIGN_PRSTATUS))) + attribute_packed __attribute__ ((aligned (ALIGN_PRSTATUS))) #endif ; diff --git a/configure.ac b/configure.ac index fb18dfc8..4ab8816a 100644 --- a/configure.ac +++ b/configure.ac @@ -143,6 +143,19 @@ if test "$ac_cv_visibility" = "yes"; then [Defined if __attribute__((visibility())) is supported]) fi +AC_CACHE_CHECK([whether gcc supports __attribute__((gcc_struct))], + ac_cv_gcc_struct, [dnl +save_CFLAGS="$CFLAGS" +CFLAGS="$save_CFLAGS -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl +struct test { int x; } __attribute__((gcc_struct)); +])], ac_cv_gcc_struct=yes, ac_cv_gcc_struct=no) +CFLAGS="$save_CFLAGS"]) +if test "$ac_cv_gcc_struct" = "yes"; then + AC_DEFINE([HAVE_GCC_STRUCT], [1], + [Defined if __attribute__((gcc_struct)) is supported]) +fi + AC_CACHE_CHECK([whether gcc supports -fPIC], ac_cv_fpic, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$save_CFLAGS -fPIC -Werror" diff --git a/lib/ChangeLog b/lib/ChangeLog index 23c0f41b..61230453 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2017-08-18 Ulf Hermann <ulf.hermann@qt.io> + + * eu-config.h: Define attribute_packed to either + __attribute__((packed)) or __attribute__((packed, gcc_struct)). + 2017-04-27 Ulf Hermann <ulf.hermann@qt.io> * eu-config.h: Define attribute_hidden to be empty if the compiler diff --git a/lib/eu-config.h b/lib/eu-config.h index 07098282..135803e7 100644 --- a/lib/eu-config.h +++ b/lib/eu-config.h @@ -75,6 +75,14 @@ #define attribute_hidden /* empty */ #endif +#ifdef HAVE_GCC_STRUCT +#define attribute_packed \ + __attribute__ ((packed, gcc_struct)) +#else +#define attribute_packed \ + __attribute__ ((packed)) +#endif + /* Define ALLOW_UNALIGNED if the architecture allows operations on unaligned memory locations. */ #define SANITIZE_UNDEFINED 1 diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 173defe6..c710e5af 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,7 @@ +2017-08-18 Ulf Hermann <ulf.hermann@qt.io> + + * memory-access.h: Use attribute_packed. + 2017-02-27 Ulf Hermann <ulf.hermann@qt.io> * Makefile.am: Use fpic_CFLAGS. diff --git a/libcpu/memory-access.h b/libcpu/memory-access.h index 44210e2f..779825fa 100644 --- a/libcpu/memory-access.h +++ b/libcpu/memory-access.h @@ -90,7 +90,7 @@ union unaligned int16_t s2; int32_t s4; int64_t s8; - } __attribute__ ((packed)); + } attribute_packed; static inline uint16_t read_2ubyte_unaligned (const void *p) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index c13344af..94e9c9ab 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,7 @@ +2017-08-18 Ulf Hermann <ulf.hermann@qt.io> + + * memory-access.h: Use attribute_packed. + 2017-02-27 Ulf Hermann <ulf.hermann@qt.io> * libdwP.h: Use attribute_hidden. diff --git a/libdw/memory-access.h b/libdw/memory-access.h index a749b5a9..afb651fc 100644 --- a/libdw/memory-access.h +++ b/libdw/memory-access.h @@ -170,7 +170,7 @@ union unaligned int16_t s2; int32_t s4; int64_t s8; - } __attribute__ ((packed)); + } attribute_packed; # define read_2ubyte_unaligned(Dbg, Addr) \ read_2ubyte_unaligned_1 ((Dbg)->other_byte_order, (Addr)) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 9793d068..7bd9e1bc 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2017-08-18 Ulf Hermann <ulf.hermann@qt.io> + + * gelf_xlate.c: Use attribute_packed. + 2017-04-27 Ulf Hermann <ulf.hermann@qt.io> * libelfP.h: Use attribute_hidden. diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c index f3d3b7a0..479f1436 100644 --- a/libelf/gelf_xlate.c +++ b/libelf/gelf_xlate.c @@ -74,7 +74,7 @@ union unaligned uint16_t u16; uint32_t u32; uint64_t u64; - } __attribute__ ((packed)); + } attribute_packed; #define FETCH(Bits, ptr) (((const union unaligned *) ptr)->u##Bits) #define STORE(Bits, ptr, val) (((union unaligned *) ptr)->u##Bits = val) |