Can't set architecture to m32c on m32c-elf-gdb.

Masaki Muranaka monaka@monami-software.com
Thu Jan 7 22:38:00 GMT 2010


Hello Nick,

Though I've not tried your patch yet,  it also will works fine.

But I feel my patch is better.
Renesas is planning to ship R32C series. They have a lot of extensions but basically based on M32C.
R32C aims automovice areas, so it's possible they have some custom variations.
I think it's better to specify architecture by printable name like cpu-arm.c


> By the way, this has exposed a problem with GDB's set architecture command - it is not set up to allow the "ARCH:MACH" notation that is accepted by the BFD library.  Maybe someone will want to fix this one day...

Indeed, I'm mistaken about that.

Thanks,

On 2010/01/08, at 0:49, Nick Clifton wrote:

> Hi Masaki,
> 
>> Please try 'print $dma0' on GDB (w/o my patch).
>> dma0 is a register supported by m32c only.
>> So the result of 'print $dma0' is ...
>> In case m32c, it should be 'No registers.'
>> In case m16c, it should be ''void' since it doesn't have dma0 register.
> 
> Thank you - that was the extra information that I needed in order to be able to diagnose this problem.
> 
> Please try out the attached patch and let me know if it works for you.
> 
> By the way, this has exposed a problem with GDB's set architecture command - it is not set up to allow the "ARCH:MACH" notation that is accepted by the BFD library.  Maybe someone will want to fix this one day...
> 
> Cheers
>  Nick
> 
> Index: bfd/cpu-m32c.c
> ===================================================================
> RCS file: /cvs/src/src/bfd/cpu-m32c.c,v
> retrieving revision 1.4
> diff -c -3 -p -r1.4 cpu-m32c.c
> *** bfd/cpu-m32c.c	2 Sep 2009 07:18:36 -0000	1.4
> --- bfd/cpu-m32c.c	7 Jan 2010 15:44:35 -0000
> ***************
> *** 22,27 ****
> --- 22,40 ----
>  #include "bfd.h"
>  #include "libbfd.h"
> 
> + /* Like bfd_default_scan but if the string is just "m32c" then
> +    skip the m16c architecture.  */
> + 
> + static bfd_boolean
> + m32c_scan (const bfd_arch_info_type * info, const char * string)
> + {
> +   if (strcmp (string, "m32c") == 0
> +       && info->mach == bfd_mach_m16c)
> +     return FALSE;
> + 
> +   return bfd_default_scan (info, string);
> + }
> + 
>  static const bfd_arch_info_type arch_info_struct[] =
>  {
>    {
> *************** static const bfd_arch_info_type arch_inf
> *** 35,41 ****
>      3,				/* section align power */
>      FALSE,			/* the default ? */
>      bfd_default_compatible,	/* architecture comparison fn */
> !     bfd_default_scan,		/* string to architecture convert fn */
>      NULL			/* next in list */
>    },
>  };
> --- 48,54 ----
>      3,				/* section align power */
>      FALSE,			/* the default ? */
>      bfd_default_compatible,	/* architecture comparison fn */
> !     m32c_scan,			/* string to architecture convert fn */
>      NULL			/* next in list */
>    },
>  };
> *************** const bfd_arch_info_type bfd_m32c_arch =
> *** 52,57 ****
>    4,				/* Section align power.  */
>    TRUE,				/* The default ?  */
>    bfd_default_compatible,	/* Architecture comparison fn.  */
> !   bfd_default_scan,		/* String to architecture convert fn.  */
>    &arch_info_struct[0],		/* Next in list.  */
>  };
> --- 65,70 ----
>    4,				/* Section align power.  */
>    TRUE,				/* The default ?  */
>    bfd_default_compatible,	/* Architecture comparison fn.  */
> !   m32c_scan,			/* String to architecture convert fn.  */
>    &arch_info_struct[0],		/* Next in list.  */
>  };



More information about the Binutils mailing list