This change allows Thunks to be added on multiple passes. To do this we must merge only the thunks added in each pass, and deal with thunks that have
drifted out of range of their callers. A thunk may end out of range of its caller if enough thunks are added in between the caller and the thunk. To handle this we create another thunk.
This is patch 9/11 of range thunks. It is dependent on all previous patches D34691 and its dependencies. It is the last implementation patch, the remaining couple are test cases.
The most important changes are:
- If a call to an existing thunk created on the last pass is now out of range, we redirect the relocation back to the original caller
- With multiple passes we may be inserting Thunks into existing ThunkSections without creating any new ThunkSections so we can't use a count of created thunk sections to determine if we need another pass.