From 976102cd178de0dd6b366746f850b026a2793097 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 5 Jan 2016 11:03:40 +0000 Subject: [PATCH] Fix PR sim/13418: building with --enable-targets=all fails 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 PR sim/13418 * configure.ac: Define WITH_PPC_SIM when linking in the sim and the target is powerpc*. * configure: Regenerate. * config.in: Regenerate. --- gdb/ChangeLog | 8 ++++++++ gdb/config.in | 3 +++ gdb/configure | 10 ++++++++++ gdb/configure.ac | 8 ++++++++ gdb/rs6000-tdep.c | 2 +- 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3d8923bc457..b10aa04eeb9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2016-01-05 Pedro Alves + + 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 * btrace.c (btrace_pt_readmem_callback): Do not return in TRY/CATCH. diff --git a/gdb/config.in b/gdb/config.in index ccc0098fd01..6196fa00526 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -758,6 +758,9 @@ 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 diff --git a/gdb/configure b/gdb/configure index 5afdbbc0f44..15383d6ff91 100755 --- a/gdb/configure +++ b/gdb/configure @@ -15846,6 +15846,16 @@ if test "${ignore_sim}" = "false"; then $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 diff --git a/gdb/configure.ac b/gdb/configure.ac index 5b618c97f9a..d1026406a63 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -2260,6 +2260,14 @@ if test "${ignore_sim}" = "false"; then 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) diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 47b0749dcd2..599b0768a9a 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -328,7 +328,7 @@ init_sim_regno_table (struct gdbarch *arch) 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. */ -- 2.30.2