<!DOCTYPE html>
<!-- BaNnErBlUrFlE-BoDy-start -->
<!-- Preheader Text : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;opacity:0;overflow:hidden;">
Some context the cover letter leaves out: what patch 1 adds to noninvasive grabs. Until now everything that used them started from an address; patch 1 lets them also find objects by name. Commit e65d062c added noninvasive grabs in 2015 so that</div>
<!-- Preheader Text : END -->

<!-- Email Banner : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;opacity:0;overflow:hidden;"></div>
<!-- Email Banner : END -->

<!-- BaNnErBlUrFlE-BoDy-end -->
<html>
<head><!-- BaNnErBlUrFlE-HeAdEr-start -->
<style>
  #pfptBanner0acyh4b { all: revert !important; display: block !important;
    visibility: visible !important; opacity: 1 !important;
    background-color: #c2d4d4 !important;
    max-width: none !important; max-height: none !important }
  .pfptPrimaryButton0acyh4b:hover, .pfptPrimaryButton0acyh4b:focus {
    background-color: #a2b1b1 !important; }
  .pfptPrimaryButton0acyh4b:active {
    background-color: #828e8e !important; }
  html:root, html:root>body { all: revert !important; display: block !important;
    visibility: visible !important; opacity: 1 !important; }
</style>

<!-- BaNnErBlUrFlE-HeAdEr-end -->
</head><body><pre style="font-family: sans-serif; font-size: 100%; white-space: pre-wrap; word-wrap: break-word">Some context the cover letter leaves out: what patch 1 adds to
noninvasive grabs.  Until now everything that used them started from
an address; patch 1 lets them also find objects by name.

Commit e65d062c added noninvasive grabs in 2015 so that symbols in
system daemons still resolve.  Since then they have served ustack(),
usym(), umod(), ufunc() and printf()'s symbol formats, which turn an
address into a name, and USDT probes, which are placed at the
addresses dtprobed recorded.  libproc finds the mapping that contains
the address, and Pobjname() names its object by ld.so's name or,
without one, by the file it is mapped from.

pid probes go the other way, from a module name to an address, and
4aec5c99 made them the first user of a noninvasive grab that needs to
find an object by name.  libproc does that only through the names
ld.so gives each object, which come from rtld_db, and a noninvasive
grab has no rtld_db.  Patch 1 falls back to the mapped file's name, as
Pobjname() already does.

Eslam

</pre></body></html>