* configure.ac: Check for readv function also.

* fileread.cc (readv): Define if not HAVE_READV.
	* fileread.h (File_read:: max_readv_entries): Set to 1 if readv
	does not exist.
	* config.in: Regenerate.
	* configure: Regenerate.
This commit is contained in:
Ian Lance Taylor 2009-10-09 23:20:44 +00:00
parent c0a6286595
commit d9a893b837
6 changed files with 30 additions and 2 deletions

View File

@ -1,3 +1,13 @@
2009-10-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
Ian Lance Taylor <iant@google.com>
* configure.ac: Check for readv function also.
* fileread.cc (readv): Define if not HAVE_READV.
* fileread.h (File_read:: max_readv_entries): Set to 1 if readv
does not exist.
* config.in: Regenerate.
* configure: Regenerate.
2009-10-09 Doug Kwan <dougkwan@google.com>
* layout.cc (Layout::make_output_section): Call target hook to make

View File

@ -99,6 +99,9 @@
/* Define to 1 if you have the `pread' function. */
#undef HAVE_PREAD
/* Define to 1 if you have the `readv' function. */
#undef HAVE_READV
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

2
gold/configure vendored
View File

@ -6701,7 +6701,7 @@ fi
done
for ac_func in mallinfo posix_fallocate
for ac_func in mallinfo posix_fallocate readv
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var"

View File

@ -338,7 +338,7 @@ AC_LANG_PUSH(C++)
AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
AC_CHECK_HEADERS(byteswap.h)
AC_CHECK_FUNCS(mallinfo posix_fallocate)
AC_CHECK_FUNCS(mallinfo posix_fallocate readv)
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
# Use of ::std::tr1::unordered_map::rehash causes undefined symbols

View File

@ -40,6 +40,15 @@
#include "descriptors.h"
#include "fileread.h"
#ifndef HAVE_READV
struct iovec { void* iov_base; size_t iov_len };
ssize_t
readv(int, const iovec*, int)
{
gold_unreachable();
}
#endif
namespace gold
{

View File

@ -370,7 +370,13 @@ class File_read
{ return (file_size + (page_size - 1)) & ~ (page_size - 1); }
// The maximum number of entries we will pass to ::readv.
#ifdef HAVE_READV
static const size_t max_readv_entries = 128;
#else
// On targets that don't have readv set the max to 1 so readv is not
// used.
static const size_t max_readv_entries = 1;
#endif
// Use readv to read data.
void