One more time...
[deliverable/binutils-gdb.git] / gdb / mmap-alloc.c
CommitLineData
1ab3bf1b
JG
1/* GDB support for special malloc using mmap.
2 Copyright 1992 Free Software Foundation, Inc.
3 Contributed by Cygnus Support, using pieces from other GDB modules.
4
5This file is part of GDB.
6
7This program is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program; if not, write to the Free Software
19Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
20
1ab3bf1b
JG
21#include "defs.h"
22
23#if defined (HAVE_MMAP)
24
25/* Redefine the external visible symbols in gmalloc.c to be mmap versions */
26
27#define free _mmap_free
28#define malloc _mmap_malloc
29#define realloc _mmap_realloc
30#define valloc _mmap_valloc
31
32#define _bytes_free _mmap__bytes_free
33#define _bytes_used _mmap__bytes_used
34#define _chunks_free _mmap__chunks_free
35#define _chunks_used _mmap__chunks_used
36#define _fraghead _mmap__fraghead
37#define _heapbase _mmap__heapbase
38#define _heapindex _mmap__heapindex
39#define _heapinfo _mmap__heapinfo
40#define _heaplimit _mmap__heaplimit
41
42#define __default_morecore _mmap___default_morecore
43#define __free _mmap___free
44#define __free_hook _mmap___free_hook
45#define __malloc_hook _mmap___malloc_hook
46#define __malloc_initialized _mmap___malloc_initialized
47#define __morecore _mmap___morecore
48#define __realloc_hook _mmap___realloc_hook
49
50/* Arrange that instead of calling sbrk() we call mmap_sbrk() */
51
52#define sbrk mmap_sbrk
53
54/* Now simply include the standard GNU malloc source, and all the
55 externally visible symbols will become _mmap_* versions, and
56 _mmap_sbrk will be called to get more core instead of sbrk. */
57
58#include "gmalloc.c"
59
60/* Like mmap_malloc but get error if no storage available. */
61
62PTR
63mmap_xmalloc (size)
64 long size;
65{
66 register char *val = NULL;
67
68 /* Protect against gdb wanting to allocate zero bytes. */
69
70 if (size > 0)
71 {
72 if ((val = (char *) _mmap_malloc (size)) == NULL)
73 {
74 fatal ("virtual memory exhausted.", 0);
75 }
76 }
77 return (val);
78}
79
80/* Like mmap_realloc but get error if no storage available. */
81
82PTR
83mmap_xrealloc (ptr, size)
84 PTR ptr;
85 long size;
86{
87 register char *val;
88
89 if ((val = (char *) _mmap_realloc (ptr, size)) == NULL)
90 {
91 fatal ("virtual memory exhausted.", 0);
92 }
93 return (val);
94}
95
96PTR
97mmap_malloc (size)
98 long size;
99{
100 return (_mmap_malloc (size));
101}
102
103PTR
104mmap_realloc (ptr, size)
105 PTR ptr;
106 long size;
107{
108 return (_mmap_realloc (ptr, size));
109}
110
111void
112mmap_free (ptr)
113 PTR ptr;
114{
115 _mmap_free (ptr);
116}
117
118#else /* !defined (HAVE_MMAP) */
119
120static char *errmsg = "This version of gdb does not support dumpable state.";
121
122PTR
123mmap_malloc (size)
124 long size;
125{
126 error (errmsg);
127}
128
129PTR
130mmap_xmalloc (size)
131 long size;
132{
133 error (errmsg);
134}
135
136PTR
137mmap_realloc (ptr, size)
138 PTR ptr;
139 long size;
140{
141 error (errmsg);
142}
143
144PTR
145mmap_xrealloc (ptr, size)
146 PTR ptr;
147 long size;
148{
149 error (errmsg);
150}
151
152void
153mmap_free (ptr)
154 PTR ptr;
155{
156 error (errmsg);
157}
158
159#endif /* HAVE_MMAP */
This page took 0.031794 seconds and 4 git commands to generate.