This is a bit more verbose, but it has a few advantages.
The logic on what to do with special sections like .init_array is not duplicated. Before we would need keep isKnownNonreorderableSection in sync.
I think with this the call graph based sorting can be implemented by "just" returning a new order from buildSectionOrder.