* 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 c930618..391f015 100644 (file)
@@ -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)...
index 1e50942..9974722 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_));
 }