summaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2011-10-17 23:43:18 +0000
committerCary Coutant <ccoutant@google.com>2011-10-17 23:43:18 +0000
commitb5f101e46943bf5ef86f242d40d54be7615400d0 (patch)
tree8abfeba58e15a1ff15622d774963eb04ec350ddc /gold
parentbaa46a5c19b4761acc94de5db9ca7907a030a9c9 (diff)
downloadbinutils-redhat-b5f101e46943bf5ef86f242d40d54be7615400d0.tar.gz
* readsyms.cc (Read_symbols::run): Don't queue an unblocker
task for members of lib groups.
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog5
-rw-r--r--gold/readsyms.cc6
2 files changed, 9 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index c9306187dd..391f015d4f 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,5 +1,10 @@
2011-10-17 Cary Coutant <ccoutant@google.com>
+ * readsyms.cc (Read_symbols::run): Don't queue an unblocker
+ task for members of lib groups.
+
+2011-10-17 Cary Coutant <ccoutant@google.com>
+
PR gold/13288
* fileread.cc (File_read::find_view): Add assert.
(File_read::make_view): Move bounds check (replace with assert)...
diff --git a/gold/readsyms.cc b/gold/readsyms.cc
index 1e50942a28..997472284a 100644
--- a/gold/readsyms.cc
+++ b/gold/readsyms.cc
@@ -161,8 +161,10 @@ void
Read_symbols::run(Workqueue* workqueue)
{
// If we didn't queue a new task, then we need to explicitly unblock
- // the token.
- if (!this->do_read_symbols(workqueue))
+ // the token. If the object is a member of a lib group, however,
+ // the token was already added to the list of locks for the task,
+ // and it will be unblocked automatically at the end of the task.
+ if (!this->do_read_symbols(workqueue) && this->member_ == NULL)
workqueue->queue_soon(new Unblock_token(this->this_blocker_,
this->next_blocker_));
}