[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