Subject: gas 2.9.1 bugs break mips3 kernels?
To: None <port-mips@netbsd.org, tech-toolchain@netbsd.org>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: tech-toolchain
Date: 02/14/1999 14:50:07
I'm having trouble getting a -current kernel working on a mips3 pmax
with the new binutils. The most recent kernel I have that works
reliably was built from sys/arch/mips/mips/locore_mips3.S rev 1.4,
with our intree binutils 2.8.

When sys/arch/mips/mips/locore_mips3.S is assembled with gas from
binutils 2.9.1, it has some bizarre differences.  the 2.8 assembler
seems to be emitting daddui for the add part of `move' and `la'
pseudo-ops, whereas the new 2.9 gas uses `adddui'.

This seems likely to lose on the xtlb code, but it shouldn't make a
difference for 32-bit code (right? Or is sign overflow a problem?)

Just FYI, there are several other differences in the output from
objdump --dissassemble on mips between 2.8 and 2.9.1: 2.9.1 doesnt
seem to recognise several mips3 instructions, but outputs them in hex
or garbled (eg., "c0 xxx" instead of "eret").

Has anyone else seen anything similar? I'm not sure whether I should
look for bugs in gas, or bugs in locore, or both....