public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* gdb on Mac OS bpt implementation question
@ 2011-11-08 23:42 Mick Jordan
  2011-11-09  7:48 ` Tristan Gingold
  2011-11-10 22:19 ` Jason Molenda
  0 siblings, 2 replies; 3+ messages in thread
From: Mick Jordan @ 2011-11-08 23:42 UTC (permalink / raw)
  To: gdb

I'd be grateful if someone could point me to where in the gdb source 
code that Mac OS specific breakpoint setting is done. The problem I am 
trying to resolve is how breakpoints are set in shared libraries, given 
that they are loaded read-only on Mac OS X (assuming the "write a bpt 
instruction" approach). The context for this is a custom debugger we 
have for a Java VM (Maxine) which uses "write a bpt instruction" and 
works fine setting breakpoints in shared library code on Linux and 
Solaris, but not on MacOS (we get access faults trying to write the BPT 
instruction).

Thanks
Mick Jordan

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: gdb on Mac OS bpt implementation question
  2011-11-08 23:42 gdb on Mac OS bpt implementation question Mick Jordan
@ 2011-11-09  7:48 ` Tristan Gingold
  2011-11-10 22:19 ` Jason Molenda
  1 sibling, 0 replies; 3+ messages in thread
From: Tristan Gingold @ 2011-11-09  7:48 UTC (permalink / raw)
  To: Mick Jordan; +Cc: gdb


On Nov 9, 2011, at 12:41 AM, Mick Jordan wrote:

> I'd be grateful if someone could point me to where in the gdb source code that Mac OS specific breakpoint setting is done. The problem I am trying to resolve is how breakpoints are set in shared libraries, given that they are loaded read-only on Mac OS X (assuming the "write a bpt instruction" approach). The context for this is a custom debugger we have for a Java VM (Maxine) which uses "write a bpt instruction" and works fine setting breakpoints in shared library code on Linux and Solaris, but not on MacOS (we get access faults trying to write the BPT instruction).
> 

See darwin-nat.c:darwin_read_write_inferior.

If you want to write to a page, you have to make it writable.

Tristan.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: gdb on Mac OS bpt implementation question
  2011-11-08 23:42 gdb on Mac OS bpt implementation question Mick Jordan
  2011-11-09  7:48 ` Tristan Gingold
@ 2011-11-10 22:19 ` Jason Molenda
  1 sibling, 0 replies; 3+ messages in thread
From: Jason Molenda @ 2011-11-10 22:19 UTC (permalink / raw)
  To: Mick Jordan; +Cc: gdb


On Nov 8, 2011, at 3:41 PM, Mick Jordan wrote:

> I'd be grateful if someone could point me to where in the gdb source code that Mac OS specific breakpoint setting is done. The problem I am trying to resolve is how breakpoints are set in shared libraries, given that they are loaded read-only on Mac OS X (assuming the "write a bpt instruction" approach).


For what it's worth, two other implementations that may be worth consulting on issues like this are the Apple fork of gdb, downloadable here
	http://opensource.apple.com/
although it's based on the gdb sources circa 2006-2007.


lldb, the new debugger that we've been writing recently is licensed under the LLVM copyright (berkeley-style) and has a public svn repository, is also a good reference for how debuggers work on the Mac OS X platform.  v.
	http://lldb.llvm.org/

although note that lldb's primary method of operation on Mac OS X is to debug the inferior via a gdbserver-like program via gdb remote protocol (our implementation is "debugserver" and the sources are in lldb/tools/debugserver in the source checkout).  Originally we had lldb controlling the inferior process directly but on Mac OS X we've moved away from that and have all process done by debugserver - that's where you'd want to look to see how the low level memory reading/writing/etc is done.


Jason

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-11-10 22:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-11-08 23:42 gdb on Mac OS bpt implementation question Mick Jordan
2011-11-09  7:48 ` Tristan Gingold
2011-11-10 22:19 ` Jason Molenda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).