FYI: I found the difference: ld. The failing case was linked used the HEAD branch of binutils. Using my Linux distribution's ld the .init sections are constructed as required.