Merge "[MIPS] Link .dex or .oat code lacking .MIPS.abiflags segment"
This commit is contained in:
		@@ -264,10 +264,18 @@ bool soinfo::mips_check_and_adjust_fp_modes() {
 | 
			
		||||
 | 
			
		||||
  // FP ABI-variant compatibility checks for MIPS o32 ABI
 | 
			
		||||
  if (abiflags == nullptr) {
 | 
			
		||||
    // Old compiles lack the new abiflags section.
 | 
			
		||||
    // These compilers used -mfp32 -mdouble-float -modd-spreg defaults,
 | 
			
		||||
    //   ie FP32 aka DOUBLE, using odd-numbered single-prec regs
 | 
			
		||||
    mips_fpabi = MIPS_ABI_FP_DOUBLE;
 | 
			
		||||
    // Old compilers and some translators don't emit the new abiflags section.
 | 
			
		||||
    const char* filename = get_realpath();
 | 
			
		||||
    size_t len = strlen(filename);
 | 
			
		||||
    if (len > 4 && (strcmp(filename+len-4, ".dex") == 0 ||
 | 
			
		||||
                    strcmp(filename+len-4, ".oat") == 0   )) {
 | 
			
		||||
      // Assume dex2oat is compatible with target
 | 
			
		||||
      mips_fpabi = MIPS_ABI_FP_XX;
 | 
			
		||||
    } else {
 | 
			
		||||
      // Old Android compilers used -mfp32 -mdouble-float -modd-spreg defaults,
 | 
			
		||||
      //   ie FP32 aka DOUBLE, using FR=0 mode fpregs & odd single-prec fpregs
 | 
			
		||||
      mips_fpabi = MIPS_ABI_FP_DOUBLE;
 | 
			
		||||
    }
 | 
			
		||||
  } else {
 | 
			
		||||
    mips_fpabi = abiflags->fp_abi;
 | 
			
		||||
    if ( (abiflags->flags1 & MIPS_AFL_FLAGS1_ODDSPREG)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user