Project

General

Profile

Bug #1886 » 0060-gnulib-common.m4-Refresh-from-gnulib.patch

Marko Lindqvist, 01/08/2026 02:15 AM

View differences:

dependencies/m4/gnulib-common.m4
# gnulib-common.m4
# serial 115
dnl Copyright (C) 2007-2025 Free Software Foundation, Inc.
dnl Copyright (C) 2007-2026 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
......
without examining state, and always returns exactly once -
e.g., does not raise an exception, call longjmp, or loop forever.
(This attribute is stricter than _GL_ATTRIBUTE_PURE because the
function cannot observe state. It is stricter than
_GL_ATTRIBUTE_UNSEQUENCED because the function must return exactly
once and cannot access state addressed by its arguments.) */
function cannot observe state. Unlike _GL_ATTRIBUTE_UNSEQUENCED
the function must return exactly once and cannot access state
addressed by its pointer arguments or that happens to have the same
value for all calls to the function, but the function is allowed to
return a pointer to storage that can be modified later. */
/* Applies to: functions. */
#ifndef _GL_ATTRIBUTE_CONST
# if _GL_HAS_ATTRIBUTE (const)
# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
# else
# define _GL_ATTRIBUTE_CONST _GL_ATTRIBUTE_UNSEQUENCED
# define _GL_ATTRIBUTE_CONST
# endif
#endif
......
/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if
the entity is not used. The compiler should not warn if the entity is not
used. */
used. However, 'int _GL_UNNAMED (i)' is preferable to
'_GL_ATTRIBUTE_MAYBE_UNUSED int i' when parameter I is unused
regardless of preprocessor macro settings. */
/* Applies to:
- function, variable,
- struct, union, struct/union member,
......
returns a value determined solely by its arguments's values
together with observable state, and always returns exactly once.
(This attribute is looser than _GL_ATTRIBUTE_CONST because the function
can depend on observable state. It is stricter than
_GL_ATTRIBUTE_REPRODUCIBLE because the function must return exactly
once and cannot change state addressed by its arguments.) */
can depend on observable state.
Unlike _GL_ATTRIBUTE_REPRODUCIBLE the function must return exactly
once and cannot change state addressed by its arguments, but the
function can return a pointer to storage whose contents change later.) */
/* Applies to: functions. */
#ifndef _GL_ATTRIBUTE_PURE
# if _GL_HAS_ATTRIBUTE (pure)
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
# else
# define _GL_ATTRIBUTE_PURE _GL_ATTRIBUTE_REPRODUCIBLE
# define _GL_ATTRIBUTE_PURE
# endif
#endif
/* _GL_ATTRIBUTE_REPRODUCIBLE declares:
It is OK for a compiler to move a call, or omit a duplicate call
and reuse a cached value returned either directly or indirectly
via a pointer argument, if other observable state is the same;
however, these pointer arguments cannot alias.
and reuse a cached value returned either directly or indirectly via
a pointer, if other observable state is the same;
however, pointer arguments cannot alias.
This attribute is safe for a function that is effectless and idempotent;
see ISO C 23 § 6.7.13.8 for a definition of these terms.
(This attribute is looser than _GL_ATTRIBUTE_UNSEQUENCED because
the function need not be stateless or independent. It is looser
from _GL_ATTRIBUTE_PURE because the function need not return
exactly once, and it can change state addressed by its pointer arguments
that do not alias.)
the function need not be stateless or independent.
Unlike _GL_ATTRIBUTE_PURE the function need not return exactly once
and can change state addressed by its pointer arguments, but the
function cannot return a pointer to storage whose contents change later.)
See also <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2956.htm> and
<https://stackoverflow.com/questions/76847905/>.
ATTENTION! Efforts are underway to change the meaning of this attribute.
See <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3494.htm>. */
<https://stackoverflow.com/questions/76847905/>. */
/* Applies to: functions, pointer to functions, function types. */
#ifndef _GL_ATTRIBUTE_REPRODUCIBLE
/* This may be revisited when gcc and clang support [[reproducible]] or possibly
......
/* _GL_ATTRIBUTE_UNSEQUENCED declares:
It is OK for a compiler to move a call, or omit a duplicate call
and reuse a cached return value, addressed by its arguments is the same.
and reuse a cached value returned either directly or indirectly via
a pointer, if the state addressed by its pointer arguments is the same;
however, pointer arguments cannot alias.
This attribute is safe for a function that is effectless, idempotent,
stateless, and independent; see ISO C 23 § 6.7.13.8 for a definition of
these terms.
(This attribute is stricter than _GL_ATTRIBUTE_REPRODUCIBLE because
the function must be stateless and independent. It differs from
_GL_ATTRIBUTE_CONST because the function need not return exactly
once and can depend on state accessed via its pointer arguments
that do not alias, or on other state that happens to have the
same value for all calls to the function.)
the function must be stateless and independent. Unlike
_GL_ATTRIBUTE_CONST the function need not return exactly once, and
can depend on state accessed via its pointer arguments or that
happens to have the same value for all calls to the function, but
the function cannot return a pointer to storage whose contents
change later.)
See also <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2956.htm> and
<https://stackoverflow.com/questions/76847905/>.
ATTENTION! Efforts are underway to change the meaning of this attribute.
See <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3494.htm>. */
<https://stackoverflow.com/questions/76847905/>. */
/* Applies to: functions, pointer to functions, function types. */
#ifndef _GL_ATTRIBUTE_UNSEQUENCED
/* This may be revisited when gcc and clang support [[unsequenced]] or possibly
......
# endif
#endif
/* _GL_UNNAMED (ID) is the "name" of an unnamed function parameter.
Each of the function's unnamed parameters should have a unique "name".
The "name" cannot be used. This ports both to C17 and earlier, which
lack unnamed parameters, and to C++ and later C, which have them. */
/* Applies to:
- function parameters. */
#ifndef _GL_UNNAMED
# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 202311 \
&& !defined __cplusplus)
# define _GL_UNNAMED(id) unnamed_##id _GL_ATTRIBUTE_UNUSED
# else
# define _GL_UNNAMED(id)
# endif
#endif
/* The following attributes enable detection of multithread-safety problems
and resource leaks at compile-time, by clang ≥ 15, when the warning option
-Wthread-safety is enabled. For usage, see
    (1-1/1)