diff options
author | John Gilmore <gnu@cygnus> | 1992-02-22 01:46:16 +0000 |
---|---|---|
committer | John Gilmore <gnu@cygnus> | 1992-02-22 01:46:16 +0000 |
commit | 1ab3bf1b148d31aad66735f52f9ff72af8769cd0 (patch) | |
tree | f599e61700fc54d6ecd3d090e3d01cf6fa66a801 /gdb/mmap-alloc.c | |
parent | 8e48d87af60233cc7e8dc18ab4e8f63d223ac20f (diff) | |
download | gdb-1ab3bf1b148d31aad66735f52f9ff72af8769cd0.zip gdb-1ab3bf1b148d31aad66735f52f9ff72af8769cd0.tar.gz gdb-1ab3bf1b148d31aad66735f52f9ff72af8769cd0.tar.bz2 |
* Check in Fred Fish's changes in these modules. Fred
will make ChangeLog entries for all of them.
Diffstat (limited to 'gdb/mmap-alloc.c')
-rwxr-xr-x | gdb/mmap-alloc.c | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/gdb/mmap-alloc.c b/gdb/mmap-alloc.c new file mode 100755 index 0000000..5f8f0dc --- /dev/null +++ b/gdb/mmap-alloc.c @@ -0,0 +1,160 @@ +/* GDB support for special malloc using mmap. + Copyright 1992 Free Software Foundation, Inc. + Contributed by Cygnus Support, using pieces from other GDB modules. + +This file is part of GDB. + +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 of the License, 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, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include <stdio.h> +#include "defs.h" + +#if defined (HAVE_MMAP) + +/* Redefine the external visible symbols in gmalloc.c to be mmap versions */ + +#define free _mmap_free +#define malloc _mmap_malloc +#define realloc _mmap_realloc +#define valloc _mmap_valloc + +#define _bytes_free _mmap__bytes_free +#define _bytes_used _mmap__bytes_used +#define _chunks_free _mmap__chunks_free +#define _chunks_used _mmap__chunks_used +#define _fraghead _mmap__fraghead +#define _heapbase _mmap__heapbase +#define _heapindex _mmap__heapindex +#define _heapinfo _mmap__heapinfo +#define _heaplimit _mmap__heaplimit + +#define __default_morecore _mmap___default_morecore +#define __free _mmap___free +#define __free_hook _mmap___free_hook +#define __malloc_hook _mmap___malloc_hook +#define __malloc_initialized _mmap___malloc_initialized +#define __morecore _mmap___morecore +#define __realloc_hook _mmap___realloc_hook + +/* Arrange that instead of calling sbrk() we call mmap_sbrk() */ + +#define sbrk mmap_sbrk + +/* Now simply include the standard GNU malloc source, and all the + externally visible symbols will become _mmap_* versions, and + _mmap_sbrk will be called to get more core instead of sbrk. */ + +#include "gmalloc.c" + +/* Like mmap_malloc but get error if no storage available. */ + +PTR +mmap_xmalloc (size) + long size; +{ + register char *val = NULL; + + /* Protect against gdb wanting to allocate zero bytes. */ + + if (size > 0) + { + if ((val = (char *) _mmap_malloc (size)) == NULL) + { + fatal ("virtual memory exhausted.", 0); + } + } + return (val); +} + +/* Like mmap_realloc but get error if no storage available. */ + +PTR +mmap_xrealloc (ptr, size) + PTR ptr; + long size; +{ + register char *val; + + if ((val = (char *) _mmap_realloc (ptr, size)) == NULL) + { + fatal ("virtual memory exhausted.", 0); + } + return (val); +} + +PTR +mmap_malloc (size) + long size; +{ + return (_mmap_malloc (size)); +} + +PTR +mmap_realloc (ptr, size) + PTR ptr; + long size; +{ + return (_mmap_realloc (ptr, size)); +} + +void +mmap_free (ptr) + PTR ptr; +{ + _mmap_free (ptr); +} + +#else /* !defined (HAVE_MMAP) */ + +static char *errmsg = "This version of gdb does not support dumpable state."; + +PTR +mmap_malloc (size) + long size; +{ + error (errmsg); +} + +PTR +mmap_xmalloc (size) + long size; +{ + error (errmsg); +} + +PTR +mmap_realloc (ptr, size) + PTR ptr; + long size; +{ + error (errmsg); +} + +PTR +mmap_xrealloc (ptr, size) + PTR ptr; + long size; +{ + error (errmsg); +} + +void +mmap_free (ptr) + PTR ptr; +{ + error (errmsg); +} + +#endif /* HAVE_MMAP */ |