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/configure.ac | |
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/configure.ac')
-rw-r--r-- | gold/configure.ac | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/gold/configure.ac b/gold/configure.ac index 60243d0..7757d8c 100644 --- a/gold/configure.ac +++ b/gold/configure.ac @@ -393,8 +393,22 @@ dnl host dependent. If build == host, we can check getconf LFS_CFLAGS. LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" AC_SUBST(LFS_CFLAGS) -AC_CHECK_FUNCS(chsize) -AC_REPLACE_FUNCS(pread ftruncate mremap ffsll) +AC_CHECK_HEADERS(sys/mman.h) +AC_CHECK_FUNCS(chsize mmap) +AC_REPLACE_FUNCS(pread ftruncate ffsll) + +AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove], +[AC_LINK_IFELSE([ +AC_LANG_PROGRAM([[ +#include <sys/mman.h> +void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); } +]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])]) +if test "$gold_cv_lib_mremap_maymove" = "yes"; then + AC_DEFINE(HAVE_MREMAP, 1, + [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support]) +else + AC_LIBOBJ(mremap) +fi # Link in zlib if we can. This allows us to write compressed sections. AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)]) |