public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/marxin/heads/lto-plugin-get_symbols_v3-v3)] lto-plugin: make claim_file_handler thread-safe
@ 2022-05-16 12:19 Martin Liska
0 siblings, 0 replies; only message in thread
From: Martin Liska @ 2022-05-16 12:19 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:71913009340f831046f5c5f9c1365f8d27e077b4
commit 71913009340f831046f5c5f9c1365f8d27e077b4
Author: Martin Liska <mliska@suse.cz>
Date: Mon May 16 14:18:41 2022 +0200
lto-plugin: make claim_file_handler thread-safe
Diff:
---
lto-plugin/lto-plugin.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/lto-plugin/lto-plugin.c b/lto-plugin/lto-plugin.c
index 49484decd89..9d9d9b068d4 100644
--- a/lto-plugin/lto-plugin.c
+++ b/lto-plugin/lto-plugin.c
@@ -55,6 +55,7 @@ along with this program; see the file COPYING3. If not see
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
+#include <pthread.h>
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
#endif
@@ -158,6 +159,9 @@ enum symbol_style
ss_uscore, /* Underscore prefix all symbols. */
};
+/* Plug-in mutex. */
+static pthread_mutex_t plugin_lock;
+
static char *arguments_file_name;
static ld_plugin_register_claim_file register_claim_file;
static ld_plugin_register_all_symbols_read register_all_symbols_read;
@@ -1267,15 +1271,18 @@ claim_file_handler (const struct ld_plugin_input_file *file, int *claimed)
lto_file.symtab.syms);
check (status == LDPS_OK, LDPL_FATAL, "could not add symbols");
+ pthread_mutex_lock (&plugin_lock);
num_claimed_files++;
claimed_files =
xrealloc (claimed_files,
num_claimed_files * sizeof (struct plugin_file_info));
claimed_files[num_claimed_files - 1] = lto_file;
+ pthread_mutex_unlock (&plugin_lock);
*claimed = 1;
}
+ pthread_mutex_lock (&plugin_lock);
if (offload_files == NULL)
{
/* Add dummy item to the start of the list. */
@@ -1338,11 +1345,12 @@ claim_file_handler (const struct ld_plugin_input_file *file, int *claimed)
offload_files_last_lto = ofld;
num_offload_files++;
}
+ pthread_mutex_unlock (&plugin_lock);
goto cleanup;
err:
- non_claimed_files++;
+ __atomic_fetch_add (&non_claimed_files, 1, __ATOMIC_RELAXED);
free (lto_file.name);
cleanup:
@@ -1443,6 +1451,12 @@ onload (struct ld_plugin_tv *tv)
struct ld_plugin_tv *p;
enum ld_plugin_status status;
+ if (pthread_mutex_init(&plugin_lock, NULL) != 0)
+ {
+ printf("mutex init failed\n");
+ abort ();
+ }
+
p = tv;
while (p->tv_tag)
{
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-16 12:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-16 12:19 [gcc(refs/users/marxin/heads/lto-plugin-get_symbols_v3-v3)] lto-plugin: make claim_file_handler thread-safe Martin Liska
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).