Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Mark Kettenis <kettenis@gnu.org>
To: orjan.friberg@axis.com
Cc: gdb-patches@sources.redhat.com, hans-peter.nilsson@axis.com
Subject: Re: [CRIS] Reading core file selects "wrong" mach
Date: Thu, 02 Dec 2004 17:18:00 -0000	[thread overview]
Message-ID: <200412021718.iB2HIK1Q004810@elgar.sibelius.xs4all.nl> (raw)
In-Reply-To: <41ADCE5B.5010001@axis.com> (message from Orjan Friberg on Wed, 01 Dec 2004 14:59:55 +0100)

   Date: Wed, 01 Dec 2004 14:59:55 +0100
   From: Orjan Friberg <orjan.friberg@axis.com>

   The reason seems to be the call to bfd_default_set_arch_mach (abfd,
   ebd->arch, 0) in elf_core_file_p in elfcore.h which will select the
   default mach for that arch.  Directly after this we start reading the
   core file which results in a call to cris_elf_grok_prstatus (which
   fails because the default mach doesn't match the current mach).

Without that call to bfd_default_set_arch_mach(), the
architecture/machine wouldn't be set at all for the core file BFD.

   Is there an implicit assumption that the mach is not to be trusted
   when reading a core file?

What do you mean by "not to be trusted"?  It's simply always set to
the default machine for ELF core files.  For most architectures this
is what makes the most sense anyway.  Setting it to anything different
from the default would involve some architecture-dependent code.  I
guess the correct way to do this would be adding
elf_set_mach_from_flags() to `struct elf_backend_data', and use that
in elf_core_file_p() to set the machine after the architecture has
been set.

In principle, GDB can deal with core file BFD's that set the BFD
machine as well as the BFD architecture.  This is done in
netbsd-core.c to distinguish between 32-bit and 64-bit processors
(sparc vs. sparc64, i386 vs. amd64).  There are some issue's though
with compatibility between various BFD machines.  Depending on how
compatibility is defined for a certain BFD architecture, you might
need to register a GDB OS/ABI for every BFD machine for your BFD
architecture.

   (For reference: e_flags, checked in set_mach_from_flags, is
   hardcoded to 0 in the Linux kernel, but setting it correctly (to
   EF_CRIS_VARIANT_V32 in this case) wouldn't change a thing because
   of the above.)

(That would have to change then.  The file gcore.c will probably also
need some changes.)

Mark


  parent reply	other threads:[~2004-12-02 17:18 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-01 14:00 Orjan Friberg
2004-12-01 16:14 ` Randolph Chung
2004-12-02 10:15   ` Orjan Friberg
2004-12-02 15:42     ` Randolph Chung
2004-12-02 17:18 ` Mark Kettenis [this message]
2004-12-13 15:12   ` Orjan Friberg
2004-12-13 16:09     ` Hans-Peter Nilsson
2004-12-13 20:22     ` Mark Kettenis
2005-01-14 17:10   ` Orjan Friberg
2005-01-14 18:40     ` Hans-Peter Nilsson

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=200412021718.iB2HIK1Q004810@elgar.sibelius.xs4all.nl \
    --to=kettenis@gnu.org \
    --cc=gdb-patches@sources.redhat.com \
    --cc=hans-peter.nilsson@axis.com \
    --cc=orjan.friberg@axis.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