OSDN Git Service

gdb: objc-lang: check symbol name before accessing memory
authorvapier <vapier>
Mon, 19 Apr 2010 19:51:38 +0000 (19:51 +0000)
committervapier <vapier>
Mon, 19 Apr 2010 19:51:38 +0000 (19:51 +0000)
commit23b39b365ebb64103a619580c0763d1f76a2f722
tree870b1408ea29c537840adb965486f5af6380e08b
parent0a54bd6ca974cf9acb11d72395019a03b327d019
gdb: objc-lang: check symbol name before accessing memory

The current ObjC logic will check both the symbol name and the target
address space when trying to locate an appropriate selector.  The problem
is that first the target address space is checked before the symbol name.
This may lead to a lot of unnecessary host<->target transactions when
dealing with a non-OjbC target that does use function descriptors to
describe functions as every symbol will have its FD read just to have the
result thrown away with non-matching symbol names.

It also may lead to problems when a non-FD symbol is found that points near
the end of the address space as the target will throw up a memory_error().
One such example are symbols that are not functions, smaller than a FD,
and are the last valid location.  Obviously treating it as a larger data
struct can cause memory overflows.

So to speed things up and not screw over such targets, check the symbol
name (which we already have locally) first before attempting to read the
function's descriptor.  This fixes breakpoints with Blackfin Linux FDPIC
ELFs, and seems to cause no native regressions on my x86_64/Linux system.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
gdb/ChangeLog
gdb/objc-lang.c