161 defines.push_back(
"__LITTLE_ENDIAN__");
192 defines.push_back(
"__x86_64__");
194 defines.push_back(
"__amd64__");
197 defines.push_back(
"__LITTLE_ENDIAN__");
217 if(subarch==
"powerpc")
222 if(subarch==
"ppc64le")
235 defines.push_back(
"__powerpc");
236 defines.push_back(
"__powerpc__");
237 defines.push_back(
"__POWERPC__");
241 defines.push_back(
"__BIG_ENDIAN__");
243 if(subarch!=
"powerpc")
245 defines.push_back(
"__powerpc64");
246 defines.push_back(
"__powerpc64__");
247 defines.push_back(
"__PPC64__");
248 defines.push_back(
"__ppc64__");
249 if(subarch==
"ppc64le")
251 defines.push_back(
"_CALL_ELF=2");
252 defines.push_back(
"__LITTLE_ENDIAN__");
256 defines.push_back(
"_CALL_ELF=1");
257 defines.push_back(
"__BIG_ENDIAN__");
298 defines.push_back(
"__aarch64__");
302 defines.push_back(
"__ARM_PCS_VFP");
330 defines.push_back(
"__alpha__");
350 if(subarch==
"mipsel" ||
352 subarch==
"mipsn32el" ||
364 if(subarch==
"mipsel" ||
365 subarch==
"mipsn32el" ||
437 defines.push_back(
"__s390x__");
457 if(subarch==
"sparc64")
475 defines.push_back(
"__sparc__");
476 if(subarch==
"sparc64")
477 defines.push_back(
"__arch64__");
539 defines.push_back(
"__ILP32__");
541 defines.push_back(
"__x86_64__");
542 defines.push_back(
"__amd64__");
647 #if defined(__APPLE__) 650 #elif defined(__FreeBSD__) 660 return cpp_standardt::CPP98;
674 if(
sizeof(
long int)==8)
679 else if(arch==
"alpha")
681 else if(arch==
"arm64" ||
686 else if(arch==
"mips64el" ||
693 else if(arch==
"powerpc" ||
697 else if(arch==
"sparc" ||
700 else if(arch==
"ia64")
702 else if(arch==
"s390x")
704 else if(arch==
"s390")
708 else if(arch==
"v850")
710 else if(arch==
"hppa")
714 else if(arch==
"x86_64")
716 else if(arch==
"i386")
751 if(cmdline.
isset(
"function"))
754 if(cmdline.
isset(
'D'))
757 if(cmdline.
isset(
'I'))
760 if(cmdline.
isset(
"classpath"))
766 else if(cmdline.
isset(
"cp"))
775 const char *CLASSPATH=getenv(
"CLASSPATH");
776 if(CLASSPATH!=
nullptr)
782 if(cmdline.
isset(
"main-class"))
785 if(cmdline.
isset(
"include"))
788 if(cmdline.
isset(
"floatbv"))
791 if(cmdline.
isset(
"fixedbv"))
803 if(cmdline.
isset(
"i386-linux"))
808 else if(cmdline.
isset(
"i386-win32") ||
809 cmdline.
isset(
"win32"))
814 else if(cmdline.
isset(
"winx64"))
819 else if(cmdline.
isset(
"i386-macos"))
824 else if(cmdline.
isset(
"ppc-macos"))
830 if(cmdline.
isset(
"arch"))
835 if(cmdline.
isset(
"os"))
847 if(cmdline.
isset(
"gcc"))
888 else if(os==
"linux" || os==
"solaris")
895 else if(os==
"freebsd")
926 if(arch==
"x64_64" && cmdline.
isset(
"gcc"))
934 if(arch==this_arch && os==this_os)
955 if(cmdline.
isset(
"16"))
958 if(cmdline.
isset(
"32"))
961 if(cmdline.
isset(
"64"))
964 if(cmdline.
isset(
"LP64"))
967 if(cmdline.
isset(
"ILP64"))
970 if(cmdline.
isset(
"LLP64"))
973 if(cmdline.
isset(
"ILP32"))
976 if(cmdline.
isset(
"LP32"))
979 if(cmdline.
isset(
"string-abstraction"))
984 if(cmdline.
isset(
"no-library"))
987 if(cmdline.
isset(
"little-endian"))
990 if(cmdline.
isset(
"big-endian"))
993 if(cmdline.
isset(
"little-endian") &&
994 cmdline.
isset(
"big-endian"))
997 if(cmdline.
isset(
"unsigned-char"))
1000 if(cmdline.
isset(
"round-to-even") ||
1001 cmdline.
isset(
"round-to-nearest"))
1004 if(cmdline.
isset(
"round-to-plus-inf"))
1007 if(cmdline.
isset(
"round-to-minus-inf"))
1010 if(cmdline.
isset(
"round-to-zero"))
1023 default:
return "none";
1031 else if(os==
"macos")
1041 const std::string &what)
1046 if(ns.
lookup(
id, symbol))
1051 if(tmp.
id()!=ID_address_of ||
1053 tmp.
op0().
id()!=ID_index ||
1055 tmp.
op0().
op0().
id()!=ID_string_constant)
1058 "symbol table configuration entry `"+
id2string(
id)+
1059 "' is not a string constant";
1067 const std::string &what)
1072 if(ns.
lookup(
id, symbol))
1078 if(tmp.
id()!=ID_constant)
1080 "symbol table configuration entry `"+
id2string(
id)+
"' is not a constant";
1086 "failed to convert symbol table configuration entry `"+
id2string(
id)+
"'";
1161 #ifdef __ARM_PCS_VFP 1167 #if _MIPS_SIM==_ABIO32 1169 #elif _MIPS_SIM==_ABIN32 1170 this_arch=
"mipsn32el";
1172 this_arch=
"mips64el";
1175 #if _MIPS_SIM==_ABIO32 1177 #elif _MIPS_SIM==_ABIN32 1178 this_arch=
"mipsn32";
1183 #if defined(__ppc64__) || defined(__PPC64__) || \ 1184 defined(__powerpc64__) || defined(__POWERPC64__) 1185 #ifdef __LITTLE_ENDIAN__ 1186 this_arch=
"ppc64le";
1191 this_arch=
"powerpc";
1195 this_arch=
"sparc64";
1223 this_arch=
"unknown";
1231 std::string current;
1232 for(std::size_t
pos=0;
pos<cp.size();
pos++)
1237 const char cp_separator=
';';
1239 const char cp_separator=
':';
1242 if(cp[
pos]==cp_separator)
1244 if(!current.empty())
1254 if(!current.empty())
void set_arch_spec_arm(const irep_idt &subarch)
const std::list< std::string > & get_values(const std::string &option) const
void set_LP32()
int=16, long=32, pointer=32
struct configt::ansi_ct ansi_c
virtual bool lookup(const irep_idt &name, const symbolt *&symbol) const
const std::string & id2string(const irep_idt &d)
void set_arch_spec_power(const irep_idt &subarch)
Globally accessible architectural configuration.
void set_classpath(const std::string &cp)
static std::string os_to_string(ost)
bool single_precision_constant
void set_arch_spec_v850()
Sets up the widths of variables for the Renesas V850.
std::list< std::string > defines
static irep_idt string_from_ns(const namespacet &ns, const std::string &what)
exprt value
Initial value of symbol.
std::string get_value(char option) const
void set_LP64()
int=32, long=64, pointer=64
void set_arch_spec_ia64()
Symbol table entry.This is a symbol in the symbol table, stored in an object of type symbol_tablet...
void set_arch_spec_mips(const irep_idt &subarch)
preprocessort preprocessor
bool set(const cmdlinet &cmdline)
const irep_idt & id() const
std::list< std::string > include_files
virtual bool isset(char option) const
void set_arch_spec_sparc(const irep_idt &subarch)
void set_arch_spec_x86_64()
static unsigned unsigned_from_ns(const namespacet &ns, const std::string &what)
unsigned long_long_int_width
void set_arch(const irep_idt &)
API to expression classes.
const irep_idt & get(const irep_namet &name) const
void set_arch_spec_alpha()
enum configt::cppt::cpp_standardt cpp_standard
void set_ILP32()
int=32, long=32, pointer=32
unsigned memory_operand_size
struct configt::javat java
void set_arch_spec_s390()
void set_from_symbol_table(const symbol_tablet &)
enum configt::ansi_ct::c_standardt c_standard
unsigned integer2unsigned(const mp_integer &n)
static c_standardt default_c_standard()
static irep_idt this_operating_system()
ieee_floatt::rounding_modet rounding_mode
Base class for all expressions.
void set_arch_spec_hppa()
void set_arch_spec_i386()
unsigned long_double_width
void set_LLP64()
int=32, long=32, pointer=64
static ost string_to_os(const std::string &)
const constant_exprt & to_constant_expr(const exprt &expr)
Cast a generic exprt to a constant_exprt.
static cpp_standardt default_cpp_standard()
static irep_idt this_architecture()
void set_arch_spec_s390x()
bool simplify(exprt &expr, const namespacet &ns)
void set_ILP64()
int=64, long=64, pointer=64
std::list< std::string > include_paths