1 /* Substitute for and wrapper around <malloc.h>.
2    Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 
4    This file is free software: you can redistribute it and/or modify
5    it under the terms of the GNU Lesser General Public License as
6    published by the Free Software Foundation; either version 2.1 of the
7    License, or (at your option) any later version.
8 
9    This file is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU Lesser General Public License for more details.
13 
14    You should have received a copy of the GNU Lesser General Public License
15    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
16 
17 #ifndef _@GUARD_PREFIX@_MALLOC_H
18 
19 #if __GNUC__ >= 3
20 @PRAGMA_SYSTEM_HEADER@
21 #endif
22 @PRAGMA_COLUMNS@
23 
24 /* The include_next requires a split double-inclusion guard.  */
25 #if @HAVE_MALLOC_H@
26 # @INCLUDE_NEXT@ @NEXT_MALLOC_H@
27 #endif
28 
29 #ifndef _@GUARD_PREFIX@_MALLOC_H
30 #define _@GUARD_PREFIX@_MALLOC_H
31 
32 /* Solaris declares memalign() in <stdlib.h>, not in <malloc.h>.
33    Also get size_t and free().  */
34 #include <stdlib.h>
35 
36 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
37 
38 /* The definition of _GL_WARN_ON_USE is copied here.  */
39 
40 
41 /* Declare overridden functions.  */
42 
43 #if @GNULIB_MEMALIGN@
44 # if @REPLACE_MEMALIGN@
45 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
46 #   undef memalign
47 #   define memalign rpl_memalign
48 #  endif
49 _GL_FUNCDECL_RPL (memalign, void *,
50                   (size_t alignment, size_t size)
51                   _GL_ATTRIBUTE_DEALLOC_FREE);
52 _GL_CXXALIAS_RPL (memalign, void *, (size_t alignment, size_t size));
53 # else
54 #  if @HAVE_MEMALIGN@
55 #   if __GNUC__ >= 11
56 /* For -Wmismatched-dealloc: Associate memalign with free or rpl_free.  */
57 _GL_FUNCDECL_SYS (memalign, void *,
58                   (size_t alignment, size_t size)
59                   _GL_ATTRIBUTE_DEALLOC_FREE);
60 #   endif
61 _GL_CXXALIAS_SYS (memalign, void *, (size_t alignment, size_t size));
62 #  endif
63 # endif
64 # if @HAVE_MEMALIGN@
65 _GL_CXXALIASWARN (memalign);
66 # endif
67 #else
68 # if __GNUC__ >= 11 && !defined memalign
69 /* For -Wmismatched-dealloc: Associate memalign with free or rpl_free.  */
70 _GL_FUNCDECL_SYS (memalign, void *,
71                   (size_t alignment, size_t size)
72                   _GL_ATTRIBUTE_DEALLOC_FREE);
73 # endif
74 # if defined GNULIB_POSIXCHECK
75 #  undef memalign
76 #  if HAVE_RAW_DECL_MEMALIGN
77 _GL_WARN_ON_USE (memalign, "memalign is not portable - "
78                  "use gnulib module memalign for portability");
79 #  endif
80 # endif
81 #endif
82 
83 
84 #endif /* _@GUARD_PREFIX@_MALLOC_H */
85 #endif /* _@GUARD_PREFIX@_MALLOC_H */
86