projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make MSYMBOL_VALUE_ADDRESS an rvalue
[deliverable/binutils-gdb.git]
/
gdb
/
jit.c
diff --git
a/gdb/jit.c
b/gdb/jit.c
index ecf7317a13170bd4685d4ff682db9f60030d6e25..01002534f09030453063c4ff6a9a9f10b0f6f44c 100644
(file)
--- a/
gdb/jit.c
+++ b/
gdb/jit.c
@@
-1,6
+1,6
@@
/* Handle JIT code generation in the inferior for GDB, the GNU Debugger.
/* Handle JIT code generation in the inferior for GDB, the GNU Debugger.
- Copyright (C) 2009-201
3
Free Software Foundation, Inc.
+ Copyright (C) 2009-201
4
Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-37,7
+37,7
@@
#include "symtab.h"
#include "target.h"
#include "gdb-dlfcn.h"
#include "symtab.h"
#include "target.h"
#include "gdb-dlfcn.h"
-#include
"gdb_stat.h"
+#include
<sys/stat.h>
#include "exceptions.h"
#include "gdb_bfd.h"
#include "exceptions.h"
#include "gdb_bfd.h"
@@
-90,7
+90,9
@@
static int
mem_bfd_iovec_close (struct bfd *abfd, void *stream)
{
xfree (stream);
mem_bfd_iovec_close (struct bfd *abfd, void *stream)
{
xfree (stream);
- return 1;
+
+ /* Zero means success. */
+ return 0;
}
/* For reading the file, we just need to pass through to target_read_memory and
}
/* For reading the file, we just need to pass through to target_read_memory and
@@
-187,7
+189,7
@@
jit_reader_load (const char *file_name)
if (funcs->reader_version != GDB_READER_INTERFACE_VERSION)
error (_("Reader version does not match GDB version."));
if (funcs->reader_version != GDB_READER_INTERFACE_VERSION)
error (_("Reader version does not match GDB version."));
- new_reader = X
ZALLOC
(struct jit_reader);
+ new_reader = X
CNEW
(struct jit_reader);
new_reader->functions = funcs;
new_reader->handle = so;
new_reader->functions = funcs;
new_reader->handle = so;
@@
-212,7
+214,7
@@
jit_reader_load_command (char *args, int from_tty)
if (IS_ABSOLUTE_PATH (args))
so_name = xstrdup (args);
else
if (IS_ABSOLUTE_PATH (args))
so_name = xstrdup (args);
else
- so_name = xstrprintf ("%s%s%s",
SLASH_STRING, jit_reader_dir
, args);
+ so_name = xstrprintf ("%s%s%s",
jit_reader_dir, SLASH_STRING
, args);
prev_cleanup = make_cleanup (xfree, so_name);
loaded_jit_reader = jit_reader_load (so_name);
prev_cleanup = make_cleanup (xfree, so_name);
loaded_jit_reader = jit_reader_load (so_name);
@@
-286,7
+288,7
@@
get_jit_objfile_data (struct objfile *objf)
objf_data = objfile_data (objf, jit_objfile_data);
if (objf_data == NULL)
{
objf_data = objfile_data (objf, jit_objfile_data);
if (objf_data == NULL)
{
- objf_data = X
ZALLOC
(struct jit_objfile_data);
+ objf_data = X
CNEW
(struct jit_objfile_data);
set_objfile_data (objf, jit_objfile_data, objf_data);
}
set_objfile_data (objf, jit_objfile_data, objf_data);
}
@@
-316,7
+318,7
@@
get_jit_program_space_data (void)
ps_data = program_space_data (current_program_space, jit_program_space_data);
if (ps_data == NULL)
{
ps_data = program_space_data (current_program_space, jit_program_space_data);
if (ps_data == NULL)
{
- ps_data = X
ZALLOC
(struct jit_program_space_data);
+ ps_data = X
CNEW
(struct jit_program_space_data);
set_program_space_data (current_program_space, jit_program_space_data,
ps_data);
}
set_program_space_data (current_program_space, jit_program_space_data,
ps_data);
}
@@
-355,7
+357,7
@@
jit_read_descriptor (struct gdbarch *gdbarch,
if (jit_debug)
fprintf_unfiltered (gdb_stdlog,
"jit_read_descriptor, descriptor_addr = %s\n",
if (jit_debug)
fprintf_unfiltered (gdb_stdlog,
"jit_read_descriptor, descriptor_addr = %s\n",
- paddress (gdbarch, SYMBOL_VALUE_ADDRESS (objf_data->descriptor)));
+ paddress (gdbarch,
M
SYMBOL_VALUE_ADDRESS (objf_data->descriptor)));
/* Figure out how big the descriptor is on the remote and how to read it. */
ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
/* Figure out how big the descriptor is on the remote and how to read it. */
ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
@@
-364,7
+366,7
@@
jit_read_descriptor (struct gdbarch *gdbarch,
desc_buf = alloca (desc_size);
/* Read the descriptor. */
desc_buf = alloca (desc_size);
/* Read the descriptor. */
- err = target_read_memory (SYMBOL_VALUE_ADDRESS (objf_data->descriptor),
+ err = target_read_memory (
M
SYMBOL_VALUE_ADDRESS (objf_data->descriptor),
desc_buf, desc_size);
if (err)
{
desc_buf, desc_size);
if (err)
{
@@
-502,7
+504,7
@@
jit_object_open_impl (struct gdb_symbol_callbacks *cb)
/* CB is not required right now, but sometime in the future we might
need a handle to it, and we'd like to do that without breaking
the ABI. */
/* CB is not required right now, but sometime in the future we might
need a handle to it, and we'd like to do that without breaking
the ABI. */
- return X
ZALLOC
(struct gdb_object);
+ return X
CNEW
(struct gdb_object);
}
/* Readers call into this function to open a new gdb_symtab, which,
}
/* Readers call into this function to open a new gdb_symtab, which,
@@
-517,7
+519,7
@@
jit_symtab_open_impl (struct gdb_symbol_callbacks *cb,
/* CB stays unused. See comment in jit_object_open_impl. */
/* CB stays unused. See comment in jit_object_open_impl. */
- ret = X
ZALLOC
(struct gdb_symtab);
+ ret = X
CNEW
(struct gdb_symtab);
ret->file_name = file_name ? xstrdup (file_name) : xstrdup ("");
ret->next = object->symtabs;
object->symtabs = ret;
ret->file_name = file_name ? xstrdup (file_name) : xstrdup ("");
ret->next = object->symtabs;
object->symtabs = ret;
@@
-555,7
+557,7
@@
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_symtab *symtab, struct gdb_block *parent,
GDB_CORE_ADDR begin, GDB_CORE_ADDR end, const char *name)
{
- struct gdb_block *block = X
ZALLOC
(struct gdb_block);
+ struct gdb_block *block = X
CNEW
(struct gdb_block);
block->next = symtab->blocks;
block->begin = (CORE_ADDR) begin;
block->next = symtab->blocks;
block->begin = (CORE_ADDR) begin;
@@
-663,7
+665,7
@@
finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
/* (begin, end) will contain the PC range this entire blockvector
spans. */
/* (begin, end) will contain the PC range this entire blockvector
spans. */
- s
ymtab->primary = 1
;
+ s
et_symtab_primary (symtab, 1)
;
BLOCKVECTOR_MAP (symtab->blockvector) = NULL;
begin = stab->blocks->begin;
end = stab->blocks->end;
BLOCKVECTOR_MAP (symtab->blockvector) = NULL;
begin = stab->blocks->begin;
end = stab->blocks->end;
@@
-677,8
+679,7
@@
finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
i--, gdb_block_iter = gdb_block_iter->next)
{
struct block *new_block = allocate_block (&objfile->objfile_obstack);
i--, gdb_block_iter = gdb_block_iter->next)
{
struct block *new_block = allocate_block (&objfile->objfile_obstack);
- struct symbol *block_name = obstack_alloc (&objfile->objfile_obstack,
- sizeof (struct symbol));
+ struct symbol *block_name = allocate_symbol (objfile);
struct type *block_type = arch_type (get_objfile_arch (objfile),
TYPE_CODE_VOID,
1,
struct type *block_type = arch_type (get_objfile_arch (objfile),
TYPE_CODE_VOID,
1,
@@
-691,9
+692,8
@@
finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
BLOCK_END (new_block) = (CORE_ADDR) gdb_block_iter->end;
/* The name. */
BLOCK_END (new_block) = (CORE_ADDR) gdb_block_iter->end;
/* The name. */
- memset (block_name, 0, sizeof (struct symbol));
SYMBOL_DOMAIN (block_name) = VAR_DOMAIN;
SYMBOL_DOMAIN (block_name) = VAR_DOMAIN;
- SYMBOL_
CLASS
(block_name) = LOC_BLOCK;
+ SYMBOL_
ACLASS_INDEX
(block_name) = LOC_BLOCK;
SYMBOL_SYMTAB (block_name) = symtab;
SYMBOL_TYPE (block_name) = lookup_function_type (block_type);
SYMBOL_BLOCK_VALUE (block_name) = new_block;
SYMBOL_SYMTAB (block_name) = symtab;
SYMBOL_TYPE (block_name) = lookup_function_type (block_type);
SYMBOL_BLOCK_VALUE (block_name) = new_block;
@@
-785,13
+785,12
@@
jit_object_close_impl (struct gdb_symbol_callbacks *cb,
priv_data = cb->priv_data;
priv_data = cb->priv_data;
- objfile = allocate_objfile (NULL, 0);
- objfile->gdbarch = target_gdbarch ();
+ objfile = allocate_objfile (NULL, "<< JIT compiled code >>",
+ OBJF_NOT_FILENAME);
+ objfile->per_bfd->gdbarch = target_gdbarch ();
terminate_minimal_symbol_table (objfile);
terminate_minimal_symbol_table (objfile);
- objfile->name = "<< JIT compiled code >>";
-
j = NULL;
for (i = obj->symtabs; i; i = j)
{
j = NULL;
for (i = obj->symtabs; i; i = j)
{
@@
-923,10
+922,12
@@
JITed symbol file is not an object file, ignoring it.\n"));
sai->other[i].sectindex = sec->index;
++i;
}
sai->other[i].sectindex = sec->index;
++i;
}
+ sai->num_sections = i;
/* This call does not take ownership of SAI. */
make_cleanup_bfd_unref (nbfd);
/* This call does not take ownership of SAI. */
make_cleanup_bfd_unref (nbfd);
- objfile = symbol_file_add_from_bfd (nbfd, 0, sai, OBJF_SHARED, NULL);
+ objfile = symbol_file_add_from_bfd (nbfd, bfd_get_filename (nbfd), 0, sai,
+ OBJF_SHARED | OBJF_NOT_FILENAME, NULL);
do_cleanups (old_cleanups);
add_objfile_entry (objfile, entry_addr);
do_cleanups (old_cleanups);
add_objfile_entry (objfile, entry_addr);
@@
-1014,8
+1015,8
@@
static int
jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
struct jit_program_space_data *ps_data)
{
jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
struct jit_program_space_data *ps_data)
{
- struct
minimal_symbol *reg_symbol, *desc
_symbol;
- struct
objfile *objf
;
+ struct
bound_minimal_symbol reg
_symbol;
+ struct
minimal_symbol *desc_symbol
;
struct jit_objfile_data *objf_data;
CORE_ADDR addr;
struct jit_objfile_data *objf_data;
CORE_ADDR addr;
@@
-1023,24
+1024,26
@@
jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
{
/* Lookup the registration symbol. If it is missing, then we
assume we are not attached to a JIT. */
{
/* Lookup the registration symbol. If it is missing, then we
assume we are not attached to a JIT. */
- reg_symbol = lookup_minimal_symbol_and_objfile (jit_break_name, &objf);
- if (reg_symbol == NULL || SYMBOL_VALUE_ADDRESS (reg_symbol) == 0)
+ reg_symbol = lookup_minimal_symbol_and_objfile (jit_break_name);
+ if (reg_symbol.minsym == NULL
+ || MSYMBOL_VALUE_ADDRESS (reg_symbol.minsym) == 0)
return 1;
return 1;
- desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL, objf);
- if (desc_symbol == NULL || SYMBOL_VALUE_ADDRESS (desc_symbol) == 0)
+ desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL,
+ reg_symbol.objfile);
+ if (desc_symbol == NULL || MSYMBOL_VALUE_ADDRESS (desc_symbol) == 0)
return 1;
return 1;
- objf_data = get_jit_objfile_data (
objf
);
- objf_data->register_code = reg_symbol;
+ objf_data = get_jit_objfile_data (
reg_symbol.objfile
);
+ objf_data->register_code = reg_symbol
.minsym
;
objf_data->descriptor = desc_symbol;
objf_data->descriptor = desc_symbol;
- ps_data->objfile =
objf
;
+ ps_data->objfile =
reg_symbol.objfile
;
}
else
objf_data = get_jit_objfile_data (ps_data->objfile);
}
else
objf_data = get_jit_objfile_data (ps_data->objfile);
- addr = SYMBOL_VALUE_ADDRESS (objf_data->register_code);
+ addr =
M
SYMBOL_VALUE_ADDRESS (objf_data->register_code);
if (jit_debug)
fprintf_unfiltered (gdb_stdlog,
if (jit_debug)
fprintf_unfiltered (gdb_stdlog,
@@
-1178,11
+1181,11
@@
jit_frame_sniffer (const struct frame_unwind *self,
gdb_assert (!*cache);
gdb_assert (!*cache);
- *cache = X
ZALLOC
(struct jit_unwind_private);
+ *cache = X
CNEW
(struct jit_unwind_private);
priv_data = *cache;
priv_data->registers =
priv_data = *cache;
priv_data->registers =
- XC
ALLOC (gdbarch_num_regs (get_frame_arch (this_frame)),
-
struct gdb_reg_value *
);
+ XC
NEWVEC (struct gdb_reg_value *,
+
gdbarch_num_regs (get_frame_arch (this_frame))
);
priv_data->this_frame = this_frame;
callbacks.priv_data = priv_data;
priv_data->this_frame = this_frame;
callbacks.priv_data = priv_data;
This page took
0.027077 seconds
and
4
git commands to generate.