Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dda47b78 authored by Christopher Ferris's avatar Christopher Ferris
Browse files

Allow getting an uncached process map.

(cherry picked from commit f02593b0)

Change-Id: I2012bf2dc553ebc663345b9eac6d794e80df9c00
parent 39a8ade7
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -41,7 +41,10 @@ struct backtrace_map_t {

class BacktraceMap {
public:
  static BacktraceMap* Create(pid_t pid);
  // If uncached is true, then parse the current process map as of the call.
  // Passing a map created with uncached set to true to Backtrace::Create()
  // is unsupported.
  static BacktraceMap* Create(pid_t pid, bool uncached = false);

  virtual ~BacktraceMap();

+6 −2
Original line number Diff line number Diff line
@@ -130,9 +130,13 @@ const backtrace_map_t* UnwindMapLocal::Find(uintptr_t addr) {
//-------------------------------------------------------------------------
// BacktraceMap create function.
//-------------------------------------------------------------------------
BacktraceMap* BacktraceMap::Create(pid_t pid) {
BacktraceMap* BacktraceMap::Create(pid_t pid, bool uncached) {
  BacktraceMap* map;
  if (pid == getpid()) {

  if (uncached) {
    // Force use of the base class to parse the maps when this call is made.
    map = new BacktraceMap(pid);
  } else if (pid == getpid()) {
    map = new UnwindMapLocal();
  } else {
    map = new UnwindMap(pid);