From: Tom H. <to...@co...> - 2007-05-24 14:47:49
|
In message <465...@cs...> John van Schie <jc...@cs...> wrote: > Tom Hughes wrote: > >> Only the loaders position is really important, because after that >> valgrind is in control and can keep track of where everything is and >> allocate memory to different things as necessary. > > Thanks for the quick answer Tom, much appreciated! This is clear to me, > but still two questions ;) > > 1) Why 0x38000000? It just seems such a weird number to me. It is below 1Gb so even a kernel with 1:3 user:kernel address space split won't break it. The precise address is somewhat arbitrary and is just designed to keep the loader out of the way of the normal default load address of a program (though that isn't normally critical) whilst ensuring the loader can be loaded below 1Gb. > 2) With the risk of asking something really stupid: Nick mentions in his > PHD thesis, the translated client code runs within a x86 segment to > prevent it from writing to the Valgrind address space. But isn't this > impossible if the Valgrind address space is in the middle of the > applications address space? Or is my knowledge of x86 severely lacking > in this case? That was an old system, and is no longer the case in the current code. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |