Merge "[MIPS] Link .dex or .oat code lacking .MIPS.abiflags segment"
This commit is contained in:
commit
2278d29ada
1 changed files with 12 additions and 4 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue