mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
698be2d8e5
This fixes two issues on Windows: Update. https://sourceware.org/pipermail/gdb-patches/2020-June/169978.html gnulib/ChangeLog: 2020-08-26 Christian Biesinger <cbiesinger@google.com> Pedro Alves <palves@redhat.com> Joel Brobecker <brobecker@adacore.com> * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * config.in: Regenerate. * configure: Regenerate. * import/Makefile.am: Update. * import/Makefile.in: Regenerate. * import/alloca.in.h (if): Update. * import/assure.h (affirm): Update. * import/at-func.c: Update. * import/attribute.h: New file. * import/btowc.c: New file. * import/canonicalize-lgpl.c: Update. * import/count-one-bits.h (COUNT_ONE_BITS_GENERIC): Update. (COUNT_ONE_BITS): Update. (intrinsic): Update. (__popcnt64): Update. (popcount_supported): Update. * import/ctype.in.h: New file. * import/dirent-private.h (WIN32_FIND_DATA): Update. * import/dirent.in.h (_GL_ATTRIBUTE_PURE): Update. * import/dirname.h: Update. * import/dosname.h: Remove. * import/error.h (_GL_ATTRIBUTE_FORMAT): Update. * import/extra/update-copyright: Update. * import/fchdir.c: Update. * import/fcntl.in.h (GNULIB_defined_rpl_fcntl): Update. (GNULIB_defined_fcntl): Update. * import/filename.h (HAS_DEVICE): Update. (IS_ABSOLUTE_PATH): Update. (IS_PATH_WITH_DIR): Update. (FILE_SYSTEM_PREFIX_LEN): Update. (_IS_DRIVE_LETTER): Update. (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE): Update. (IS_ABSOLUTE_FILE_NAME): Update. (IS_RELATIVE_FILE_NAME): Update. (IS_FILE_NAME_WITH_DIR): Update. * import/filenamecat-lgpl.c (mfile_name_concat): Update. * import/fnmatch.c (WIDE_CHAR_SUPPORT): Update. (btowc): Update. (iswctype): Update. (mempcpy): Update. (strnlen): Update. (towlower): Update. (wcscat): Update. (wcslen): Update. (wctype): Update. (wmemchr): Update. (wmempcpy): Update. (SIZE_MAX): Update. (isblank): Update. (__libc_use_alloca): Update. (alloca): Update. (alloca_account): Update. (STREQ): Update. (CHAR_CLASS_MAX_LENGTH): Update. (IS_CHAR_CLASS): Update. (ISWCTYPE): Update. (if): Update. (HANDLE_MULTIBYTE): Update. (internal_function): Update. (FOLD): Update. (CHAR): Update. (UCHAR): Update. (INT): Update. (FCT): Update. (EXT): Update. (END): Update. (L_): Update. (BTOWC): Update. (STRLEN): Update. (STRCAT): Update. (MEMPCPY): Update. (MEMCHR): Update. (WIDE_CHAR_VERSION): Update. (STRUCT): Update. (FINDIDX): Update. (findidx): Update. (ALLOCA_LIMIT): Update. (SHLIB_COMPAT): Update. * import/fnmatch_loop.c (struct STRUCT): Update. (FCT): Update. (EXT): Update. (END): Update. (str): Update. (NEW_PATTERN): Update. * import/getcwd.c: Update. * import/getlogin_r.c (GetUserName): Update. * import/getprogname.c (getprogname): Update. * import/getrandom.c: New file. * import/gettimeofday.c: Remove. * import/glob.in.h (_Restrict_): Update. * import/inttypes.in.h (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_FUNCDECL_SYS): Update. (_GL_CXXALIAS_SYS): Update. * import/isblank.c: New file. * import/isnanl-nolibm.h (__has_builtin): Update. * import/libc-config.h (versioned_symbol): Update. (compat_symbol): Update. * import/limits.in.h (_GL_ALREADY_INCLUDING_LIMITS_H): Update. * import/m4/btowc.m4: New file. * import/m4/ctype.m4: New file. * import/m4/exponentl.m4: Update. * import/m4/fnmatch.m4: Update. * import/m4/getrandom.m4: New file. * import/m4/glob.m4: Update. * import/m4/gnulib-cache.m4: Update. * import/m4/gnulib-common.m4: Update. * import/m4/gnulib-comp.m4: Update. * import/m4/inttypes.m4: Update. * import/m4/isblank.m4: New file. * import/m4/isnanl.m4: Update. * import/m4/largefile.m4: Update. * import/m4/mbtowc.m4: New file. * import/m4/memmem.m4: Update. * import/m4/minmax.m4: New file. * import/m4/signal_h.m4: Update. * import/m4/stdio_h.m4: Update. * import/m4/stdlib_h.m4: Update. * import/m4/string_h.m4: Update. * import/m4/strnlen.m4: New file. * import/m4/sys_random_h.m4: New file. * import/m4/sys_socket_h.m4: Update. * import/m4/sys_stat_h.m4: Update. * import/m4/time_h.m4: Update. * import/m4/unistd_h.m4: Update. * import/m4/wchar_h.m4: Update. * import/m4/wint_t.m4: Update. * import/m4/wmemchr.m4: New file. * import/m4/wmempcpy.m4: New file. * import/math.in.h (__has_builtin): Update. * import/mbrtowc.c (FALLTHROUGH): Update. * import/mbtowc-impl.h: New file. * import/mbtowc.c: New file. * import/minmax.h: New file. * import/open.c (open): Update. * import/openat-proc.c (openat_proc_name): Update. * import/openat.c (rpl_openat): Update. (openat_needs_fchdir): Update. * import/openat.h (FCHOWNAT_INLINE): Update. (CHOWNAT_INLINE): Update. (FCHMODAT_INLINE): Update. (CHMODAT_INLINE): Update. * import/opendir.c (WIN32_FIND_DATA): Update. (GetFullPathName): Update. (FindFirstFile): Update. * import/readdir.c (FindNextFile): Update. * import/rename.c (MoveFileEx): Update. * import/rewinddir.c (FindFirstFile): Update. * import/rmdir.c: Update. * import/signal.in.h (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_FUNCDECL_SYS): Update. (_GL_CXXALIAS_SYS): Update. * import/stat-w32.c (_WIN32_WINNT): Update. (LoadLibrary): Update. (GetFinalPathNameByHandle): Update. (GetProcAddress): Update. (DWORD): Update. (GetFileInformationByHandleExFunc): Update. (GetFinalPathNameByHandleFunc): Update. * import/stat.c (WIN32_FIND_DATA): Update. (CreateFile): Update. (FindFirstFile): Update. * import/stdio.in.h (_GL_ATTRIBUTE_FORMAT): Update. (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_FUNCDECL_SYS): Update. (_GL_CXXALIAS_SYS): Update. (_GL_FUNCDECL_RPL_1): Update. (_GL_CXXALIAS_RPL_1): Update. (_GL_CXXALIAS_SYS_CAST): Update. * import/stdlib.in.h (_GL_ATTRIBUTE_PURE): Update. (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_FUNCDECL_SYS): Update. (_GL_CXXALIAS_SYS): Update. * import/string.in.h (_GL_ATTRIBUTE_PURE): Update. (_GL_WARN_ON_USE): Update. (_GL_WARN_ON_USE_CXX): Update. (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_CXXALIAS_SYS): Update. (mbstok_r): Update. * import/strnlen.c: New file. * import/sys_random.in.h: New file. * import/sys_socket.in.h (GNULIB_defined_socklen_t): Update. (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_CXXALIAS_SYS_CAST): Update. * import/sys_stat.in.h (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_FUNCDECL_SYS): Update. (_GL_CXXALIAS_SYS): Update. (lchmod): Update. (_GL_CXXALIAS_RPL_1): Update. (stat): Update. * import/tempname.c (__set_errno): Update. (__secure_getenv): Update. (__try_tempname): Update. (__getpid): Update. (__gettimeofday): Update. (RANDOM_BITS): Update. (uint64_t): Update. (RANDOM_VALUE_MAX): Update. (BASE_62_DIGITS): Update. (BASE_62_POWER): Update. (try_tempname_len): Update. (try_file): Update. (try_dir): Update. (try_nocreate): Update. (gen_tempname_len): Update. (__gen_tempname): Update. (try_tempname): Update. * import/tempname.h (gen_tempname_len): Update. (try_tempname_len): Update. * import/time.in.h (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_CXXALIAS_SYS): Update. * import/unistd.in.h (if): Update. (_GL_FUNCDECL_SYS): Update. (_GL_CXXALIAS_SYS): Update. (_GL_CXXALIASWARN): Update. (_GL_WARN_ON_USE): Update. (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. * import/verify.h: Update. * import/warn-on-use.h (_GL_WARN_ON_USE_CXX): Update. * import/wchar.in.h (_GL_ATTRIBUTE_PURE): Update. (_GL_FUNCDECL_RPL): Update. (_GL_CXXALIAS_RPL): Update. (_GL_FUNCDECL_SYS): Update. (_GL_CXXALIAS_SYS): Update. (_GL_CXXALIASWARN): Update. (_GL_WARN_ON_USE): Update. (_GL_CXXALIAS_SYS_CAST2): Update. (_GL_CXXALIASWARN1): Update. * import/windows-rwlock.c (CreateEvent): Update. * import/wmemchr-impl.h: New file. * import/wmemchr.c: New file. * import/wmempcpy.c: New file. * update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add gettimeofday. (GNULIB_COMMIT_SHA1): Update gnulib revision.
216 lines
8.1 KiB
C
216 lines
8.1 KiB
C
/* ATTRIBUTE_* macros for using attributes in GCC and similar compilers
|
|
|
|
Copyright 2020 Free Software Foundation, Inc.
|
|
|
|
This program is free software: you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published
|
|
by the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
|
|
|
/* Written by Paul Eggert. */
|
|
|
|
/* Provide public ATTRIBUTE_* names for the private _GL_ATTRIBUTE_*
|
|
macros used within Gnulib. */
|
|
|
|
/* These attributes can be placed in two ways:
|
|
- At the start of a declaration (i.e. even before storage-class
|
|
specifiers!); then they apply to all entities that are declared
|
|
by the declaration.
|
|
- Immediately after the name of an entity being declared by the
|
|
declaration; then they apply to that entity only. */
|
|
|
|
#ifndef _GL_ATTRIBUTE_H
|
|
#define _GL_ATTRIBUTE_H
|
|
|
|
|
|
/* This file defines two types of attributes:
|
|
* C2X standard attributes. These have macro names that do not begin with
|
|
'ATTRIBUTE_'.
|
|
* Selected GCC attributes; see:
|
|
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
|
|
https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html
|
|
https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html
|
|
These names begin with 'ATTRIBUTE_' to avoid name clashes. */
|
|
|
|
|
|
/* =============== Attributes for specific kinds of functions =============== */
|
|
|
|
/* Attributes for functions that should not be used. */
|
|
|
|
/* Warn if the entity is used. */
|
|
/* Applies to:
|
|
- function, variable,
|
|
- struct, union, struct/union member,
|
|
- enumeration, enumeration item,
|
|
- typedef,
|
|
in C++ also: namespace, class, template specialization. */
|
|
#define DEPRECATED _GL_ATTRIBUTE_DEPRECATED
|
|
|
|
/* If a function call is not optimized way, warn with MSG. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_WARNING(msg) _GL_ATTRIBUTE_WARNING (msg)
|
|
|
|
/* If a function call is not optimized way, report an error with MSG. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_ERROR(msg) _GL_ATTRIBUTE_ERROR (msg)
|
|
|
|
|
|
/* Attributes for memory-allocating functions. */
|
|
|
|
/* The function returns a pointer to freshly allocated memory. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_MALLOC _GL_ATTRIBUTE_MALLOC
|
|
|
|
/* ATTRIBUTE_ALLOC_SIZE ((N)) - The Nth argument of the function
|
|
is the size of the returned memory block.
|
|
ATTRIBUTE_ALLOC_SIZE ((M, N)) - Multiply the Mth and Nth arguments
|
|
to determine the size of the returned memory block. */
|
|
/* Applies to: function, pointer to function, function types. */
|
|
#define ATTRIBUTE_ALLOC_SIZE(args) _GL_ATTRIBUTE_ALLOC_SIZE (args)
|
|
|
|
|
|
/* Attributes for variadic functions. */
|
|
|
|
/* The variadic function expects a trailing NULL argument.
|
|
ATTRIBUTE_SENTINEL () - The last argument is NULL.
|
|
ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_SENTINEL(pos) _GL_ATTRIBUTE_SENTINEL (pos)
|
|
|
|
|
|
/* ================== Attributes for compiler diagnostics ================== */
|
|
|
|
/* Attributes that help the compiler diagnose programmer mistakes.
|
|
Some of them may also help for some compiler optimizations. */
|
|
|
|
/* ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) -
|
|
The STRING-INDEXth function argument is a format string of style
|
|
ARCHETYPE, which is one of:
|
|
printf, gnu_printf
|
|
scanf, gnu_scanf,
|
|
strftime, gnu_strftime,
|
|
strfmon,
|
|
or the same thing prefixed and suffixed with '__'.
|
|
If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK
|
|
are suitable for the format string. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_FORMAT(spec) _GL_ATTRIBUTE_FORMAT (spec)
|
|
|
|
/* ATTRIBUTE_NONNULL ((N1, N2,...)) - Arguments N1, N2,... must not be NULL.
|
|
ATTRIBUTE_NONNULL () - All pointer arguments must not be null. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_NONNULL(args) _GL_ATTRIBUTE_NONNULL (args)
|
|
|
|
/* The function's return value is a non-NULL pointer. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_RETURNS_NONNULL _GL_ATTRIBUTE_RETURNS_NONNULL
|
|
|
|
/* Warn if the caller does not use the return value,
|
|
unless the caller uses something like ignore_value. */
|
|
/* Applies to: function, enumeration, class. */
|
|
#define NODISCARD _GL_ATTRIBUTE_NODISCARD
|
|
|
|
|
|
/* Attributes that disable false alarms when the compiler diagnoses
|
|
programmer "mistakes". */
|
|
|
|
/* Do not warn if the entity is not used. */
|
|
/* Applies to:
|
|
- function, variable,
|
|
- struct, union, struct/union member,
|
|
- enumeration, enumeration item,
|
|
- typedef,
|
|
in C++ also: class. */
|
|
#define MAYBE_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED
|
|
|
|
/* The contents of a character array is not meant to be NUL-terminated. */
|
|
/* Applies to: struct/union members and variables that are arrays of element
|
|
type '[[un]signed] char'. */
|
|
#define ATTRIBUTE_NONSTRING _GL_ATTRIBUTE_NONSTRING
|
|
|
|
/* Do not warn if control flow falls through to the immediately
|
|
following 'case' or 'default' label. */
|
|
/* Applies to: Empty statement (;), inside a 'switch' statement. */
|
|
#define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH
|
|
|
|
|
|
/* ================== Attributes for debugging information ================== */
|
|
|
|
/* Attributes regarding debugging information emitted by the compiler. */
|
|
|
|
/* Omit the function from stack traces when debugging. */
|
|
/* Applies to: function. */
|
|
#define ATTRIBUTE_ARTIFICIAL _GL_ATTRIBUTE_ARTIFICIAL
|
|
|
|
/* Make the entity visible to debuggers etc., even with '-fwhole-program'. */
|
|
/* Applies to: functions, variables. */
|
|
#define ATTRIBUTE_EXTERNALLY_VISIBLE _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
|
|
|
|
|
|
/* ========== Attributes that mainly direct compiler optimizations ========== */
|
|
|
|
/* The function does not throw exceptions. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_NOTHROW _GL_ATTRIBUTE_NOTHROW
|
|
|
|
/* Do not inline the function. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_NOINLINE _GL_ATTRIBUTE_NOINLINE
|
|
|
|
/* Always inline the function, and report an error if the compiler
|
|
cannot inline. */
|
|
/* Applies to: function. */
|
|
#define ATTRIBUTE_ALWAYS_INLINE _GL_ATTRIBUTE_ALWAYS_INLINE
|
|
|
|
/* The function does not affect observable state, and always returns a value.
|
|
Compilers can omit duplicate calls with the same arguments if
|
|
observable state is not changed between calls. (This attribute is
|
|
looser than ATTRIBUTE_CONST.) */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_PURE _GL_ATTRIBUTE_PURE
|
|
|
|
/* The function neither depends on nor affects observable state,
|
|
and always returns a value. Compilers can omit duplicate calls with
|
|
the same arguments. (This attribute is stricter than ATTRIBUTE_PURE.) */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST
|
|
|
|
/* The function is rarely executed. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_COLD _GL_ATTRIBUTE_COLD
|
|
|
|
/* If called from some other compilation unit, the function executes
|
|
code from that unit only by return or by exception handling,
|
|
letting the compiler optimize that unit more aggressively. */
|
|
/* Applies to: functions. */
|
|
#define ATTRIBUTE_LEAF _GL_ATTRIBUTE_LEAF
|
|
|
|
/* For struct members: The member has the smallest possible alignment.
|
|
For struct, union, class: All members have the smallest possible alignment,
|
|
minimizing the memory required. */
|
|
/* Applies to: struct members, struct, union,
|
|
in C++ also: class. */
|
|
#define ATTRIBUTE_PACKED _GL_ATTRIBUTE_PACKED
|
|
|
|
|
|
/* ================ Attributes that make invalid code valid ================ */
|
|
|
|
/* Attributes that prevent fatal compiler optimizations for code that is not
|
|
fully ISO C compliant. */
|
|
|
|
/* Pointers to the type may point to the same storage as pointers to
|
|
other types, thus disabling strict aliasing optimization. */
|
|
/* Applies to: types. */
|
|
#define ATTRIBUTE_MAY_ALIAS _GL_ATTRIBUTE_MAY_ALIAS
|
|
|
|
|
|
#endif /* _GL_ATTRIBUTE_H */
|