* arch-utils.c (displaced_step_at_entry_point): Do not call
gdbarch_convert_from_func_ptr_addr. * cris-tdep.c: Remove outdated comment. * infcall.c (call_function_by_hand): Do not call gdbarch_convert_from_func_ptr_addr after entry_point_address. * objfiles.c (entry_point_address): Call both gdbarch_convert_from_func_ptr_addr and gdbarch_addr_bits_remove.
This commit is contained in:
parent
d551e57bf7
commit
3612b1927e
5 changed files with 39 additions and 17 deletions
|
@ -1,3 +1,14 @@
|
||||||
|
2009-07-28 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
|
* arch-utils.c (displaced_step_at_entry_point): Do not call
|
||||||
|
gdbarch_convert_from_func_ptr_addr.
|
||||||
|
* cris-tdep.c: Remove outdated comment.
|
||||||
|
* infcall.c (call_function_by_hand): Do not call
|
||||||
|
gdbarch_convert_from_func_ptr_addr after entry_point_address.
|
||||||
|
* objfiles.c (entry_point_address): Call both
|
||||||
|
gdbarch_convert_from_func_ptr_addr and
|
||||||
|
gdbarch_addr_bits_remove.
|
||||||
|
|
||||||
2009-07-28 Aleksandar Ristovski <aristovski@qnx.com>
|
2009-07-28 Aleksandar Ristovski <aristovski@qnx.com>
|
||||||
|
|
||||||
* nto-tdep.c (nto_thread_state_str): New array.
|
* nto-tdep.c (nto_thread_state_str): New array.
|
||||||
|
|
|
@ -76,10 +76,6 @@ displaced_step_at_entry_point (struct gdbarch *gdbarch)
|
||||||
|
|
||||||
addr = entry_point_address ();
|
addr = entry_point_address ();
|
||||||
|
|
||||||
/* Make certain that the address points at real code, and not a
|
|
||||||
function descriptor. */
|
|
||||||
addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, ¤t_target);
|
|
||||||
|
|
||||||
/* Inferior calls also use the entry point as a breakpoint location.
|
/* Inferior calls also use the entry point as a breakpoint location.
|
||||||
We don't want displaced stepping to interfere with those
|
We don't want displaced stepping to interfere with those
|
||||||
breakpoints, so leave space. */
|
breakpoints, so leave space. */
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
#include "regcache.h"
|
#include "regcache.h"
|
||||||
#include "gdb_assert.h"
|
#include "gdb_assert.h"
|
||||||
|
|
||||||
/* To get entry_point_address. */
|
|
||||||
#include "objfiles.h"
|
#include "objfiles.h"
|
||||||
|
|
||||||
#include "solib.h" /* Support for shared libraries. */
|
#include "solib.h" /* Support for shared libraries. */
|
||||||
|
|
|
@ -592,11 +592,6 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
|
||||||
|
|
||||||
real_pc = funaddr;
|
real_pc = funaddr;
|
||||||
dummy_addr = entry_point_address ();
|
dummy_addr = entry_point_address ();
|
||||||
/* Make certain that the address points at real code, and not a
|
|
||||||
function descriptor. */
|
|
||||||
dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch,
|
|
||||||
dummy_addr,
|
|
||||||
¤t_target);
|
|
||||||
/* A call dummy always consists of just a single breakpoint, so
|
/* A call dummy always consists of just a single breakpoint, so
|
||||||
its address is the same as the address of the dummy. */
|
its address is the same as the address of the dummy. */
|
||||||
bp_addr = dummy_addr;
|
bp_addr = dummy_addr;
|
||||||
|
@ -614,14 +609,16 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
|
||||||
sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL);
|
sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL);
|
||||||
real_pc = funaddr;
|
real_pc = funaddr;
|
||||||
if (sym)
|
if (sym)
|
||||||
dummy_addr = SYMBOL_VALUE_ADDRESS (sym);
|
{
|
||||||
|
dummy_addr = SYMBOL_VALUE_ADDRESS (sym);
|
||||||
|
/* Make certain that the address points at real code, and not
|
||||||
|
a function descriptor. */
|
||||||
|
dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch,
|
||||||
|
dummy_addr,
|
||||||
|
¤t_target);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
dummy_addr = entry_point_address ();
|
dummy_addr = entry_point_address ();
|
||||||
/* Make certain that the address points at real code, and not
|
|
||||||
a function descriptor. */
|
|
||||||
dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch,
|
|
||||||
dummy_addr,
|
|
||||||
¤t_target);
|
|
||||||
/* A call dummy always consists of just a single breakpoint,
|
/* A call dummy always consists of just a single breakpoint,
|
||||||
so it's address is the same as the address of the dummy. */
|
so it's address is the same as the address of the dummy. */
|
||||||
bp_addr = dummy_addr;
|
bp_addr = dummy_addr;
|
||||||
|
|
|
@ -279,7 +279,26 @@ init_entry_point_info (struct objfile *objfile)
|
||||||
CORE_ADDR
|
CORE_ADDR
|
||||||
entry_point_address (void)
|
entry_point_address (void)
|
||||||
{
|
{
|
||||||
return symfile_objfile ? symfile_objfile->ei.entry_point : 0;
|
struct gdbarch *gdbarch;
|
||||||
|
CORE_ADDR entry_point;
|
||||||
|
|
||||||
|
if (symfile_objfile == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
gdbarch = get_objfile_arch (symfile_objfile);
|
||||||
|
|
||||||
|
entry_point = symfile_objfile->ei.entry_point;
|
||||||
|
|
||||||
|
/* Make certain that the address points at real code, and not a
|
||||||
|
function descriptor. */
|
||||||
|
entry_point = gdbarch_convert_from_func_ptr_addr (gdbarch, entry_point,
|
||||||
|
¤t_target);
|
||||||
|
|
||||||
|
/* Remove any ISA markers, so that this matches entries in the
|
||||||
|
symbol table. */
|
||||||
|
entry_point = gdbarch_addr_bits_remove (gdbarch, entry_point);
|
||||||
|
|
||||||
|
return entry_point;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the terminating entry of OBJFILE's minimal symbol table.
|
/* Create the terminating entry of OBJFILE's minimal symbol table.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue