Multitarget builds currently fail when:
(1) simulator support is enabled (the main --target supports target sim)
(2) powerpc is included in the --enable-targets list
(3) powerpc is not the main/default target (--target)
This is because the powerpc sim provides a non-standard API function
sim_spr_register_name which gdb/rs6000-tdep.c utilizes. Since the sim
does not yet support multitarget, only the sim (if one exists) for the
main target is built. When that target isn't powerpc, this function
is not available leading to linking errors:
rs6000-tdep.c:(.text+0x1e34d): undefined reference to
`sim_spr_register_name'
Fix this by only using that API if the sim linked in is the powerpc
sim.
gdb/ChangeLog:
2016-01-05 Pedro Alves <palves@redhat.com>
PR sim/13418
* configure.ac: Define WITH_PPC_SIM when linking in the sim and
the target is powerpc*.
* configure: Regenerate.
* config.in: Regenerate.
+2016-01-05 Pedro Alves <palves@redhat.com>
+
+ PR sim/13418
+ * configure.ac: Define WITH_PPC_SIM when linking in the sim and
+ the target is powerpc*.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+
2016-01-04 Markus Metzger <markus.t.metzger@intel.com>
* btrace.c (btrace_pt_readmem_callback): Do not return in TRY/CATCH.
when building for Cygwin. */
#undef USE_WIN32API
+/* Define if the PPC simulator is being linked in. */
+#undef WITH_PPC_SIM
+
/* Define if --with-python provides a path, either directly or via
python-config.py --exec-prefix. */
#undef WITH_PYTHON_PATH
$as_echo "#define WITH_SIM 1" >>confdefs.h
+
+ # Some tdep code should only be compiled in when the ppc sim is
+ # built. PR sim/13418.
+ case $target in
+ powerpc*-*-*)
+
+$as_echo "#define WITH_PPC_SIM 1" >>confdefs.h
+
+ ;;
+ esac
fi
fi
SIM="${gdb_sim}"
SIM_OBS="remote-sim.o"
AC_DEFINE(WITH_SIM, 1, [Define if the simulator is being linked in.])
+
+ # Some tdep code should only be compiled in when the ppc sim is
+ # built. PR sim/13418.
+ case $target in
+ powerpc*-*-*)
+ AC_DEFINE(WITH_PPC_SIM, 1, [Define if the PPC simulator is being linked in.])
+ ;;
+ esac
fi
fi
AC_SUBST(SIM)
set_sim_regno (sim_regno, tdep->ppc_acc_regnum, sim_ppc_acc_regnum);
/* spefscr is a special-purpose register, so the code below handles it. */
-#ifdef WITH_SIM
+#ifdef WITH_PPC_SIM
/* Now handle all special-purpose registers. Verify that they
haven't mistakenly been assigned numbers by any of the above
code. */