Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Raunaq 12 <raunaq12@in.ibm.com>
To: Pedro Alves <palves@redhat.com>
Cc: gdb-patches@sourceware.org,
	Mark Kettenis <mark.kettenis@xs4all.nl>,
	       tromey@redhat.com
Subject: Re: [PATCH 2/5] powerpc64-aix processing xlC generated line table
Date: Wed, 31 Jul 2013 09:57:00 -0000	[thread overview]
Message-ID: <OF668B9A7A.5414653D-ON65257BB9.00351B5A-65257BB9.003675D7@in.ibm.com> (raw)
In-Reply-To: <51F69F1E.40808@redhat.com>

> > +          for (jj = 0; jj < lineTb->nitems; jj++)
> > +            {
> > +              if (lineTb->item[jj].line == 0 && (lineTb->item[jj].pc
> > +             != lineTb->item[jj + 1].pc))
> > +                    lineTb->item[jj].line = lineTb->item[jj + 1].line;
> > +            }
>
> Seems to me this duplicate code could/should be factored out to a helper
> function.

Agreed. Implementation looks much cleaner after using a function for the
duplicate code. Here is the modified patch and changelog.
---
ChangeLog :-
* xcoffread.c (modify_xlc_linenos): New function to modify xlc
generated linetables.
(process_linenos): make calls to the 'modify_xlc_linenos' to correctly
process linenos is case of xlc compiled binaries.
---
Index: ./gdb/xcoffread.c
===================================================================
--- ./gdb.orig/xcoffread.c
+++ ./gdb/xcoffread.c
@@ -241,6 +241,8 @@

 static struct linetable *arrange_linetable (struct linetable *);

+static struct linetable *modify_xlc_linenos (struct linetable *);
+
 static void record_include_end (struct coff_symbol *);

 static void process_linenos (CORE_ADDR, CORE_ADDR);
@@ -589,6 +591,24 @@
     }
 }

+/* xlc compiled binaries have one less entry in the line table.
+   So the function entry lines marked as line number equal to 0
+   will be retained in the line table with line numbers equal
+   to its succeeding line table entry.	*/
+
+static struct linetable *
+modify_xlc_linenos ( struct linetable *lineTb )
+{
+ int jj;
+ for (jj = 0; jj < lineTb->nitems; jj++)
+  {
+   if (lineTb -> item[jj].line == 0 && (lineTb -> item[jj].pc
+                                    != lineTb->item[jj + 1].pc))
+        lineTb->item[jj].line = lineTb->item[jj+1].line;
+  }
+ return lineTb;
+}
+
 /* Global variable to pass the psymtab down to all the routines involved
    in psymtab to symtab processing.  */
 static struct partial_symtab *this_symtab_psymtab;
@@ -698,10 +718,14 @@

       lv = main_subfile.line_vector;

+      /* Add extra line entry in case of xlc compiled binaries.	*/
+
+      lineTb = modify_xlc_linenos (lv);
+
       /* Line numbers are not necessarily ordered.  xlc compilation will
          put static function to the end.  */

-      lineTb = arrange_linetable (lv);
+      lineTb = arrange_linetable (lineTb);
       if (lv == lineTb)
 	{
 	  current_subfile->line_vector = (struct linetable *)
@@ -730,10 +754,14 @@

 	  lv = (inclTable[ii].subfile)->line_vector;

+          /* Add extra line entry in case of xlc compiled binaries */
+
+          lineTb = modify_xlc_linenos (lv);
+
 	  /* Line numbers are not necessarily ordered.  xlc compilation will
 	     put static function to the end.  */

-	  lineTb = arrange_linetable (lv);
+	  lineTb = arrange_linetable (lineTb);

 	  push_subfile ();

---
this is ok?
Note :- without this patch we are not able to break into functions at the
entry
point and we are not able to list functions by their name. eg :- list main

Regards,
Raunaq


  reply	other threads:[~2013-07-31  9:57 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-29  6:15 Raunaq 12
2013-07-29 16:58 ` Pedro Alves
2013-07-31  9:57   ` Raunaq 12 [this message]
     [not found]   ` <OF668B9A7A.5414653D-ON65257BB9.00351B5A-65257BB9.003675D7@LocalDomain>
2013-07-31 10:03     ` Raunaq 12
     [not found] <OF1EDEDB55.9DF54135-ON65257BBA.003B42B8-65257BBA.003D0F4D@LocalDomain>
2013-08-07 11:37 ` Raunaq 12
2013-08-07 15:23   ` Ulrich Weigand
2013-08-08 12:04     ` Raunaq 12
2013-08-08 22:01       ` Ulrich Weigand
2013-08-12  7:50         ` Raunaq 12
2013-08-26 15:30           ` Ulrich Weigand
  -- strict thread matches above, loose matches on Subject: below --
2013-08-01 11:07 Raunaq 12
2013-07-24 12:37 Raunaq 12

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=OF668B9A7A.5414653D-ON65257BB9.00351B5A-65257BB9.003675D7@in.ibm.com \
    --to=raunaq12@in.ibm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=mark.kettenis@xs4all.nl \
    --cc=palves@redhat.com \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox