diff mbox

gdb: sim: disable integration w/some multitarget configs [PR sim/13418]

Message ID 568A75CE.1010007@redhat.com
State New
Headers show

Commit Message

Pedro Alves Jan. 4, 2016, 1:38 p.m. UTC
On 01/02/2016 08:42 AM, Mike Frysinger wrote:
> Multitarget builds currently fail when:
> (1) simulator support is enabled
> (2) powerpc is included in the target list
> (3) powerpc is not the main/default target
> 
> This is because the powerpc sim provides a non-standard API function
> sim_spr_register_name which the powerpc gdb utilizes.  Since the sim
> does not yet support multitarget, only the sim for the main target
> (if one exists) is built.  When that target isn't powerpc, this func
> is not available leading to linking errors.
> 
> Since multitarget support is going to take a while, and specifically
> the powerpc target is going to take even longer, disable sim support
> automatically when the aforementioned conditions are met.

> diff --git a/gdb/configure.ac b/gdb/configure.ac
> index 5b618c9..458605f 100644
> --- a/gdb/configure.ac
> +++ b/gdb/configure.ac
> @@ -2256,6 +2256,19 @@ fi
>  SIM=
>  SIM_OBS=
>  if test "${ignore_sim}" = "false"; then
> +  # The ppc gdb/sim only works when it's the main target.  PR sim/13418
> +  case $target in
> +  powerpc*-*-*) ;;
> +  *)
> +    case "${all_targets}: ${TARGET_OBS} " in
> +    true:*|*" rs6000-tdep.o "*)
> +      AC_MSG_WARN([Disabling sim integration for multitarget powerpc configs])
> +      gdb_sim=
> +      ;;
> +    esac
> +    ;;
> +  esac
> +

Now sure about that.  It penalizes non-PPC sims for a PPC sim issue.

How about this instead?

From e05ef2bec1b3843c87dd06a7680f7d6e1c13ba1e Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Mon, 4 Jan 2016 13:01:25 +0000
Subject: [PATCH] ppc sim

---
 gdb/config.in     |  3 +++
 gdb/configure     | 10 ++++++++++
 gdb/configure.ac  |  8 ++++++++
 gdb/rs6000-tdep.c |  2 +-
 4 files changed, 22 insertions(+), 1 deletion(-)

Comments

Mike Frysinger Jan. 5, 2016, 12:55 a.m. UTC | #1
On 04 Jan 2016 13:38, Pedro Alves wrote:
> On 01/02/2016 08:42 AM, Mike Frysinger wrote:
> > Multitarget builds currently fail when:
> > (1) simulator support is enabled
> > (2) powerpc is included in the target list
> > (3) powerpc is not the main/default target
> > 
> > This is because the powerpc sim provides a non-standard API function
> > sim_spr_register_name which the powerpc gdb utilizes.  Since the sim
> > does not yet support multitarget, only the sim for the main target
> > (if one exists) is built.  When that target isn't powerpc, this func
> > is not available leading to linking errors.
> > 
> > Since multitarget support is going to take a while, and specifically
> > the powerpc target is going to take even longer, disable sim support
> > automatically when the aforementioned conditions are met.
> 
> > diff --git a/gdb/configure.ac b/gdb/configure.ac
> > index 5b618c9..458605f 100644
> > --- a/gdb/configure.ac
> > +++ b/gdb/configure.ac
> > @@ -2256,6 +2256,19 @@ fi
> >  SIM=
> >  SIM_OBS=
> >  if test "${ignore_sim}" = "false"; then
> > +  # The ppc gdb/sim only works when it's the main target.  PR sim/13418
> > +  case $target in
> > +  powerpc*-*-*) ;;
> > +  *)
> > +    case "${all_targets}: ${TARGET_OBS} " in
> > +    true:*|*" rs6000-tdep.o "*)
> > +      AC_MSG_WARN([Disabling sim integration for multitarget powerpc configs])
> > +      gdb_sim=
> > +      ;;
> > +    esac
> > +    ;;
> > +  esac
> > +
> 
> Now sure about that.  It penalizes non-PPC sims for a PPC sim issue.
> 
> How about this instead?

i'm fine with this, so lgtm
-mike
Pedro Alves Jan. 5, 2016, 11:09 a.m. UTC | #2
On 01/05/2016 12:55 AM, Mike Frysinger wrote:

>> Now sure about that.  It penalizes non-PPC sims for a PPC sim issue.
>>
>> How about this instead?
> 
> i'm fine with this, so lgtm

Pushed.

Thanks,
Pedro Alves
diff mbox

Patch

diff --git a/gdb/config.in b/gdb/config.in
index ccc0098..6196fa0 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 5afdbbc..15383d6 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 5b618c9..d102640 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 47b0749..599b076 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.  */