From 8f86bd8078a8ff374639e751156142353ea86a3a Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Sun, 7 Oct 2018 22:36:26 -0700 Subject: Restore binutils (gold) build on mingw32 host Fixes #1049. Signed-off-by: Alexey Neyman diff --git a/packages/binutils/2.31.1/0011-Restore-build-on-x86_64-w64-mingw32.patch b/packages/binutils/2.31.1/0011-Restore-build-on-x86_64-w64-mingw32.patch new file mode 100644 index 0000000..d94293d --- /dev/null +++ b/packages/binutils/2.31.1/0011-Restore-build-on-x86_64-w64-mingw32.patch @@ -0,0 +1,122 @@ +From be07c0ea2b943fe0bc8009432eadf157bbc2b718 Mon Sep 17 00:00:00 2001 +From: Alexey Neyman +Date: Sun, 7 Oct 2018 11:57:49 -0700 +Subject: [PATCH] Restore build on x86_64-w64-mingw32 + + * gold/configure.ac: Add checks for link, mkdtemp. + * gold/configure: Regenerated. + * gold/config.in: Regenerated. + * gold/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. + +Signed-off-by: Alexey Neyman +--- + gold/config.in | 6 ++++++ + gold/configure | 9 ++++++++- + gold/configure.ac | 5 ++++- + gold/plugin.cc | 14 ++++++++++++++ + 4 files changed, 32 insertions(+), 2 deletions(-) + +--- a/gold/config.in ++++ b/gold/config.in +@@ -103,6 +103,9 @@ + /* Define if your 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 header file. */ + #undef HAVE_LOCALE_H + +@@ -112,6 +115,9 @@ + /* Define to 1 if you have the 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 + +--- a/gold/configure ++++ b/gold/configure +@@ -7977,7 +7977,7 @@ + + 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" +@@ -9878,6 +9878,13 @@ + fi + done + ++ac_fn_cxx_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp" ++if test "x$ac_cv_func_mkdtemp" = xyes; then : ++ ++$as_echo "#define HAVE_MKDTEMP 1" >>confdefs.h ++ ++fi ++ + ac_fn_cxx_check_decl "$LINENO" "basename" "ac_cv_have_decl_basename" "$ac_includes_default" + if test "x$ac_cv_have_decl_basename" = xyes; then : + ac_have_decl=1 +--- a/gold/configure.ac ++++ b/gold/configure.ac +@@ -529,7 +529,7 @@ + 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], +@@ -614,6 +614,9 @@ + AC_SUBST(DLOPEN_LIBS) + + AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times) ++AC_CHECK_FUNC([mkdtemp], ++ AC_DEFINE([HAVE_MKDTEMP], 1, ++ [Define to 1 if you have the `mkdtemp' function.])) + AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem]) + + # Use of ::std::tr1::unordered_map::rehash causes undefined symbols +--- a/gold/plugin.cc ++++ b/gold/plugin.cc +@@ -508,8 +508,20 @@ + // 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 @@ + { + static char buf[4096]; + ++#ifdef HAVE_LINK + if (::link(inname, outname) == 0) + return true; ++#endif + + int in = ::open(inname, O_RDONLY); + if (in < 0) -- cgit v0.10.2-6-g49f6