This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 4/7] Use the loaded reader.


>>>>> "Sanjoy" == Sanjoy Das <sanjoy@playingwithpointers.com> writes:

Sanjoy> Invoke the loaded JIT debug info reader to parse the registered symbol
Sanjoy> files.

Thanks.

Sanjoy> +/* Remember a mapping from entry_addr to objfile.  */
Sanjoy> +static void
Sanjoy> +add_objfile_entry (struct objfile *objfile, CORE_ADDR entry)
Sanjoy> +{
Sanjoy> +  CORE_ADDR *entry_addr_ptr;
Sanjoy> +
Sanjoy> +  entry_addr_ptr = xmalloc (sizeof (CORE_ADDR));
Sanjoy> +  *entry_addr_ptr = entry;
Sanjoy> +  set_objfile_data (objfile, jit_objfile_data, entry_addr_ptr);
Sanjoy> +}

Sanjoy> +/* Returns true if the block corrensponding to old should be placed

Typo, "corresponding".

Sanjoy> +static struct gdb_block *
Sanjoy> +jit_block_open_impl (struct gdb_symbol_callbacks *cb, struct gdb_symtab *symtab,

This line is too long.

Every new function should have some kind of introductory comment.  There
should be a blank line between the comment and the start of the
function.

Sanjoy>  static void
Sanjoy> -jit_register_code (struct gdbarch *gdbarch,
Sanjoy> -		   CORE_ADDR entry_addr, struct jit_code_entry *code_entry)
Sanjoy> +jit_symtab_line_mapping_add_impl (struct gdb_symbol_callbacks *cb,
Sanjoy> +                                  struct gdb_symtab *stab, int nlines,
Sanjoy> +                                  struct gdb_line_mapping *map)
Sanjoy> +{
Sanjoy> +  int i;
Sanjoy> +  if (!nlines)

Blank line between declarations and code.

For safety this check should probably be 'if (nlines < 1)'.

Sanjoy> +  stab->linetable = xmalloc (sizeof (struct linetable) + (nlines - 1) *
Sanjoy> +                             sizeof (struct linetable_entry));

Break before "*", not after it.  This is a GNU style thing.

Personally I'd prefer a break before the "+" instead.

Sanjoy> +static void
Sanjoy> +jit_symtab_close_impl (struct gdb_symbol_callbacks *cb, struct gdb_symtab *stab)

Line too long.

Sanjoy> +  int actual_nblocks = FIRST_LOCAL_BLOCK + stab->nblocks, i, blockvector_size;

Line too long.

Sanjoy> +      int size = (stab->linetable->nitems - 1) *
Sanjoy> +        sizeof (struct linetable_entry) + sizeof (struct linetable);

Line breaks before operators.

According to GNU style you have to parenthesize the RHS here, and
further indent the second line.

Sanjoy> +  blockvector_size = (sizeof (struct blockvector) +
Sanjoy> +                      (actual_nblocks - 1) * sizeof (struct block *));

... like this :-)

Sanjoy> +      block_name->symtab = symtab;

You can use SYMBOL_SYMTAB here.

Sanjoy> +      block_name->ginfo.name = obstack_alloc (&objfile->objfile_obstack, 1 +
Sanjoy> +                                              strlen (gdb_block_iter->name));

I think it needs to be strlen() + 1 -- but you can just use obsavestring
instead.

Sanjoy> +/* Convert OBJ to a proper objfile. */
Sanjoy> +static void
Sanjoy> +jit_object_close_impl (struct gdb_symbol_callbacks *cb, struct gdb_object *obj)

Line too long.

Sanjoy> +  objfile->msymbols = obstack_alloc (&objfile->objfile_obstack,
Sanjoy> +                                     sizeof (struct minimal_symbol));
Sanjoy> +  objfile->msymbols[0].ginfo.name = NULL;
Sanjoy> +  objfile->msymbols[0].ginfo.value.address = 0;

A little surprising maybe, but I guess it is ok.

Sanjoy> +  objfile->name = xstrdup ("JIT");

You have to xfree the old name first.

Sanjoy>  static void
Sanjoy>  jit_unregister_code (struct objfile *objfile)
Sanjoy>  {
Sanjoy> +  xfree (objfile_data (objfile, jit_objfile_data));
Sanjoy>    free_objfile (objfile);
Sanjoy>  }

I think a better fix for this problem would be to change the
initialization of jit_objfile_data to use register_objfile_data_with_cleanup.

Tom


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]