diff options
author | Alexey Neyman <stilor@att.net> | 2018-12-03 23:50:48 -0800 |
---|---|---|
committer | Cary Coutant <ccoutant@gmail.com> | 2018-12-03 23:50:48 -0800 |
commit | f4238194a211a6a27598a7fdf9ad63f9b5d6fbaa (patch) | |
tree | cdf77d24f3ea44f4d671edc048f1a36205ef8c29 /gold | |
parent | PR23939, Check frch_cfi_data before use (diff) | |
download | binutils-gdb-f4238194a211a6a27598a7fdf9ad63f9b5d6fbaa.tar.gz binutils-gdb-f4238194a211a6a27598a7fdf9ad63f9b5d6fbaa.tar.bz2 binutils-gdb-f4238194a211a6a27598a7fdf9ad63f9b5d6fbaa.zip |
Restore build on x86_64-w64-mingw32.
gold/
PR gold/23594
* configure.ac: Add checks for link, mkdtemp.
* configure: Regenerate.
* config.in: Regenerate.
* plugin.cc (Plugin_recorder::init): Fall back to mktemp
if mkdtemp is not available.
(link_or_copy_file): Fall back to copy if link() is not available.
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 10 | ||||
-rw-r--r-- | gold/config.in | 6 | ||||
-rwxr-xr-x | gold/configure | 4 | ||||
-rw-r--r-- | gold/configure.ac | 4 | ||||
-rw-r--r-- | gold/plugin.cc | 14 |
5 files changed, 34 insertions, 4 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index f42e4863fd5..f0d3ef92435 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,13 @@ +2018-12-03 Alexey Neyman <stilor@att.net> + + PR gold/23594 + * configure.ac: Add checks for link, mkdtemp. + * configure: Regenerate. + * config.in: Regenerate. + * plugin.cc (Plugin_recorder::init): Fall back to mktemp + if mkdtemp is not available. + (link_or_copy_file): Fall back to copy if link() is not available. + 2018-12-02 H.J. Lu <hongjiu.lu@intel.com> PR binutils/23919 diff --git a/gold/config.in b/gold/config.in index 2b53d711855..7bac34aab25 100644 --- a/gold/config.in +++ b/gold/config.in @@ -103,6 +103,9 @@ /* Define if your <locale.h> file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES +/* Define to 1 if you have the `link' function. */ +#undef HAVE_LINK + /* Define to 1 if you have the <locale.h> header file. */ #undef HAVE_LOCALE_H @@ -112,6 +115,9 @@ /* Define to 1 if you have the <memory.h> header file. */ #undef HAVE_MEMORY_H +/* Define to 1 if you have the `mkdtemp' function. */ +#undef HAVE_MKDTEMP + /* Define to 1 if you have the `mmap' function. */ #undef HAVE_MMAP diff --git a/gold/configure b/gold/configure index a57025bd0b6..216af10f3e0 100755 --- a/gold/configure +++ b/gold/configure @@ -7977,7 +7977,7 @@ fi done -for ac_func in chsize mmap +for ac_func in chsize mmap link do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -9866,7 +9866,7 @@ case "$ac_cv_search_dlopen" in esac -for ac_func in mallinfo posix_fallocate fallocate readv sysconf times +for ac_func in mallinfo posix_fallocate fallocate readv sysconf times mkdtemp 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" diff --git a/gold/configure.ac b/gold/configure.ac index d9a1869070e..6ab43b93596 100644 --- a/gold/configure.ac +++ b/gold/configure.ac @@ -529,7 +529,7 @@ LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" AC_SUBST(LFS_CFLAGS) AC_CHECK_HEADERS(sys/mman.h) -AC_CHECK_FUNCS(chsize mmap) +AC_CHECK_FUNCS(chsize mmap link) AC_REPLACE_FUNCS(pread ftruncate ffsll) AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove], @@ -613,7 +613,7 @@ case "$ac_cv_search_dlopen" in esac AC_SUBST(DLOPEN_LIBS) -AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times) +AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times mkdtemp) AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem]) # Use of ::std::tr1::unordered_map::rehash causes undefined symbols diff --git a/gold/plugin.cc b/gold/plugin.cc index 3415b914ad6..70b83b47134 100644 --- a/gold/plugin.cc +++ b/gold/plugin.cc @@ -508,8 +508,20 @@ Plugin_recorder::init() // Create a temporary directory where we can stash the log and // copies of replacement files. char dir_template[] = "gold-recording-XXXXXX"; +#ifdef HAVE_MKDTEMP if (mkdtemp(dir_template) == NULL) return false; +#else + if (mktemp(dir_template) == NULL) + return false; +#if defined (_WIN32) && !defined (__CYGWIN32__) + if (mkdir(dir_template) != 0) + return false; +#else + if (mkdir(dir_template, 0700) != 0) + return false; +#endif +#endif size_t len = strlen(dir_template) + 1; char* tempdir = new char[len]; @@ -562,8 +574,10 @@ link_or_copy_file(const char* inname, const char* outname) { static char buf[4096]; +#ifdef HAVE_LINK if (::link(inname, outname) == 0) return true; +#endif int in = ::open(inname, O_RDONLY); if (in < 0) |