forked from Imagelibrary/binutils-gdb
2007-07-03 Paul Gilliam <pgilliam@us.ibm.com>
Thiago Bauermann <bauerman@br.ibm.com> Joseph S. Myers <joseph@codesourcery.com> Daniel Jacobowitz <dan@codesourcery.com> gdb/ * remote.c (remote_check_symbols): Use gdbarch_convert_from_func_ptr_addr. * infcall.c (find_function_addr): Handle function descriptors without debugging information. * ppc-linux-tdep.c (ppc_linux_convert_from_func_ptr_addr): Renamed from ppc64_linux_convert_from_func_ptr_addr. Handle -msecure-plt. (ppc_linux_init_abi): Always set convert_from_func_ptr_addr. * solib-svr4.c (solib_break_names): Remove "._dl_debug_state". (bfd_lookup_symbol): Do not take a SECT_FLAGS argument. Always allow SEC_CODE and SEC_DATA. (enable_break): Update calls. Pass current_target to solib_add. Use gdbarch_convert_from_func_ptr_addr. gdb/gdbserver/ * remote-utils.c (look_up_one_symbol): Handle 'm' packets.
This commit is contained in:
@@ -222,8 +222,24 @@ find_function_addr (struct value *function, struct type **retval_type)
|
||||
if (TYPE_LENGTH (ftype) == 1)
|
||||
funaddr = value_as_address (value_addr (function));
|
||||
else
|
||||
/* Handle integer used as address of a function. */
|
||||
funaddr = (CORE_ADDR) value_as_long (function);
|
||||
{
|
||||
/* Handle function descriptors lacking debug info. */
|
||||
int found_descriptor = 0;
|
||||
if (VALUE_LVAL (function) == lval_memory)
|
||||
{
|
||||
CORE_ADDR nfunaddr;
|
||||
funaddr = value_as_address (value_addr (function));
|
||||
nfunaddr = funaddr;
|
||||
funaddr = gdbarch_convert_from_func_ptr_addr (current_gdbarch,
|
||||
funaddr,
|
||||
¤t_target);
|
||||
if (funaddr != nfunaddr)
|
||||
found_descriptor = 1;
|
||||
}
|
||||
if (!found_descriptor)
|
||||
/* Handle integer used as address of a function. */
|
||||
funaddr = (CORE_ADDR) value_as_long (function);
|
||||
}
|
||||
|
||||
value_type = builtin_type_int;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user