Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Joseph Myers committed Oct 29, 2015
1 parent 58acfe6 commit dbb7600
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 12 deletions.
8 changes: 8 additions & 0 deletions 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
Expand Down
9 changes: 0 additions & 9 deletions include/libc-internal.h
Expand Up @@ -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 */
5 changes: 2 additions & 3 deletions include/scratch_buffer.h
Expand Up @@ -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
Expand Down

0 comments on commit dbb7600

Please sign in to comment.