[PATCH] Make --start-lib/--end-lib block on previous add symbols tasks

Neil Vachharajani nvachhar@google.com
Thu Aug 19 22:10:00 GMT 2010


This patch fixes a problem where when using --start-lib/--end-lib the
linker would report that certain symbols could not be found.  The
problem was that the add symbols task for a group of object files
surrounded by --start-lib/--end-lib was not appropriately waiting for
previous add symbols tasks.  This patch uses an Unblock_token to
properly serialize the execution.

OK to apply?  Tested on x86_64 Linux.

ChangeLog:

        gold/
        * readsyms.cc (Read_symbols::do_lib_group): Block
add_lib_group_symbols on this->this_blocker.

-- 
Neil Vachharajani
Google
650-214-1804
-------------- next part --------------
Index: gold/readsyms.cc
===================================================================
RCS file: /cvs/src/src/gold/readsyms.cc,v
retrieving revision 1.44
diff -u -r1.44 readsyms.cc
--- gold/readsyms.cc	12 Aug 2010 22:01:11 -0000	1.44
+++ gold/readsyms.cc	19 Aug 2010 21:36:36 -0000
@@ -248,6 +248,9 @@
 					     m, NULL, next_blocker));
     }
 
+  next_blocker->add_blocker();
+  workqueue->queue_soon(new Unblock_token(this->this_blocker_, next_blocker));
+
   add_lib_group_symbols->set_blocker(next_blocker);
   workqueue->queue_soon(add_lib_group_symbols);
 


More information about the Binutils mailing list