X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2Fplugin.cc;h=0bb277e126d3b4829110b6ce70528bdde8f1b815;hb=4bdb25fe6902963ca9cf91d6b2688cf888527bf8;hp=c921f7ca3d210bbd52d5f54eae7343e631062005;hpb=8da9a904f41bb78fca5568fb94004120682b1653;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/plugin.cc b/gold/plugin.cc index c921f7ca3d..0bb277e126 100644 --- a/gold/plugin.cc +++ b/gold/plugin.cc @@ -1,6 +1,6 @@ // plugin.cc -- plugin manager for gold -*- C++ -*- -// Copyright (C) 2008-2018 Free Software Foundation, Inc. +// Copyright (C) 2008-2019 Free Software Foundation, Inc. // Written by Cary Coutant . // This file is part of gold. @@ -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) @@ -1424,7 +1438,8 @@ Sized_pluginobj::do_add_symbols(Symbol_table* symtab, { case LDPK_DEF: case LDPK_WEAKDEF: - shndx = elfcpp::SHN_ABS; + // We use an arbitrary section number for a defined symbol. + shndx = 1; break; case LDPK_COMMON: shndx = elfcpp::SHN_COMMON;