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:
Daniel Jacobowitz
2007-07-03 15:58:42 +00:00
parent 9f43d28cb0
commit 2bbe3cc107
7 changed files with 159 additions and 68 deletions

View File

@@ -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,
&current_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;
}