From patchwork Wed May 27 19:59:36 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Evans X-Patchwork-Id: 6948 Received: (qmail 128568 invoked by alias); 27 May 2015 19:59:40 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 128558 invoked by uid 89); 27 May 2015 19:59:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL, BAYES_20, RCVD_IN_DNSWL_LOW, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mail-pa0-f73.google.com Received: from mail-pa0-f73.google.com (HELO mail-pa0-f73.google.com) (209.85.220.73) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 27 May 2015 19:59:38 +0000 Received: by pabli10 with SMTP id li10so662900pab.0 for ; Wed, 27 May 2015 12:59:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:message-id:date:subject:from:to:cc :content-type; bh=sPRMNRYdZKXnKHnrS/khevRPuqqRtlWX8tCQ0wEAX9Y=; b=l5aXr4VEOiubgZ9yo0A/dKNkW0sMk7mRf1od2vDZIWSBQrQSiS0J0yZluA7Rpo4tf6 Tnj9vQc5Wx+jkLbhY6WeeDWVYoxtbKkoWa4EF/E/A5U6MkUbDFJ3f/6mHMbzc+XvpO0X fPulAiV7C8EMBJbrJ+XiUHvtgyCDXc5PuPl426TOe1CQmTdxyZXpXCrcQcmblG+T9Git L/K7btZ6YGqmogJUU+M2+feCWbR6PBAe41KLPo5gTU8MDgEaMz0qjWv49ZH8CpYRa7V7 taaguecVfNryutzox+TzaQ0/1yYwk8pSBA0+qWzbLHqbSC29YIZRzJvNrEKYBb9v+DE9 rUmw== X-Gm-Message-State: ALoCoQmGrRgfp/dAUFBW1hxMUi5/jIP2xMHaumGhsDccp5ocXVIB67jlQS8hv08TGcTelYCkADeY MIME-Version: 1.0 X-Received: by 10.66.164.73 with SMTP id yo9mr42385132pab.1.1432756776751; Wed, 27 May 2015 12:59:36 -0700 (PDT) Message-ID: <047d7bacbd5aba7fa5051715ae7f@google.com> Date: Wed, 27 May 2015 19:59:36 +0000 Subject: Re: [PATCH 2/6] DWARF Two Level Line Tables: dwarf2_line_debug From: Doug Evans To: Eli Zaretskii Cc: gdb-patches@sourceware.org X-IsSubscribed: yes Eli Zaretskii writes: > > Date: Tue, 12 May 2015 13:39:27 -0700 > > From: Doug Evans > > Cc: gdb-patches , Cary Coutant > > > > >> A value of zero turns off the display. > > >> @item show debug dwarf2-die > > >> Show the current state of DWARF2 DIE debugging. > > >> +@item set debug dwarf2-line > > >> +@cindex DWARF2 Line Tables > > >> +Turns on or off display of debugging messages related to reading > > >> +DWARF line tables. The default is 0 (off). > > >> +A value of 1 provides basic information. > > >> +A value greater than 1 provides more verbose information. > > >> +@item show debug dwarf2-line > > >> +Show the current state of DWARF2 line table debugging. > > > > > > This is also OK, but how about using "DWARF2" for consistency at least > > > in this fragment? > > > > Actually, I'd rather use "DWARF". > > I don't mind, as long as it's consistent. > > > Agreed. Where the version doesn't matter I propose using "DWARF". > > (as in the above) > > The above used both DWARF and DWARF2. Here's what I pushed. 2015-05-27 Doug Evans * NEWS: Mention "set debug dwarf-line". * dwarf2read.c (dwarf_line_debug): New static global. (add_include_dir): Add debug dwarf-line support. (add_file_name, dwarf_record_line, dwarf_finish_line): Ditto. (_initialize_dwarf2_read): New parameter "debug dwarf-line". doc/ * gdb.texinfo (Debugging Output): Mention set/show debug dwarf-line. @@ -17541,8 +17560,18 @@ static void dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile, CORE_ADDR address, record_line_ftype p_record_line) { - if (subfile != NULL) - dwarf_record_line (gdbarch, subfile, 0, address, p_record_line); + if (subfile == NULL) + return; + + if (dwarf_line_debug) + { + fprintf_unfiltered (gdb_stdlog, + "Finishing current line, file %s, address %s\n", + lbasename (subfile->name), + paddress (gdbarch, address)); + } + + dwarf_record_line (gdbarch, subfile, 0, address, p_record_line); } /* Subroutine of dwarf_decode_lines to simplify it. @@ -23321,6 +23350,16 @@ The value is the maximum depth to print."), NULL, &setdebuglist, &showdebuglist); + add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\ +Set debugging of the dwarf line reader."), _("\ +Show debugging of the dwarf line reader."), _("\ +When enabled (non-zero), line number entries are dumped as they are read in.\n\ +A value of 1 (one) provides basic information.\n\ +A value greater than 1 provides more verbose information."), + NULL, + NULL, + &setdebuglist, &showdebuglist); + add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\ Set cross-checking of \"physname\" code against demangler."), _("\ Show cross-checking of \"physname\" code against demangler."), _("\ diff --git a/gdb/NEWS b/gdb/NEWS index 4c4e28c..bbfb55d 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -112,6 +112,10 @@ maint set dwarf max-cache-age maint show dwarf max-cache-age Renamed from "maint show dwarf2 max-cache-age". +set debug dwarf-line +show debug dwarf-line + Control display of debugging info regarding DWARF line processing. + set max-completions show max-completions Set the maximum number of candidates to be considered during diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 6cc6c7e..9ea846a 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -23417,6 +23417,14 @@ The value is the number of nesting levels to print. A value of zero turns off the display. @item show debug dwarf-die Show the current state of DWARF DIE debugging. +@item set debug dwarf-line +@cindex DWARF Line Tables +Turns on or off display of debugging messages related to reading +DWARF line tables. The default is 0 (off). +A value of 1 provides basic information. +A value greater than 1 provides more verbose information. +@item show debug dwarf-line +Show the current state of DWARF line table debugging. @item set debug dwarf-read @cindex DWARF Reading Turns on or off display of debugging messages related to reading diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 8e30ff3..e6d6b30 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -84,6 +84,9 @@ static unsigned int dwarf_read_debug = 0; /* When non-zero, dump DIEs after they are read in. */ static unsigned int dwarf_die_debug = 0; +/* When non-zero, dump line number entries as they are read in. */ +static unsigned int dwarf_line_debug = 0; + /* When non-zero, cross-check physname against demangler. */ static int check_physname = 0; @@ -17152,6 +17155,10 @@ free_line_header_voidp (void *arg) static void add_include_dir (struct line_header *lh, const char *include_dir) { + if (dwarf_line_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n", + lh->num_include_dirs + 1, include_dir); + /* Grow the array if necessary. */ if (lh->include_dirs_size == 0) { @@ -17181,6 +17188,10 @@ add_file_name (struct line_header *lh, { struct file_entry *fe; + if (dwarf_line_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n", + lh->num_file_names + 1, name); + /* Grow the array if necessary. */ if (lh->file_names_size == 0) { @@ -17529,6 +17540,14 @@ dwarf_record_line (struct gdbarch *gdbarch, struct subfile *subfile, { CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address); + if (dwarf_line_debug) + { + fprintf_unfiltered (gdb_stdlog, + "Recording line %u, file %s, address %s\n", + line, lbasename (subfile->name), + paddress (gdbarch, address)); + } + (*p_record_line) (subfile, line, addr); }