This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Set calling convention of methods



On 30 Sep 2009, at 02:02, Joel Brobecker wrote:


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.

It will already be active for regular functions/procedures, because the DWARF reader does propagate the calling convention in that case (as it was already done for the DW_CC_GNU_renesas_sh calling convention). It simply won't be taken into account yet for methods (because that requires a patch to the DWARF reader), that will indeed require a further patch.


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?

Yes, it was the use of an unnamed constant: http://sourceware.org/ml/gdb-patches/2009-04/msg00196.html


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

We could include the dwarf2.h header in the stabs reader and set the calling convention to DW_CC_normal in all cases.


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.

Ok, will do.


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.

Tom said it came from gcc (http://sourceware.org/ml/gdb-patches/2009-04/msg00063.html ) and I did submit a patch there: http://gcc.gnu.org/ml/gcc-patches/2009-04/msg00301.html . I did not get any reaction to that patch (and I guess it's not been applied).


Later on, Tom clarified that he thought that the gdb and gcc versions of dwarf2.h should actually be merged into a single copy, but that I shouldn't worry about this since the divergence started before my patch: http://sourceware.org/ml/gdb-patches/2009-04/msg00099.html


Jonas



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]