message: linux_callstack: take region offset into account
  Fixes incorrect symbols being resolved in case of non-zero offsets.
diff: @@ -144,6 +144,7 @@ struct LookupModule
  {
  uint64_t base;
  uint64_t end;
  + uint64_t offset;
  char path[2048];
  };
  @@ -176,7 +177,7 @@ private:
  {
  if(addr >= m_Modules[i].base && addr < m_Modules[i].end)
  {
  - uint64_t relative = addr - m_Modules[i].base;
  + uint64_t relative = addr - m_Modules[i].base + m_Modules[i].offset;
  string cmd =
  StringFormat::Fmt("addr2line -j.text -fCe \"%s\" 0x%llx", m_Modules[i].path, relative);
  @@ -255,21 +256,23 @@ StackResolver *MakeResolver(byte *moduleDB, size_t DBSize, RENDERDOC_ProgressCal
  // find .text segments
  {
  - long unsigned int base = 0, end = 0;
  + long unsigned int base = 0, end = 0, offset = 0;
  int inode = 0;
  int offs = 0;
  // base-end perms offset devid inode offs
  - int num = sscanf(search, "%lx-%lx r-xp %*x %*x:%*x %d %n", &base, &end, &inode, &offs);
  + int num = sscanf(search, "%lx-%lx r-xp %lx %*x:%*x %d %n", &base, &end, &offset,
  + &inode, &offs);
  // we don't care about inode actually, we ust use it to verify that
  - // we read all 3 params (and so perms == r-xp)
  - if(num == 3 && offs > 0)
  + // we read all 4 params (and so perms == r-xp)
  + if(num == 4 && offs > 0)
  {
  LookupModule mod = {0};
  mod.base = (uint64_t)base;
  mod.end = (uint64_t)end;
  + mod.offset = (uint64_t)offset;
  search += offs;
  while(search < dbend && (*search == ' ' || *search == '\t'))
  