public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@polymtl.ca>
To: gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@polymtl.ca>
Subject: [PATCH v2 4/5] jit: c++-ify gdb_block
Date: Mon, 16 Dec 2019 03:57:00 -0000	[thread overview]
Message-ID: <20191216033917.2936248-5-simon.marchi@polymtl.ca> (raw)
In-Reply-To: <20191216033917.2936248-1-simon.marchi@polymtl.ca>

Add a constructor to gdb_block, change the name field to be a
gdb::unique_xmalloc_ptr.  This is in preparation for using an
std::forward_list<gdb_block> in the next patch.

gdb/ChangeLog:

	* jit.c (struct gdb_block): Add constructor, initialize
	real_block and next fields.
	<name>: Change type to gdb::unique_xmalloc_ptr.
	(struct gdb_symtab) <~gdb_symtab>: Free blocks with delete.
	(jit_block_open_impl): Allocate gdb_block with new.
	(finalize_symtab): Adjust to gdb::unique_xmalloc_ptr.
---
 gdb/jit.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/gdb/jit.c b/gdb/jit.c
index a731edd870d3..bb6b6bacb5d1 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -429,22 +429,30 @@ jit_read_code_entry (struct gdbarch *gdbarch,
 
 struct gdb_block
 {
+  gdb_block (gdb_block *parent, CORE_ADDR begin, CORE_ADDR end,
+	     const char *name)
+    : parent (parent),
+      begin (begin),
+      end (end),
+      name (name != nullptr ? xstrdup (name) : nullptr)
+  {}
+
   /* gdb_blocks are linked into a tree structure.  Next points to the
      next node at the same depth as this block and parent to the
      parent gdb_block.  */
-  struct gdb_block *next, *parent;
+  struct gdb_block *next = nullptr, *parent;
 
   /* Points to the "real" block that is being built out of this
      instance.  This block will be added to a blockvector, which will
      then be added to a symtab.  */
-  struct block *real_block;
+  struct block *real_block = nullptr;
 
   /* The first and last code address corresponding to this block.  */
   CORE_ADDR begin, end;
 
   /* The name of this block (if any).  If this is non-NULL, the
      FUNCTION symbol symbol is set to this value.  */
-  const char *name;
+  gdb::unique_xmalloc_ptr<char> name;
 };
 
 /* Proxy object for building a symtab.  */
@@ -465,8 +473,7 @@ struct gdb_symtab
          gdb_block_iter = gdb_block_iter_tmp)
       {
         gdb_block_iter_tmp = gdb_block_iter->next;
-        xfree ((void *) gdb_block_iter->name);
-        xfree (gdb_block_iter);
+	delete gdb_block_iter;
       }
   }
 
@@ -574,13 +581,9 @@ jit_block_open_impl (struct gdb_symbol_callbacks *cb,
 		     struct gdb_symtab *symtab, struct gdb_block *parent,
 		     GDB_CORE_ADDR begin, GDB_CORE_ADDR end, const char *name)
 {
-  struct gdb_block *block = XCNEW (struct gdb_block);
+  struct gdb_block *block = new gdb_block (parent, begin, end, name);
 
   block->next = symtab->blocks;
-  block->begin = (CORE_ADDR) begin;
-  block->end = (CORE_ADDR) end;
-  block->name = name ? xstrdup (name) : NULL;
-  block->parent = parent;
 
   /* Ensure that the blocks are inserted in the correct (reverse of
      the order expected by blockvector).  */
@@ -721,7 +724,7 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
       SYMBOL_BLOCK_VALUE (block_name) = new_block;
 
       block_name->name = obstack_strdup (&objfile->objfile_obstack,
-					 gdb_block_iter->name);
+					 gdb_block_iter->name.get ());
 
       BLOCK_FUNCTION (new_block) = block_name;
 
-- 
2.24.1

  parent reply	other threads:[~2019-12-16  3:57 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-16  3:39 [PATCH v2 0/5] Fix and cleanups in jit.c Simon Marchi
2019-12-16  3:39 ` [PATCH v2 1/5] Fix double-free when creating more than one block in JIT debug info reader Simon Marchi
2019-12-16  3:39 ` [PATCH v2 5/5] jit: make gdb_symtab::blocks an std::forward_list Simon Marchi
2019-12-16  3:39 ` [PATCH v2 3/5] jit: make gdb_object::symtabs " Simon Marchi
2019-12-16  3:39 ` [PATCH v2 2/5] jit: c++-ify gdb_symtab Simon Marchi
2019-12-16  3:57 ` Simon Marchi [this message]
2019-12-16 19:27 ` [PATCH v2 0/5] Fix and cleanups in jit.c Pedro Alves
2019-12-16 23:19   ` Simon Marchi
2019-12-17 19:10     ` Pedro Alves
2019-12-17 19:32       ` Simon Marchi

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=20191216033917.2936248-5-simon.marchi@polymtl.ca \
    --to=simon.marchi@polymtl.ca \
    --cc=gdb-patches@sourceware.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).