Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Elena Zannoni <ezannoni@redhat.com>
To: Nick Clifton <nickc@redhat.com>
Cc: Elena Zannoni <ezannoni@redhat.com>,
	thorpej@wasabisystems.com, binutils@sources.redhat.com,
	gdb-patches@sources.redhat.com
Subject: Re: [PATCH/RFA] Include sh64 support for shle-*-netbsdelf*
Date: Tue, 14 May 2002 08:17:00 -0000	[thread overview]
Message-ID: <15585.10835.680930.43907@localhost.redhat.com> (raw)
In-Reply-To: <m3u1pag5zn.fsf@north-pole.nickc.cambridge.redhat.com>

Nick Clifton writes:
 > Hi Elena,
 > 
 > >  > > The tdep gdb file is going to be built for all the sh targets. And
 > >  > > that file requires the sh64 disassembly functions.
 > >  > 
 > >  > In which case there may well be a problem.  As it stands configuring
 > >  > BFD as, eg, sh3-elf will not bring in the sh64 architecture or
 > >  > disassembly functions.  Can the tdep file be made conditional on the
 > >  > SH architecture specified on the configure command line ?
 > >  > 
 > > 
 > > No, it wouldn't be accepted. We are going towards unifying all the
 > > targets for a given architecture, so that we can switch at runtime
 > > with multiarch.  I mean, it is not technically impossible, but it is
 > > philosophically inconsistent with where gdb is going nowadays. We are
 > > even going to build multiple architectures together, like sh and ppc,
 > > in a single executable.  As a matter of fact I had such defines when I
 > > first submitted the port, and I removed them.
 > 
 > Hmm, OK - in which case would it be acceptable to say that in order to
 > obtain GDB support an SH toolchain should be configured as "sh-elf"
 > and not "sh3-elf" even if the intended default processor is the SH3 ?
 > ie that configurations such as "sh3-elf" are becoming obsolete and
 > will one day be removed ?
 > 

Yes, kind of. The sh3-elf support (for instance) is in there, together
with all the rest.  sh-elf gets you the whole shebang, in theory. Gdb gets the
list of available architectures from bfd:

(gdb) set architecture 
Requires an argument. Valid arguments are sh, sh2, sh-dsp, sh3, sh3-dsp, sh3e, sh4, sh5, auto.

Now, this happens in theory only, because the sh5 disassembly support
is not always integrated.  So if you configure with sh3-elf at the
moment, gdb tries to build *everything*, treating it just like
sh-elf. But the build will barf because of the disassembly function.
(never mind that at present I forgot to add a sh* target, I'll do it now).

To be even clearer, the real problem is the disassembly function interface.
Right now gdb does this (more or less):

if (machine is sh5)
{
  if (target is big endian)
     call print_insn_sh64()
  else
     call print_insn_sh64l()
}
else
{
  if (target is big endian)
     call print_insn_sh()
  else
     call print_insn_shl()
}

It shouldn't. It should just call a print_insn_sh() function that
based on the contents of the info parameter decides what to do.
I.e., the opcodes/sh-dis.c should have something like this:

int
print_insn_sh (memaddr, info)
     bfd_vma memaddr;
     struct disassemble_info *info;
{
  int r;

  if (info->mach == bfd_mach_sh5)
    {
      if (info->endian == BFD_ENDIAN_LITTLE)
	r = print_insn_sh64_little (memaddr, info);
      else
	r = print_insn_sh64_big (memaddr, info);
    }
  else
    {
      if (info->endian == BFD_ENDIAN_LITTLE)
	r = print_insn_sh_little (memaddr, info);
      else
	r = print_insn_sh_big (memaddr, info);
    }

  return r;
}

opcodes/disassemble.c should also use this generic 'wrapper' like most
of the other targets do, instead of using the INCLUDE_SHMEDIA macro.

This way the interface into the disassembler would just be one function.
Right now there are a lot of sh disassembly functions:

extern int print_insn_sh64		PARAMS ((bfd_vma, disassemble_info *));
extern int print_insn_sh64l		PARAMS ((bfd_vma, disassemble_info *));
extern int print_insn_sh64x_media	PARAMS ((bfd_vma, disassemble_info *));
extern int print_insn_sh		PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_shl		PARAMS ((bfd_vma, disassemble_info*));


Elena


  reply	other threads:[~2002-05-14 15:17 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-11 11:56 Jason R Thorpe
2002-05-13  1:48 ` Nick Clifton
2002-05-13  8:23   ` Jason R Thorpe
2002-05-13 10:35     ` Nick Clifton
2002-05-13 15:13       ` Elena Zannoni
2002-05-13 14:28         ` Jason R Thorpe
2002-05-13 15:13           ` Elena Zannoni
2002-05-14  1:50         ` Nick Clifton
2002-05-14  6:51           ` Elena Zannoni
2002-05-14  7:27             ` Nick Clifton
2002-05-14  8:17               ` Elena Zannoni [this message]
     [not found]                 ` <m3offha19r.fsf@north-pole.nickc.cambridge.redhat.com>
     [not found]                   ` <3CE2B34F.EAAEF3F8@superh.com>
     [not found]                     ` <15587.63152.235989.94659@localhost.redhat.com>
2002-05-17  5:40                       ` print_insn_sh cleanup Joern Rennecke
2002-05-17  6:54                         ` Elena Zannoni
2002-05-17  7:39                           ` Joern Rennecke
2002-05-20  4:22                             ` Alexandre Oliva
2002-05-20  6:29                               ` Joern Rennecke
2002-05-20  6:57                                 ` Hans-Peter Nilsson
2002-05-14  8:20               ` [PATCH/RFA] Include sh64 support for shle-*-netbsdelf* Alexandre Oliva
2002-05-14  8:38                 ` Elena Zannoni
2002-05-14  8:46                 ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=15585.10835.680930.43907@localhost.redhat.com \
    --to=ezannoni@redhat.com \
    --cc=binutils@sources.redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=nickc@redhat.com \
    --cc=thorpej@wasabisystems.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox