about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-10-29 12:46:22 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-10-29 12:46:22 +0000
commitdbb7600658d8ea633083ee99572622b04ef23a3f (patch)
tree41d2e39e7b943c26da29f40ce2307dcb8bf4451e
parent58acfe6fa7b1e28ec15ce59c5a90fe36a9c11a85 (diff)
downloadglibc-dbb7600658d8ea633083ee99572622b04ef23a3f.tar.gz
glibc-dbb7600658d8ea633083ee99572622b04ef23a3f.tar.xz
glibc-dbb7600658d8ea633083ee99572622b04ef23a3f.zip
Use max_align_t from <stddef.h>.
Now that we build with -std=gnu11 and can rely on a compiler providing
max_align_t in <stddef.h>, we no longer need our own version
libc_max_align_t.  This patch removes it and replaces the single user
with a use of max_align_t.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch for x86_64; for x86, I see
some code reordering of no significance).

	* include/libc-internal.h (libc_max_align_t): Remove typedef.
	* include/scratch_buffer.h: Include <stddef.h> instead of
	<libc-internal.h>.
	(struct scratch_buffer): Use max_align_t instead of
	libc_max_align_t.
-rw-r--r--ChangeLog8
-rw-r--r--include/libc-internal.h9
-rw-r--r--include/scratch_buffer.h5
3 files changed, 10 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 9bab5e44bb..55c2a0d213 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-10-29  Joseph Myers  <joseph@codesourcery.com>
+
+	* include/libc-internal.h (libc_max_align_t): Remove typedef.
+	* include/scratch_buffer.h: Include <stddef.h> instead of
+	<libc-internal.h>.
+	(struct scratch_buffer): Use max_align_t instead of
+	libc_max_align_t.
+
 2015-10-29  Florian Weimer  <fweimer@redhat.com>
 
 	* elf/dl-fini.c (_dl_fini): Rewrite to use variable-length array
diff --git a/include/libc-internal.h b/include/libc-internal.h
index 65a2a56cc7..7a185bbdc7 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -111,13 +111,4 @@ extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
 #define DIAG_IGNORE_NEEDS_COMMENT(version, option)	\
   _Pragma (_DIAG_STR (GCC diagnostic ignored option))
 
-/* This mirrors the C11 max_align_t type provided by GCC, but it is
-   also available in C99 mode.  The aligned attributes are required
-   because some ABIs have reduced alignment requirements for struct
-   and union members.  */
-typedef struct {
-  long long ll __attribute__ ((__aligned__ (__alignof__ (long long))));
-  long double ld __attribute__ ((__aligned__ (__alignof__ (long double))));
-} libc_max_align_t;
-
 #endif /* _LIBC_INTERNAL  */
diff --git a/include/scratch_buffer.h b/include/scratch_buffer.h
index 6f92694bb8..1a50cdf647 100644
--- a/include/scratch_buffer.h
+++ b/include/scratch_buffer.h
@@ -58,17 +58,16 @@
 */
 
 #include <stdbool.h>
+#include <stddef.h>
 #include <stdlib.h>
 
-#include <libc-internal.h>
-
 /* Scratch buffer.  Must be initialized with scratch_buffer_init
    before its use.  */
 struct scratch_buffer {
   void *data;    /* Pointer to the beginning of the scratch area.  */
   size_t length; /* Allocated space at the data pointer, in bytes.  */
   char __space[1024]
-    __attribute__ ((aligned (__alignof__ (libc_max_align_t))));
+    __attribute__ ((aligned (__alignof__ (max_align_t))));
 };
 
 /* Initializes *BUFFER so that BUFFER->data points to BUFFER->__space