+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
/* 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
/* 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
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"
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"
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],
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
// 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];
{
static char buf[4096];
+#ifdef HAVE_LINK
if (::link(inname, outname) == 0)
return true;
+#endif
int in = ::open(inname, O_RDONLY);
if (in < 0)