diff options
author | Ian Lance Taylor <ian@airs.com> | 2011-04-12 18:06:16 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2011-04-12 18:06:16 +0000 |
commit | 88597d3422353743f77a4f4de1f3e790cb9f1645 (patch) | |
tree | a6b753e0fd883354777437707f2bc12e66b31474 /gold/mremap.c | |
parent | 32a946987b2c683c06d55efc2d4d7e682f164e4e (diff) | |
download | gdb-88597d3422353743f77a4f4de1f3e790cb9f1645.zip gdb-88597d3422353743f77a4f4de1f3e790cb9f1645.tar.gz gdb-88597d3422353743f77a4f4de1f3e790cb9f1645.tar.bz2 |
* configure.ac: Check for sys/mman.h and mmap. Check for mremap
with MREMAP_MAYMOVE.
* output.h (class Output_file): Add map_is_allocated_ field.
* output.cc: Only #include <sys/mman.h> if it exists. If mmap is
not available, provide stubs. If mremap is not available, #define
it to gold_mremap.
(MREMAP_MAYMOVE): Define if not defined.
(Output_file::Output_file): Initialize map_is_allocated_.
(Output_file::resize): Check map_is_allocated_.
(Output_file::map_anonymous): If mmap fails, use malloc.
(Output_file::unmap): Don't do anything for an anonymous map.
* fileread.cc: Only #include <sys/mman.h> if it exists. If mmap
is not available, provide stubs.
(File_read::View::~View): Use free rather than delete[].
(File_read::make_view): Use malloc rather than new[]. If mmap
fails, use malloc.
(File_read::find_or_make_view): Use malloc rather than new[].
* gold.h: Remove HAVE_REMAP code.
* mremap.c: #include <errno.h>. Only #include <sys/mman.h> if it
exists. Rename mremap to gold_mremap. If mmap is not available
don't do anything.
* configure, config.in: Rebuild.
Diffstat (limited to 'gold/mremap.c')
-rw-r--r-- | gold/mremap.c | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/gold/mremap.c b/gold/mremap.c index 332fded..e165634 100644 --- a/gold/mremap.c +++ b/gold/mremap.c @@ -1,6 +1,6 @@ /* mremap.c -- version of mremap for gold. */ -/* Copyright 2009 Free Software Foundation, Inc. +/* Copyright 2009, 2011 Free Software Foundation, Inc. Written by Ian Lance Taylor <iant@google.com>. This file is part of gold. @@ -23,9 +23,17 @@ #include "config.h" #include "ansidecl.h" +#include <errno.h> #include <string.h> #include <sys/types.h> + +#ifdef HAVE_SYS_MMAN_H #include <sys/mman.h> +#endif + +extern void *gold_mremap (void *, size_t, size_t, int); + +#ifdef HAVE_MMAP /* This file implements mremap for systems which don't have it. The gold code requires support for mmap. However, there are systems @@ -40,11 +48,9 @@ # define MAP_ANONYMOUS MAP_ANON #endif -extern void *mremap (void *, size_t, size_t, int, ...); - void * -mremap (void *old_address, size_t old_size, size_t new_size, - int flags ATTRIBUTE_UNUSED, ...) +gold_mremap (void *old_address, size_t old_size, size_t new_size, + int flags ATTRIBUTE_UNUSED) { void *ret; @@ -57,3 +63,25 @@ mremap (void *old_address, size_t old_size, size_t new_size, (void) munmap (old_address, old_size); return ret; } + +#else /* !defined(HAVE_MMAP) */ + +#ifndef MAP_FAILED +#define MAP_FAILED ((void *) -1) +#endif + +#ifndef ENOSYS +#define ENOSYS EINVAL +#endif + +void * +gold_mremap (void *old_address ATTRIBUTE_UNUSED, + size_t old_size ATTRIBUTE_UNUSED, + size_t new_size ATTRIBUTE_UNUSED, + int flags ATTRIBUTE_UNUSED) +{ + errno = ENOSYS; + return MAP_FAILED; +} + +#endif /* !defined(HAVE_MMAP) */ |