diff options
author | 2024-05-18 09:33:19 +0200 | |
---|---|---|
committer | 2024-05-18 09:33:19 +0200 | |
commit | 8d7b6b4cb27d4dec1dd5f7960298c1699275f962 (patch) | |
tree | d3233e6a49dbde86dee8ea46920714a1adbbddb7 /misc | |
parent | Use a doubly-linked list for _IO_list_all (bug 27777) (diff) | |
download | glibc-8d7b6b4cb27d4dec1dd5f7960298c1699275f962.tar.xz glibc-8d7b6b4cb27d4dec1dd5f7960298c1699275f962.zip |
socket: Use may_alias on sockaddr structs (bug 19622)
This supports common coding patterns. The GCC C front end before
version 7 rejects the may_alias attribute on a struct definition
if it was not present in a previous forward declaration, so this
attribute can only be conditionally applied.
This implements the spirit of the change in Austin Group issue 1641.
Suggested-by: Marek Polacek <polacek@redhat.com>
Suggested-by: Jakub Jelinek <jakub@redhat.com>
Reviewed-by: Sam James <sam@gentoo.org>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'misc')
-rw-r--r-- | misc/sys/cdefs.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index 2e8279a2c7..ab9620bd0d 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -874,4 +874,13 @@ _Static_assert (0, "IEEE 128-bits long double requires redirection on this platf # define __attribute_returns_twice__ /* Ignore. */ #endif +/* Mark struct types as aliasable. Restricted to compilers that + support forward declarations of structs in the presence of the + attribute. */ +#if __GNUC_PREREQ (7, 1) || defined __clang__ +# define __attribute_struct_may_alias__ __attribute__ ((__may_alias__)) +#else +# define __attribute_struct_may_alias__ +#endif + #endif /* sys/cdefs.h */ |