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
next prev 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).