For those interested, I've been gradually working my way through the binutils master GIT repository trying to discover what works, what doesn't, and what might be fixable.
* binutils2.17a does indeed work as widely reported, both gas and gld
* Recent binutils2.32 of course doesn't work - but surprisingly with a few little tweaks - gas (Gnu assembler) passes most tests
* binutils2.18a, 2.19a, 2.20.1a works for me too (although some require little patches)
* binutils2.21.1 - first version from the FTP I find where I can't build gcc using the gas/gld combination
That lead me to using bisection on the raw repository
i.e. Start with a known good version that works and a version that doesn't and using binary search gradually home in on the commit that stopped things working.
I'd got a gcc set up to such that it would try to build using the snapshot I was doing the testing on and then it would try to see if the resulting executable works.
It took thirteen rounds of checkout, manually patch, manually build binutils, try and build gcc ....
Here's my initial findings:
* There was a commit 19 Sep 2010 that did some re-work of the BFD mips handling -
First breaking commit
* The previous commit where I still see success in building gcc using gas/gld -
is here
* The first bad change looks like modifications in the way that the global offset table is filled, lots of mentions of VxWorks, but presumably no-one tested or gave feedback to the maintainers about this breaking things on SGIs
The tests I've run against various versions of binutils and some patches can be
found here.
I'm far from any kind of expert on ELF binaries and certainly not when it comes to Irix, but I'll continue digging to see what pops up. It would be nice to know if there are some simple changes that could fix this issue for that version -> maybe those changes can be rolled into the much more recent versions too.
Kr,
Mr TS.