jit: c++-ify gdb_block
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.
This commit is contained in:
parent
1b61f46da5
commit
b61121178e
2 changed files with 23 additions and 11 deletions
|
@ -1,3 +1,12 @@
|
|||
2019-12-16 Simon Marchi <simon.marchi@polymtl.ca>
|
||||
|
||||
* 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.
|
||||
|
||||
2019-12-16 Simon Marchi <simon.marchi@polymtl.ca>
|
||||
|
||||
* jit.c: Include forward_list.
|
||||
|
|
25
gdb/jit.c
25
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;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue