[CRIS] Reading core file selects "wrong" mach

Orjan Friberg orjan.friberg@axis.com
Mon Dec 13 15:12:00 GMT 2004

Mark Kettenis wrote:
>    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.

Yes, I didn't mean to say that the call to bfd_default_set_arch_mach was wrong 
or superfluous, I was just describing the effect it had.

>    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

What I meant was that I couldn't find any other port that looked at the mach in 
their grok_prstatus/grok_prinfo, which led me to think there might be a reason 
they didn't.

> 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.

Yes, that makes sense.  Thanks.

I guess the answer to this is 'no', but would it be possible (and correct) to 
use whatever machine was set when loading the corresponding program into GDB?

Orjan Friberg
Axis Communications

More information about the Gdb-patches mailing list