Re: [patch] Set calling convention of methods

Joel Brobecker
2009-09-30T00:02:40Z

> I've attached my first patch. Other patches will modify code in this
> one, so I'd prefer to get this one out of the way first.

But it looks like this patch actually introduces code that will be dead
until you actually set the calling convention, right? It seems strange
that you'd prefer to do it this way.

> 2009-06-10 Jonas Maebe <jonas.maebe@elis.ugent.be>
>
> Add support for the "Borland fastcall" calling convention.
>
> * elf/dwarf2.h: Add DW_CC_GNU_borland_fastcall_i386 constant.
> * i386-tdep.c: #include elf/dwarf2.h
> (i386_borland_fastcall_push_dummy_call): New.
> (i386_push_dummy_generic_call): Renamed i386_push_dummy_call.
> (i386_push_dummy_call): New dispatch function that calls
> i386_generic_push_dummy_call or i386_push_dummy_borland_fast_call
> depending on the calling convention.

One of the concerns that never got resolved from what I've read in the
archives, was the use of a DWARF constant outside of DWARF code.
I am not sure I understand the problem, though. Was it the use of
constant zero when populating this field when reading stabs debug
info, or anything else?

As far as I am concerned, I can't see a problem with using DWARF
declarations even from stabs.

Just a couple of formatting nits:

> + if (struct_return
> + && reg_paras[para_regnum-1] != nargs)

and

> + while (type
> + && can_dereference (type))

You probably want to join the two lines in one. gdb_indent.sh, our
automatic indentation program would (though no one uses it, it makes
pretty bad choices sometimes). I think it'd make the code a little
easier to read too.

> diff --git a/include/elf/dwarf2.h b/include/elf/dwarf2.h
> index a7448dc..efa786e 100644
> --- a/include/elf/dwarf2.h
> +++ b/include/elf/dwarf2.h
> @@ -662,7 +662,8 @@ enum dwarf_calling_convention
> DW_CC_normal = 0x1,
> DW_CC_program = 0x2,
> DW_CC_nocall = 0x3,
> - DW_CC_GNU_renesas_sh = 0x40
> + DW_CC_GNU_renesas_sh = 0x40,
> + DW_CC_GNU_borland_fastcall_i386 = 0x41

This part is maintained by binutils, I believe. You'll need
to ask them for approval of this change.

--
Joel