> I'm talking about the %hi() and %lo() relocation _operators_, > not the ELF relocations themselves. The ELF spec has nothing > to say about the syntax of assembler relocation operators. OK, right :) > What do you mean? I'm talking about reordering the relocations in > the .rel.foo section, not reordering the code. I.e. if you have: > > .text > ... > addiu $4,$4,%lo(foo) > ... > lui $4,%hi(foo) > > the assembler is expected to output the R_MIPS_HI16 .rel.text entry > for the lui before the R_MIPS_LO16 entry for the addiu. If you have something like that: .text ... loop_label: lui $4, %hi(foo) addiu $4, $4, %lo(foo) ... jmp loop_label ... the compiler might be smart and change it into: .text ... lui $4, %hi(foo) loop_label: addiu $4, $4, %lo(foo) ... lui $4, %hi(foo) jmp loop_label ... for instance, to put the lui into branch delay slot (quite a smart decision, this one). However now %hi and %lo are unpaired. What should the tool do? Cheers, Stanislaw