if I can't make this work easily, it might actually just be better to have my entire kernel be a single compilation unit, compile it all as a flat binary, and presumably everything will appear in the order I specify it.
I wonder, actually, if I could have separate compilation units, but name the unit containing the init code alphabetically before the others. that would be such a nasty hack, haha.