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
next prev parent 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