1 ?RCS: $Id: mallocsrc.U,v 3.0.1.2 1997/02/28 16:10:26 ram Exp $
3 ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
5 ?RCS: You may redistribute only under the terms of the Artistic Licence,
6 ?RCS: as specified in the README file that comes with the distribution.
7 ?RCS: You may reuse parts of this distribution only within the terms of
8 ?RCS: that same Artistic Licence; a copy of which may be found at the root
9 ?RCS: of the source tree for dist 3.0.
11 ?RCS: $Log: mallocsrc.U,v $
12 ?RCS: Revision 3.0.1.2 1997/02/28 16:10:26 ram
13 ?RCS: patch61: added support for Free_t, the type of free()
14 ?RCS: patch61: replaced .o with $_o all over the place
16 ?RCS: Revision 3.0.1.1 1994/05/06 15:10:46 ram
17 ?RCS: patch23: added support for MYMALLOC, mainly for perl5 (ADO)
19 ?RCS: Revision 3.0 1993/08/18 12:09:12 ram
20 ?RCS: Baseline for dist 3.0 netwide release.
22 ?MAKE:mallocsrc mallocobj usemallocwrap usemymalloc malloctype d_mymalloc \
24 Oldconfig package Guess Setvar rm cat +cc +ccflags Findhdr \
25 i_malloc i_stdlib sed libs _o ptrsize
26 ?MAKE: -pick add $@ %<
27 ?X: Put near top so that other tests don't erroneously include
28 ?X: -lmalloc. --AD 22 June 1998
31 ?S: This variable contains y if the malloc that comes with this package
32 ?S: is desired over the system's version of malloc. People often include
33 ?S: special versions of malloc for effiency, but such versions are often
34 ?S: less portable. See also mallocsrc and mallocobj.
35 ?S: If this is 'y', then -lmalloc is removed from $libs.
38 ?S: This variable contains y if we are wrapping malloc to prevent
39 ?S: integer overflow during size calculations.
42 ?S: This variable contains the name of the malloc.c that comes with
43 ?S: the package, if that malloc.c is preferred over the system malloc.
44 ?S: Otherwise the value is null. This variable is intended for generating
48 ?S: This variable conditionally defines MYMALLOC in case other parts
49 ?S: of the source want to take special action if MYMALLOC is used.
50 ?S: This may include different sorts of profiling or error detection.
53 ?S: This variable contains the name of the malloc.o that this package
54 ?S: generates, if that malloc.o is preferred over the system malloc.
55 ?S: Otherwise the value is null. This variable is intended for generating
56 ?S: Makefiles. See mallocsrc.
59 ?S: This variable contains the return type of free(). It is usually
60 ?S: void, but occasionally int.
63 ?S: This variable contains the kind of ptr returned by malloc and realloc.
66 ?C: This variable contains the return type of free(). It is usually
67 ?C: void, but occasionally int.
69 ?C:Malloc_t (MALLOCPTRTYPE):
70 ?C: This symbol is the type of pointer returned by malloc and realloc.
72 ?H:#define Malloc_t $malloctype /**/
73 ?H:#define Free_t $freetype /**/
76 ?C: This symbol, if defined, indicates that we'd like malloc wrap checks.
78 ?H:#$usemallocwrap PERL_MALLOC_WRAP /**/
81 ?C: This symbol, if defined, indicates that we're using our own malloc.
83 ?H:#$d_mymalloc MYMALLOC /**/
88 ?X: Cannot test for mallocsrc; it is the unit's name and there is a bug in
89 ?X: the interpreter which defines all the names, even though they are not used.
91 : determine whether to use malloc wrapping
93 case "$usemallocwrap" in
94 [yY]*|true|$define) dflt='y' ;;
95 [nN]*|false|$undef) dflt='n' ;;
96 *) case "$usedevel" in
97 [yY]*|true|$define) dflt='y' ;;
102 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
107 usemallocwrap="$define" ;;
109 usemallocwrap="$undef" ;;
112 : determine which malloc to compile in
114 case "$usemymalloc" in
115 [yY]*|true|$define) dflt='y' ;;
116 [nN]*|false|$undef) dflt='n' ;;
117 *) case "$ptrsize" in
123 rp="Do you wish to attempt to use the malloc that comes with $package?"
130 mallocobj="malloc$_o"
132 ?X: Maybe libs.U should be dependent on mallocsrc.U, but then
133 ?X: most packages that use dist probably don't supply their own
134 ?X: malloc, so this is probably an o.k. comprpomise
137 : Remove malloc from list of libraries to use
138 echo "Removing unneeded -lmalloc from library list" >&4
139 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
142 echo "libs = $libs" >&4
155 @if MALLOCPTRTYPE || Malloc_t || Free_t
156 : compute the return types of malloc and free
162 #include <sys/types.h>
176 @if MALLOCPTRTYPE || Malloc_t
177 case "$malloctype" in
179 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
186 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
192 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
199 echo "Your system uses $freetype free(), it would seem." >&4