Thanks to @chneukirchen for finding the correct solution:
gcc sets -mno-shared by default when compiling non-PIC, and because
we are overriding the builtin specs, this internal rule set for gnu/mips
does not trigger:
gcc/config/mips/gnu-user.h:/* Default to -mno-shared for non-PIC. */
gcc/config/mips/gnu-user.h: " %{mshared|mno-shared|fpic|fPIC|fpie|fPIE:;:-mno-shared}"
So that we now use a specific specs file just for mips that sets -mshared for PIC.
This fixes building packages with hardening enabled for MIPS.
Note that -fPIE defines __PIC__ and __PIE__, so passing this on to
pure cpp(1)/gcc -E executions is relevant.
Found the hard way due to ccache breaking on i686 with precompiled
headers which used the non-PIC definitions in cpuid.h since header
precompilation doesn't read cc1_options.