aboutsummaryrefslogtreecommitdiff
path: root/gdb/remote.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2007-07-03 15:58:42 +0000
committerDaniel Jacobowitz <drow@false.org>2007-07-03 15:58:42 +0000
commit2bbe3cc10734408c859d08bae15039c6e7ccecf9 (patch)
treeabcdcf2e97d3725a752f8a722e5d5caa15059852 /gdb/remote.c
parent9f43d28cb0b3e1e8fa7c4017c81b9ef81843ab4d (diff)
downloadgdb-2bbe3cc10734408c859d08bae15039c6e7ccecf9.zip
gdb-2bbe3cc10734408c859d08bae15039c6e7ccecf9.tar.gz
gdb-2bbe3cc10734408c859d08bae15039c6e7ccecf9.tar.bz2
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.
Diffstat (limited to 'gdb/remote.c')
-rw-r--r--gdb/remote.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/gdb/remote.c b/gdb/remote.c
index 050930a..9021d5a 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -2259,9 +2259,19 @@ remote_check_symbols (struct objfile *objfile)
if (sym == NULL)
xsnprintf (msg, get_remote_packet_size (), "qSymbol::%s", &reply[8]);
else
- xsnprintf (msg, get_remote_packet_size (), "qSymbol:%s:%s",
- paddr_nz (SYMBOL_VALUE_ADDRESS (sym)),
- &reply[8]);
+ {
+ CORE_ADDR sym_addr = SYMBOL_VALUE_ADDRESS (sym);
+
+ /* If this is a function address, return the start of code
+ instead of any data function descriptor. */
+ sym_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch,
+ sym_addr,
+ &current_target);
+
+ xsnprintf (msg, get_remote_packet_size (), "qSymbol:%s:%s",
+ paddr_nz (sym_addr), &reply[8]);
+ }
+
putpkt (msg);
getpkt (&rs->buf, &rs->buf_size, 0);
reply = rs->buf;