[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFR: 8247514: Improve clhsdb 'findpc' ability to determine what an address points to by improvin
From:       Chris Plummer <cjplummer () openjdk ! java ! net>
Date:       2021-01-25 20:50:41
Message-ID: GVBd94FVWLPPpJ13q7169cdRWKNmAyYFWidkvYCbRKs=.72809310-0eb6-4cc1-a24d-c5b7cd78a324 () github ! com
[Download RAW message or body]

On Sun, 17 Jan 2021 03:57:59 GMT, Chris Plummer <cjplummer@openjdk.org> wrote:

> See the bug for most details. A few notes here about some implementation details:
> 
> In the `PointerLocation` class, I added more consistency w.r.t. whether or not a \
> newline is printed. It used to for some address types, but not others. Now it \
> always does. And if you see a comment something like the following: 
> `         getTLAB().printOn(tty); // includes "\n" `
> 
> That's just clarifying whether or not the `printOn()` method called will include \
> the newline. Some do and some don't, and knowing what the various `printOn()` \
> methods do makes getting the proper inclusion of the newline easier to understand. 
> I added `verbose` and `printAddress` boolean arguments to \
> `PointerLocation.printOn()`. Currently they are always `true`. The false arguments \
> will be used when I complete \
> [JDK-8250801](https://bugs.openjdk.java.net/browse/JDK-8250801), which will use \
> `PointerFinder/Location` to show what each register points to. 
> The CR mentions that the main motivation for this work is for eventual replacement \
> of the old clhsdb `whatis` command, which was implemented in javascript. It used to \
> resolve DSO symbols, whereas `findpc` did not. The `whatis` code did this with the \
> following: 
> var dso = loadObjectContainingPC(addr);
> if (dso == null) {
> return ptrLoc.toString();
> }
> var sym = dso.closestSymbolToPC(addr);
> if (sym != null) {
> return sym.name + '+' + sym.offset;
> }
> And now you'll see something similar in the PointerFinder code:
> 
> loc.loadObject = cdbg.loadObjectContainingPC(a);
> if (loc.loadObject != null) {
> loc.nativeSymbol = loc.loadObject.closestSymbolToPC(a);
> return loc;
> } 
> Note that now that `findpc` does everything that `whatis` used to (and more), we \
> don't really need to add a java version of `whatis`, but I'll probably do so anyway \
> just help out people who are used to using the `whatis` command. That will be done \
> using [JDK-8244670](https://bugs.openjdk.java.net/browse/JDK-8244670)

Ping!

-------------

PR: https://git.openjdk.java.net/jdk/pull/2111


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic