there is a bug in the linker doing symbol fixup.
I have following code:
The generated opcodes are correct, but after linking (I guess it depend on the actual value of the label) I get (here it is 0xb0c):
e_lis r2, 0
The linker does simply replace the low-word of the opcode by "0xb0c", but the immediate is spread all over the opcode!