We now continually call createThunks() until no more thunks are added. This requires us to record the thunks we add on each pass and only merge these into the OutputSection. We also need to check if a Relocation is targeting a thunk to prevent us from infinitely creating more thunks.
With the existing thunks we allocate all the thunks on the first pass, the second pass will not result in any more thunks. When range extension thunks are introduced we will need more passes.