This architecture has variable-length instruction encoding, which means that assembler relaxation (basically, choosing the right length of instruction to use from several overlapping alternatives to get the one which fits the operands best) has to work, at least in simple-ish cases. The previous binutils work implemented this I think, but my reworking had broken it. But now it’s working again! Mostly, kind of…
There’s the possibility of having linker relaxation too (mostly to choose shorter instructions when possible), but we can get away without that to start with, I think.
After thoroughly breaking linking (in the name of “cleaning things up”), it’s now starting to work again. BFD seems to have an unfortunate amount of copy/pasted code in it, and the bits which look like target-independent abstractions kind of aren’t, really, at least not all the time. (It’s a bit ironic that the code in the “easy” part of the GNU toolchain — the assembler, linker and so on — is so much worse than the “hard” part, the compiler proper. I suppose because it’s less interesting so people don’t want to work on improving it?)
Also played Fallout 4 a bit.
Slowly getting rid of them.