If debug info contains
.uleb128 0x2136 # (DW_AT_GNU_discriminator)
.uleb128 0x21 # (DW_FORM_implicit_const)
.sleb128 <XXX>
create_gcov will ignore it. See for testcases.
This can be fixed by handling discriminators both as signed and unsigned same way line numbers are handled already.
diff --git a/util/symbolize/addr2line_inlinestack.cc b/util/symbolize/addr2line_inlinestack.cc
index f68f6e1..8eeb8bd 100644
--- a/util/symbolize/addr2line_inlinestack.cc
+++ b/util/symbolize/addr2line_inlinestack.cc
@@ -493,6 +493,12 @@ void InlineStackHandler::ProcessAttributeSigned(
subprogram_stack_.back()->set_callsite_line(data);
break;
-
// In case discriminator is implicit const, it is processed as signed
-
// rather then unsigned value.
-
case DW_AT_GNU_discriminator:
-
CHECK(form == DW_FORM_implicit_const);
-
subprogram_stack_.back()->set_callsite_discr(data);
-
}
If debug info contains
create_gcov will ignore it. See for testcases.
This can be fixed by handling discriminators both as signed and unsigned same way line numbers are handled already.
diff --git a/util/symbolize/addr2line_inlinestack.cc b/util/symbolize/addr2line_inlinestack.cc
index f68f6e1..8eeb8bd 100644
--- a/util/symbolize/addr2line_inlinestack.cc
+++ b/util/symbolize/addr2line_inlinestack.cc
@@ -493,6 +493,12 @@ void InlineStackHandler::ProcessAttributeSigned(
subprogram_stack_.back()->set_callsite_line(data);
break;