mirror of
https://github.com/yuzu-emu/breakpad.git
synced 2025-07-16 09:17:38 +00:00
Properly handle new tombstone values that now appear as a result of the llvm change described at https://reviews.llvm.org/D81784.
Change-Id: I79dc5a72b651aa057104cd42b4773391df68125b Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2317730 Reviewed-by: Mark Mentovai <mark@chromium.org> Reviewed-by: Nelson Billing <nbilling@google.com>
This commit is contained in:
parent
114336881a
commit
7d65240249
|
@ -1195,7 +1195,10 @@ void DwarfCUToModule::AssignLinesToFunctions() {
|
||||||
// next_transition may end up being zero, in which case we've completed
|
// next_transition may end up being zero, in which case we've completed
|
||||||
// our pass. Handle that here, instead of trying to deal with it in
|
// our pass. Handle that here, instead of trying to deal with it in
|
||||||
// each place we compute next_transition.
|
// each place we compute next_transition.
|
||||||
if (!next_transition)
|
|
||||||
|
// Some dwarf producers handle linker-removed functions by using -1 as a
|
||||||
|
// tombstone in the line table. So the end marker can be -1.
|
||||||
|
if (!next_transition || next_transition == Module::kMaxAddress)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Advance iterators as needed. If lines overlap or functions overlap,
|
// Advance iterators as needed. If lines overlap or functions overlap,
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#define COMMON_LINUX_MODULE_H__
|
#define COMMON_LINUX_MODULE_H__
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <limits>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -62,6 +63,7 @@ class Module {
|
||||||
public:
|
public:
|
||||||
// The type of addresses and sizes in a symbol table.
|
// The type of addresses and sizes in a symbol table.
|
||||||
typedef uint64_t Address;
|
typedef uint64_t Address;
|
||||||
|
static constexpr uint64_t kMaxAddress = std::numeric_limits<Address>::max();
|
||||||
struct File;
|
struct File;
|
||||||
struct Function;
|
struct Function;
|
||||||
struct Line;
|
struct Line;
|
||||||
|
|
Loading…
Reference in a new issue