1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- From ce34f0e215324455bbb1e4b18f5723b081cae801 Mon Sep 17 00:00:00 2001
- From: Jun Yuan Tan <junyuan.tan@starfivetech.com>
- Date: Tue, 23 Nov 2021 12:08:27 +0800
- Subject: [PATCH 1/1] Add array_length support
- This is needed to build localedef from glibc 2.35 in master branch.
- (Commit f5117c6504888fab5423282a4607c552b90fd3f9)
- Signed-off-by: Jun Yuan Tan <junyuan.tan@starfivetech.com>
- ---
- localedef/include/array_length.h | 36 ++++++++++++++++++++++++++++++++++++
- 1 file changed, 36 insertions(+)
- create mode 100644 localedef/include/array_length.h
- diff --git a/localedef/include/array_length.h b/localedef/include/array_length.h
- new file mode 100644
- index 0000000..12c5126
- --- /dev/null
- +++ b/localedef/include/array_length.h
- @@ -0,0 +1,36 @@
- +/* The array_length and array_end macros.
- + Copyright (C) 2017-2021 Free Software Foundation, Inc.
- + This file is part of the GNU C Library.
- +
- + The GNU C Library is free software; you can redistribute it and/or
- + modify it under the terms of the GNU Lesser General Public
- + License as published by the Free Software Foundation; either
- + version 2.1 of the License, or (at your option) any later version.
- +
- + The GNU C Library 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
- + Lesser General Public License for more details.
- +
- + You should have received a copy of the GNU Lesser General Public
- + License along with the GNU C Library; if not, see
- + <https://www.gnu.org/licenses/>. */
- +
- +#ifndef _ARRAY_LENGTH_H
- +#define _ARRAY_LENGTH_H
- +
- +/* array_length (VAR) is the number of elements in the array VAR. VAR
- + must evaluate to an array, not a pointer. */
- +#define array_length(var) \
- + (sizeof (var) / sizeof ((var)[0]) \
- + + 0 * sizeof (struct { \
- + _Static_assert (!__builtin_types_compatible_p \
- + (__typeof (var), __typeof (&(var)[0])), \
- + "argument must be an array"); \
- + }))
- +
- +/* array_end (VAR) is a pointer one past the end of the array VAR.
- + VAR must evaluate to an array, not a pointer. */
- +#define array_end(var) (&(var)[array_length (var)])
- +
- +#endif /* _ARRAY_LENGTH_H */
- --
- 2.33.1
|