mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-08 17:22:05 +03:00
malloc-h: New module.
* lib/malloc.in.h: New file. * m4/malloc_h.m4: New file. * modules/malloc-h: New file. * doc/glibc-headers/malloc.texi: New file. * doc/gnulib.texi (Glibc Header File Substitutes): Include it.
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2020-12-31 Bruno Haible <bruno@clisp.org>
|
||||||
|
|
||||||
|
malloc-h: New module.
|
||||||
|
* lib/malloc.in.h: New file.
|
||||||
|
* m4/malloc_h.m4: New file.
|
||||||
|
* modules/malloc-h: New file.
|
||||||
|
* doc/glibc-headers/malloc.texi: New file.
|
||||||
|
* doc/gnulib.texi (Glibc Header File Substitutes): Include it.
|
||||||
|
|
||||||
2020-12-31 Bruno Haible <bruno@clisp.org>
|
2020-12-31 Bruno Haible <bruno@clisp.org>
|
||||||
|
|
||||||
unistd: Fix portability warnings.
|
unistd: Fix portability warnings.
|
||||||
|
29
doc/glibc-headers/malloc.texi
Normal file
29
doc/glibc-headers/malloc.texi
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
@node malloc.h
|
||||||
|
@section @file{malloc.h}
|
||||||
|
|
||||||
|
Declares the function @code{memalign} and functions for customizing the
|
||||||
|
@code{malloc} behavior.
|
||||||
|
|
||||||
|
Documentation:
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
@ifinfo
|
||||||
|
@ref{Unconstrained Allocation,,,libc},
|
||||||
|
@end ifinfo
|
||||||
|
@ifnotinfo
|
||||||
|
@url{https://www.gnu.org/software/libc/manual/html_node/Unconstrained-Allocation.html}.
|
||||||
|
@end ifnotinfo
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
Gnulib module: malloc-h
|
||||||
|
|
||||||
|
Portability problems fixed by Gnulib:
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
This header file is missing on some platforms:
|
||||||
|
Mac OS X 10.13, OpenBSD 6.7.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
Portability problems not fixed by Gnulib:
|
||||||
|
@itemize
|
||||||
|
@end itemize
|
@@ -3739,6 +3739,7 @@ not worked around by Gnulib.
|
|||||||
* ifaddrs.h::
|
* ifaddrs.h::
|
||||||
* libintl.h::
|
* libintl.h::
|
||||||
* link.h::
|
* link.h::
|
||||||
|
* malloc.h::
|
||||||
* mcheck.h::
|
* mcheck.h::
|
||||||
* mntent.h::
|
* mntent.h::
|
||||||
* obstack.h::
|
* obstack.h::
|
||||||
@@ -3775,6 +3776,7 @@ not worked around by Gnulib.
|
|||||||
@include glibc-headers/ifaddrs.texi
|
@include glibc-headers/ifaddrs.texi
|
||||||
@include glibc-headers/libintl.texi
|
@include glibc-headers/libintl.texi
|
||||||
@include glibc-headers/link.texi
|
@include glibc-headers/link.texi
|
||||||
|
@include glibc-headers/malloc.texi
|
||||||
@include glibc-headers/mcheck.texi
|
@include glibc-headers/mcheck.texi
|
||||||
@include glibc-headers/mntent.texi
|
@include glibc-headers/mntent.texi
|
||||||
@include glibc-headers/obstack.texi
|
@include glibc-headers/obstack.texi
|
||||||
|
69
lib/malloc.in.h
Normal file
69
lib/malloc.in.h
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/* Substitute for and wrapper around <malloc.h>.
|
||||||
|
Copyright (C) 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 2, 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/>. */
|
||||||
|
|
||||||
|
#ifndef _@GUARD_PREFIX@_MALLOC_H
|
||||||
|
|
||||||
|
#if __GNUC__ >= 3
|
||||||
|
@PRAGMA_SYSTEM_HEADER@
|
||||||
|
#endif
|
||||||
|
@PRAGMA_COLUMNS@
|
||||||
|
|
||||||
|
/* The include_next requires a split double-inclusion guard. */
|
||||||
|
#if @HAVE_MALLOC_H@
|
||||||
|
# @INCLUDE_NEXT@ @NEXT_MALLOC_H@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _@GUARD_PREFIX@_MALLOC_H
|
||||||
|
#define _@GUARD_PREFIX@_MALLOC_H
|
||||||
|
|
||||||
|
/* Solaris declares memalign() in <stdlib.h>, not in <malloc.h>.
|
||||||
|
Also get size_t. */
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||||||
|
|
||||||
|
/* The definition of _GL_WARN_ON_USE is copied here. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Declare overridden functions. */
|
||||||
|
|
||||||
|
#if @GNULIB_MEMALIGN@
|
||||||
|
# if @REPLACE_MEMALIGN@
|
||||||
|
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||||
|
# undef memalign
|
||||||
|
# define memalign rpl_memalign
|
||||||
|
# endif
|
||||||
|
_GL_FUNCDECL_RPL (memalign, void *, (size_t alignment, size_t size));
|
||||||
|
_GL_CXXALIAS_RPL (memalign, void *, (size_t alignment, size_t size));
|
||||||
|
# else
|
||||||
|
# if @HAVE_MEMALIGN@
|
||||||
|
_GL_CXXALIAS_SYS (memalign, void *, (size_t alignment, size_t size));
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if @HAVE_MEMALIGN@
|
||||||
|
_GL_CXXALIASWARN (memalign);
|
||||||
|
# endif
|
||||||
|
#elif defined GNULIB_POSIXCHECK
|
||||||
|
# undef memalign
|
||||||
|
# if HAVE_RAW_DECL_MEMALIGN
|
||||||
|
_GL_WARN_ON_USE (memalign, "memalign is not portable - "
|
||||||
|
"use gnulib module memalign for portability");
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _@GUARD_PREFIX@_MALLOC_H */
|
||||||
|
#endif /* _@GUARD_PREFIX@_MALLOC_H */
|
47
m4/malloc_h.m4
Normal file
47
m4/malloc_h.m4
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# malloc_h.m4 serial 1
|
||||||
|
dnl Copyright (C) 2020 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.
|
||||||
|
|
||||||
|
dnl Written by Bruno Haible.
|
||||||
|
|
||||||
|
AC_DEFUN([gl_MALLOC_H],
|
||||||
|
[
|
||||||
|
dnl Use AC_REQUIRE here, so that the default behavior below is expanded
|
||||||
|
dnl once only, before all statements that occur in other macros.
|
||||||
|
AC_REQUIRE([gl_MALLOC_H_DEFAULTS])
|
||||||
|
|
||||||
|
gl_CHECK_NEXT_HEADERS([malloc.h])
|
||||||
|
if test $ac_cv_header_malloc_h = yes; then
|
||||||
|
HAVE_MALLOC_H=1
|
||||||
|
else
|
||||||
|
HAVE_MALLOC_H=0
|
||||||
|
fi
|
||||||
|
AC_SUBST([HAVE_MALLOC_H])
|
||||||
|
|
||||||
|
dnl Check for declarations of anything we want to poison if the
|
||||||
|
dnl corresponding gnulib module is not in use.
|
||||||
|
gl_WARN_ON_USE_PREPARE([[
|
||||||
|
#if HAVE_MALLOC_H
|
||||||
|
# include <malloc.h>
|
||||||
|
#endif
|
||||||
|
]], [memalign])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([gl_MALLOC_MODULE_INDICATOR],
|
||||||
|
[
|
||||||
|
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||||
|
AC_REQUIRE([gl_MALLOC_H_DEFAULTS])
|
||||||
|
gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
||||||
|
dnl Define it also as a C macro, for the benefit of the unit tests.
|
||||||
|
gl_MODULE_INDICATOR_FOR_TESTS([$1])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([gl_MALLOC_H_DEFAULTS],
|
||||||
|
[
|
||||||
|
GNULIB_MEMALIGN=0; AC_SUBST([GNULIB_MEMALIGN])
|
||||||
|
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||||
|
HAVE_MEMALIGN=1; AC_SUBST([HAVE_MEMALIGN])
|
||||||
|
REPLACE_MEMALIGN=0; AC_SUBST([REPLACE_MEMALIGN])
|
||||||
|
])
|
46
modules/malloc-h
Normal file
46
modules/malloc-h
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
Description:
|
||||||
|
A <malloc.h> that works around platform issues.
|
||||||
|
|
||||||
|
Files:
|
||||||
|
lib/malloc.in.h
|
||||||
|
m4/malloc_h.m4
|
||||||
|
|
||||||
|
Depends-on:
|
||||||
|
include_next
|
||||||
|
snippet/c++defs
|
||||||
|
snippet/warn-on-use
|
||||||
|
|
||||||
|
configure.ac:
|
||||||
|
gl_MALLOC_H
|
||||||
|
|
||||||
|
Makefile.am:
|
||||||
|
BUILT_SOURCES += malloc.h
|
||||||
|
|
||||||
|
# We need the following in order to create <malloc.h> when we add workarounds.
|
||||||
|
malloc.h: malloc.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
|
||||||
|
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||||
|
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||||
|
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
|
||||||
|
-e 's|@''HAVE_MALLOC_H''@|$(HAVE_MALLOC_H)|g' \
|
||||||
|
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||||
|
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||||
|
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||||
|
-e 's|@''NEXT_MALLOC_H''@|$(NEXT_MALLOC_H)|g' \
|
||||||
|
-e 's/@''GNULIB_MEMALIGN''@/$(GNULIB_MEMALIGN)/g' \
|
||||||
|
-e 's|@''HAVE_MEMALIGN''@|$(HAVE_MEMALIGN)|g' \
|
||||||
|
-e 's|@''REPLACE_MEMALIGN''@|$(REPLACE_MEMALIGN)|g' \
|
||||||
|
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
|
||||||
|
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
|
||||||
|
< $(srcdir)/malloc.in.h; \
|
||||||
|
} > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
MOSTLYCLEANFILES += malloc.h malloc.h-t
|
||||||
|
|
||||||
|
Include:
|
||||||
|
<malloc.h>
|
||||||
|
|
||||||
|
License:
|
||||||
|
LGPLv2+
|
||||||
|
|
||||||
|
Maintainer:
|
||||||
|
all
|
Reference in New Issue
Block a user