sim_multi_igen_configs
sim_multi_flags
sim_gen
+sim_micromips16_flags
+sim_micromips_flags
sim_m16_flags
sim_igen_flags
SIM_SUBTARGET
LIBTOOL
PLUGINS_FALSE
PLUGINS_TRUE
+zlibinc
+zlibdir
CATOBJEXT
GENCAT
INSTOBJEXT
ac_subst_files=''
ac_user_opts='
enable_option_checking
-with_zlib
+with_system_zlib
enable_plugins
enable_shared
enable_static
--disable-libtool-lock avoid locking (might break parallel builds)
--enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer
- --enable-sim-bswap Use Host specific BSWAP instruction.
- --enable-sim-cflags=opts Extra CFLAGS for use in building simulator
- --enable-sim-debug=opts Enable debugging flags
- --enable-sim-stdio Specify whether to use stdio for console input/output.
- --enable-sim-trace=opts Enable tracing flags
- --enable-sim-profile=opts Enable profiling flags
- --enable-sim-inline=inlines Specify which functions should be inlined.
- --enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.
- --enable-sim-hostendian=end Specify host byte endian orientation.
+ --enable-sim-bswap Use Host specific BSWAP instruction
+ --enable-sim-cflags=opts
+ Extra CFLAGS for use in building simulator
+ --enable-sim-debug=opts Enable debugging flags (for developers of the sim
+ itself)
+ --enable-sim-stdio Specify whether to use stdio for console
+ input/output
+ --enable-sim-trace=opts Enable tracing of simulated programs
+ --enable-sim-profile=opts
+ Enable profiling flags
+ --enable-sim-inline=inlines
+ Specify which functions should be inlined
+ --enable-sim-alignment=align
+ Specify strict, nonstrict or forced alignment of
+ memory accesses
+ --enable-sim-hostendian=end
+ Specify host byte endian orientation
--enable-werror treat compile warnings as errors
--enable-build-warnings enable build-time compiler warnings if gcc is used
--enable-sim-build-warnings
enable SIM specific build-time compiler warnings if
gcc is used
- --enable-sim-reserved-bits Specify whether to check reserved bits in instruction.
- --enable-sim-endian=endian Specify target byte endian orientation.
- --enable-sim-bitsize=N Specify target bitsize (32 or 64).
- --enable-sim-float Specify that the target processor has floating point hardware.
- --enable-sim-smp=n Specify number of processors to configure for (default ${default_sim_smp}).
+ --enable-sim-reserved-bits
+ Specify whether to check reserved bits in
+ instruction
+ --enable-sim-endian=endian
+ Specify target byte endian orientation
+ --enable-sim-bitsize=N Specify target bitsize (32 or 64)
+ --enable-sim-float Specify that the target processor has floating point
+ hardware
+ --enable-sim-smp=n Specify number of processors to configure for
+ (default ${default_sim_smp})
--enable-sim-hardware=LIST
Specify the hardware to be included in the build.
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-zlib include zlib support (auto/yes/no) default=auto
+ --with-system-zlib use installed libz
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-pkgversion=PKG Use PKG in the version string in place of "GDB"
+ --with-pkgversion=PKG Use PKG in the version string in place of "SIM"
--with-bugurl=URL Direct users to URL to report a bug
--with-x use the X Window System
# SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate the Makefile.
# It is intended to be invoked last.
#
-# The simulator's configure.in should look like:
+# The simulator's configure.ac should look like:
#
# dnl Process this file with autoconf to produce a configure script.
# AC_PREREQ(2.64)dnl
-
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
fi
-
-
# Some of the common include files depend on bfd.h, and bfd.h checks
# that config.h is included first by testing that the PACKAGE macro
# is defined.
# BFD conditionally uses zlib, so we must link it in if libbfd does, by
# using the same condition.
- # See if the user specified whether he wants zlib support or not.
-
-# Check whether --with-zlib was given.
-if test "${with_zlib+set}" = set; then :
- withval=$with_zlib;
-else
- with_zlib=auto
-fi
-
-
- if test "$with_zlib" != "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5
-$as_echo_n "checking for library containing zlibVersion... " >&6; }
-if test "${ac_cv_search_zlibVersion+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ # Use the system's zlib library.
+ zlibdir="-L\$(top_builddir)/../zlib"
+ zlibinc="-I\$(top_srcdir)/../zlib"
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char zlibVersion ();
-int
-main ()
-{
-return zlibVersion ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' z; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+# Check whether --with-system-zlib was given.
+if test "${with_system_zlib+set}" = set; then :
+ withval=$with_system_zlib; if test x$with_system_zlib = xyes ; then
+ zlibdir=
+ zlibinc=
fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_zlibVersion=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if test "${ac_cv_search_zlibVersion+set}" = set; then :
- break
-fi
-done
-if test "${ac_cv_search_zlibVersion+set}" = set; then :
-
-else
- ac_cv_search_zlibVersion=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_zlibVersion" >&5
-$as_echo "$ac_cv_search_zlibVersion" >&6; }
-ac_res=$ac_cv_search_zlibVersion
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- for ac_header in zlib.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = x""yes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF
fi
-done
-fi
- if test "$with_zlib" = "yes" -a "$ac_cv_header_zlib_h" != "yes"; then
- as_fn_error "zlib (libz) library was explicitly requested but not found" "$LINENO" 5
- fi
- fi
# BFD uses libdl when when plugins enabled.
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12403 "configure"
+#line 12350 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12509 "configure"
+#line 12456 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
# Check whether --enable-sim-trace was given.
if test "${enable_sim_trace+set}" = set; then :
enableval=$enable_sim_trace; case "${enableval}" in
- yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";;
- no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";;
+ yes) sim_trace="-DWITH_TRACE=-1";;
+ no) sim_trace="-DWITH_TRACE=0";;
[-0-9]*)
- sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";;
+ sim_trace="-DWITH_TRACE='(${enableval})'";;
[[:lower:]]*)
sim_trace=""
for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
*) PKGVERSION="($withval) " ;;
esac
else
- PKGVERSION="(GDB) "
+ PKGVERSION="(SIM) "
fi
# Check whether --enable-sim-hostendian was given.
if test "${enable_sim_hostendian+set}" = set; then :
enableval=$enable_sim_hostendian; case "${enableval}" in
- no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
- b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
- l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
+ no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BFD_ENDIAN_UNKNOWN";;
+ b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BFD_ENDIAN_BIG";;
+ l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BFD_ENDIAN_LITTLE";;
*) as_fn_error "\"Unknown value $enableval for --enable-sim-hostendian\"" "$LINENO" 5; sim_hostendian="";;
esac
if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
esac
if test $ac_cv_c_bigendian = yes; then
- sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
+ sim_hostendian="-DWITH_HOST_BYTE_ORDER=BFD_ENDIAN_BIG"
else
- sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
+ sim_hostendian="-DWITH_HOST_BYTE_ORDER=BFD_ENDIAN_LITTLE"
fi
else
- sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
+ sim_hostendian="-DWITH_HOST_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
fi
fi
mips_endian=
default_endian=
case "${target}" in
- mips64el*-*-*) mips_endian=LITTLE_ENDIAN ;;
- mips64vr*el-*-*) default_endian=LITTLE_ENDIAN ;;
- mips64*-*-*) default_endian=BIG_ENDIAN ;;
- mips16*-*-*) default_endian=BIG_ENDIAN ;;
- mipsisa32*-*-*) default_endian=BIG_ENDIAN ;;
- mipsisa64*-*-*) default_endian=BIG_ENDIAN ;;
- mips*-*-*) default_endian=BIG_ENDIAN ;;
- *) default_endian=BIG_ENDIAN ;;
+ mips64el*-*-*) mips_endian=LITTLE ;;
+ mips64vr*el-*-*) default_endian=LITTLE ;;
+ mips64*-*-*) default_endian=BIG ;;
+ mips16*-*-*) default_endian=BIG ;;
+ mipsisa32*-*-*) default_endian=BIG ;;
+ mipsisa64*-*-*) default_endian=BIG ;;
+ mips*-*-*) default_endian=BIG ;;
+ *) default_endian=BIG ;;
esac
wire_endian="$mips_endian"
# Check whether --enable-sim-endian was given.
if test "${enable_sim_endian+set}" = set; then :
enableval=$enable_sim_endian; case "${enableval}" in
- b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
- l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
+ b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_BIG";;
+ l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_LITTLE";;
yes) if test x"$wire_endian" != x; then
- sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
+ sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
else
- if test x"$default_endian" != x; then
- sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
+ if test x"$default_endian" != x; then
+ sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
else
echo "No hard-wired endian for target $target" 1>&6
- sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
+ sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
fi
fi;;
no) if test x"$default_endian" != x; then
- sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
+ sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
else
if test x"$wire_endian" != x; then
- sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
+ sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
else
echo "No default endian for target $target" 1>&6
- sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
+ sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
fi
fi;;
*) as_fn_error "\"Unknown value $enableval for --enable-sim-endian\"" "$LINENO" 5; sim_endian="";;
fi
else
if test x"$default_endian" != x; then
- sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
+ sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
else
if test x"$wire_endian" != x; then
- sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
+ sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
else
sim_endian=
fi
sim_multi_default=mips5000
;;
mips*-sde-elf* | mips*-mti-elf*)
- sim_gen=M16
- sim_igen_machine="-M mips64r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2,smartmips"
- sim_m16_machine="-M mips16,mips16e,mips64r2"
- sim_igen_filter="32,64,f"
- sim_mach_default="mipsisa64r2"
+ sim_gen=MULTI
+ sim_multi_configs="\
+ micromips:micromips64,micromipsdsp:32,64,f:mips_micromips\
+ mips64r2:mips64r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2,smartmips:32,64,f:mipsisa64r2"
+ sim_multi_default=mipsisa64r2
;;
mips64*-*-*) sim_igen_filter="32,64,f"
sim_gen=IGEN
sim_igen_filter="32,64,f"
sim_m16_filter="16"
;;
- mipsisa32r2*-*-*) sim_gen=M16
- sim_igen_machine="-M mips32r2,mips16,mips16e,mdmx,dsp,dsp2,smartmips"
- sim_m16_machine="-M mips16,mips16e,mips32r2"
- sim_igen_filter="32,f"
- sim_mach_default="mipsisa32r2"
+ mipsisa32r2*-*-*) sim_gen=MULTI
+ sim_multi_configs="\
+ micromips:micromips32,micromipsdsp:32,f:mips_micromips\
+ mips32r2:mips32r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2,smartmips:32,f:mipsisa32r2"
+ sim_multi_default=mipsisa32r2
;;
mipsisa32*-*-*) sim_gen=M16
sim_igen_machine="-M mips32,mips16,mips16e,smartmips"
# Simple sanity check.
if test -z "${sim_multi_configs}" || test -z "${sim_multi_default}"; then
- as_fn_error "Error in configure.in: MULTI simulator not set up correctly" "$LINENO" 5
+ as_fn_error "Error in configure.ac: MULTI simulator not set up correctly" "$LINENO" 5
fi
# Start in a known state.
rm -f multi-include.h multi-run.c
sim_multi_flags=
sim_multi_src=
- sim_multi_obj=multi-run.o
+ sim_multi_obj=
sim_multi_igen_configs=
sim_seen_default=no
cat << __EOF__ > multi-run.c
/* Main entry point for MULTI simulators.
- Copyright (C) 2003-2015 Free Software Foundation, Inc.
+ Copyright (C) 2003-2016 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "sim-main.h"
#include "multi-include.h"
+#include "elf-bfd.h"
+#include "elf/mips.h"
#define SD sd
#define CPU cpu
if (STATE_ARCHITECTURE (sd) == NULL)
mach = bfd_mach_${sim_multi_default};
+ else if (elf_elfheader (sd->base.prog_bfd)->e_flags
+ & EF_MIPS_ARCH_ASE_MICROMIPS)
+ mach = bfd_mach_mips_micromips;
else
mach = STATE_ARCHITECTURE (SD)->mach;
# the ${sim_multi_configs} entry.
sim_multi_flags="${sim_multi_flags} -F ${filter} -M ${machine}"
- # Check whether mips16 handling is needed.
+ # Check whether special handling is needed.
case ${c} in
*:*mips16*:*)
# Run igen twice, once for normal mode and once for mips16.
sim_multi_obj="${sim_multi_obj} m16${name}_run.o"
sim_multi_flags="${sim_multi_flags} -F 16"
;;
+ *:*micromips32*:*)
+ # Run igen thrice, once for micromips32, once for micromips16,
+ # and once for m32.
+ ws="micromips_m32 micromips16 micromips32"
+
+ # The top-level function for the micromips simulator is
+ # in a file micromips${name}_run.c, generated by the
+ # tmp-run-multi Makefile rule.
+ sim_multi_src="${sim_multi_src} micromips${name}_run.c"
+ sim_multi_obj="${sim_multi_obj} micromips${name}_run.o"
+ sim_multi_flags="${sim_multi_flags} -F 16,32"
+ ;;
+ *:*micromips64*:*)
+ # Run igen thrice, once for micromips64, once for micromips16,
+ # and once for m64.
+ ws="micromips_m64 micromips16 micromips64"
+
+ # The top-level function for the micromips simulator is
+ # in a file micromips${name}_run.c, generated by the
+ # tmp-run-multi Makefile rule.
+ sim_multi_src="${sim_multi_src} micromips${name}_run.c"
+ sim_multi_obj="${sim_multi_obj} micromips${name}_run.o"
+ sim_multi_flags="${sim_multi_flags} -F 16,32,64"
+ ;;
*)
ws=m32
;;
# Check whether we added a 'default:' label.
if test ${sim_seen_default} = no; then
- as_fn_error "Error in configure.in: \${sim_multi_configs} doesn't have an entry for \${sim_multi_default}" "$LINENO" 5
+ as_fn_error "Error in configure.ac: \${sim_multi_configs} doesn't have an entry for \${sim_multi_default}" "$LINENO" 5
fi
cat << __EOF__ >> multi-run.c
sim_multi_src=doesnt-exist.c
if test x"${sim_mach_default}" = x""; then
- as_fn_error "Error in configure.in: \${sim_mach_default} not defined" "$LINENO" 5
+ as_fn_error "Error in configure.ac: \${sim_mach_default} not defined" "$LINENO" 5
fi
SIM_SUBTARGET="$SIM_SUBTARGET -DMIPS_MACH_DEFAULT=bfd_mach_${sim_mach_default}"
fi
sim_igen_flags="-F ${sim_igen_filter} ${sim_igen_machine} ${sim_igen_smp}"
sim_m16_flags=" -F ${sim_m16_filter} ${sim_m16_machine} ${sim_igen_smp}"
+sim_micromips16_flags=" -F ${sim_micromips16_filter} ${sim_micromips16_machine} ${sim_igen_smp}"
+sim_micromips_flags=" -F ${sim_micromips_filter} ${sim_micromips_machine} ${sim_igen_smp}"
mips*tx39*)
hw_enabled=yes
hw_extra_devices="tx3904cpu tx3904irc tx3904tmr tx3904sio"
- SIM_SUBTARGET="$SIM_SUBTARGET -DTARGET_TX3904=1"
;;
*)
;;
esac
-if test x"$hw_enabled" != x"no"; then
- enable_sim_hardware=yes
-else
- enable_sim_hardware=no
-fi
-
if test "$hw_devices"; then
hardware="$hw_devices"
else
# Check whether --enable-sim-hardware was given.
if test "${enable_sim_hardware+set}" = set; then :
enableval=$enable_sim_hardware;
+else
+ enable_sim_hardware="$hw_enabled"
fi
case ${enable_sim_hardware} in
- yes) sim_hw_p=yes;;
- no) sim_hw_p=no;;
- ,*) sim_hw_p=yes; hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
- *,) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
- *) sim_hw_p=yes; hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
+ yes|no) ;;
+ ,*) hardware="${hardware} `echo ${enableval} | sed -e 's/,/ /'`";;
+ *,) hardware="`echo ${enableval} | sed -e 's/,/ /'` ${hardware}";;
+ *) hardware="`echo ${enableval} | sed -e 's/,/ /'`"'';;
esac
-if test "$sim_hw_p" != yes; then
- if test "$hw_enabled" = "always"; then
- as_fn_error "Sorry, but this simulator requires that hardware support
-be enabled. Please configure without --disable-hw-support." "$LINENO" 5
- fi
+if test "$enable_sim_hardware" = no; then
sim_hw_objs=
sim_hw_cflags="-DWITH_HW=0"
sim_hw=