This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Can't set architecture to m32c on m32c-elf-gdb.
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. */
> };