* readsyms.cc (Read_symbols::run): Don't queue an unblocker
authorCary Coutant <ccoutant@google.com>
Mon, 17 Oct 2011 23:43:18 +0000 (23:43 +0000)
committerCary Coutant <ccoutant@google.com>
Mon, 17 Oct 2011 23:43:18 +0000 (23:43 +0000)
task for members of lib groups.

gold/ChangeLog
gold/readsyms.cc

index c9306187ddbe31715e3b1a8592973ba99107ceff..391f015d4f71b6a41d16dc8e034422e41b97cc77 100644 (file)
@@ -1,3 +1,8 @@
+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
index 1e50942a281c7cba7cdbcbb20c9d0b38c2c4237d..997472284ae5c2730ea73d1dfb0a20707be08bf3 100644 (file)
@@ -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_));
 }