Package: cbmc Version: 4.5 Severity: important Tags: patch This patch add support with mips abi n32, n64, tested on mips64el already.
Regards, Sphinx Jiang
--- a/src/util/config.cpp +++ b/src/util/config.cpp @@ -463,13 +463,26 @@ void configt::ansi_ct::set_arch_spec_mips(const irep_idt &subarch) { - set_ILP32(); arch=ARCH_MIPS; - if(subarch=="mipsel") + if(subarch=="mipsel" || + subarch=="mips" || + subarch=="mipsn32el" || + subarch=="mipsn32") + { + set_ILP32(); + long_double_width=8*8; + } + else + { + set_LP64(); + long_double_width=16*8; + } + if(subarch=="mipsel" || + subarch=="mipsn32el" || + subarch=="mips64el") endianness=IS_LITTLE_ENDIAN; else endianness=IS_BIG_ENDIAN; - long_double_width=8*8; char_is_unsigned=false; switch(mode) @@ -836,7 +849,11 @@ arch=="armhf" || arch=="arm") ansi_c.set_arch_spec_arm(arch); - else if(arch=="mipsel" || + else if(arch=="mips64el" || + arch=="mipsn32el" || + arch=="mipsel" || + arch=="mips64" || + arch=="mipsn32" || arch=="mips") ansi_c.set_arch_spec_mips(arch); else if(arch=="powerpc" || @@ -1064,9 +1081,21 @@ this_arch="arm"; #endif #elif __mipsel__ - this_arch="mipsel"; + #if _MIPS_SIM==_ABIO32 + this_arch="mipsel"; + #elif _MIPS_SIM==_ABIN32 + this_arch="mipsn32el"; + #else + this_arch="mips64el"; + #endif #elif __mips__ - this_arch="mips"; + #if _MIPS_SIM==_ABIO32 + this_arch="mips"; + #elif _MIPS_SIM==_ABIN32 + this_arch="mipsn32"; + #else + this_arch="mips64"; + #endif #elif __powerpc__ this_arch="powerpc"; #elif __ppc64__