Markos Chandras <markos.chandras@xxxxxxxxxx> writes: > Hi, > > On Tue, Feb 24, 2015 at 01:17:33PM +0000, Måns Rullgård wrote: >> This patch (well, the variant that made it into 4.0-rc1) breaks >> MIPS_ABI_FP_DOUBLE (the gcc default) apps on MIPS32. >> > > Thanks for the report. > >> > +void mips_set_personality_fp(struct arch_elf_state *state) >> > +{ >> > + /* >> > + * This function is only ever called for O32 ELFs so we should >> > + * not be worried about N32/N64 binaries. >> > + */ >> > >> > - case MIPS_ABI_FP_XX: >> > - case MIPS_ABI_FP_ANY: >> > - if (!config_enabled(CONFIG_MIPS_O32_FP64_SUPPORT)) >> > - set_thread_flag(TIF_32BIT_FPREGS); >> > - else >> > - clear_thread_flag(TIF_32BIT_FPREGS); >> > + if (!config_enabled(CONFIG_MIPS_O32_FP64_SUPPORT)) >> > + return; >> >> The problem is here. In a 32-bit configuration, MIPS_O32_FP64_SUPPORT >> is always disabled, so the FP mode doesn't get set. Simply deleting >> those two lines makes things work again, but that's probably not the >> right fix. >> > I had the impression that the loader would have set the FP mode earlier on. > But that only may happen with the latest version of the tools. > > Perhaps instead of dropping these two lines we need a similar check on the > arch_elf_pt_proc so we don't mess with the default FPI abi? > > Having said that, dropping these two lines should be fine, it just means you > do a little bit of extra work when loading your ELF files to check for ABI > compatibility which shouldn't matter in your case. There's another early return like this in arch_check_elf() which should probably go as well, or everything will end up with the default mode. -- Måns Rullgård mans@xxxxxxxxx