so if you recall, the general problem was you have gcc running on a set of dot o files, f1 dot o all the way through fn dot o. and what we're trying to do is describe an algorithm where it when you obtain the i'th object file and you have a set of currently defined symbols, and a set of currently undefined symbols, how you can maintain three sets: the set of object files that go into the executable, the set of defined symbols that have been seen so far, and the set of undefined symbols that have been seen so far.