hrev44003 adds 1 changeset to branch 'master' old head: 56981da0080fdc4ad0ffefd0e6e5773f2ce3f0f5 new head: 3c5763274a1c6fd3b1676fc3c48ef4abdd8daec0 ---------------------------------------------------------------------------- 3c57632: Implement DW_LNE_set_discriminator from DWARF 4. [ Rene Gollent <anevilyak@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev44003 Commit: 3c5763274a1c6fd3b1676fc3c48ef4abdd8daec0 URL: http://cgit.haiku-os.org/haiku/commit/?id=3c57632 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Wed Apr 11 23:28:59 2012 UTC ---------------------------------------------------------------------------- 3 files changed, 15 insertions(+), 5 deletions(-) src/apps/debugger/dwarf/Dwarf.h | 11 ++++++----- src/apps/debugger/dwarf/LineNumberProgram.cpp | 8 ++++++++ src/apps/debugger/dwarf/LineNumberProgram.h | 1 + ---------------------------------------------------------------------------- diff --git a/src/apps/debugger/dwarf/Dwarf.h b/src/apps/debugger/dwarf/Dwarf.h index f876501..1d83cba 100644 --- a/src/apps/debugger/dwarf/Dwarf.h +++ b/src/apps/debugger/dwarf/Dwarf.h @@ -404,11 +404,12 @@ enum { // line number extended opcode enum { - DW_LNE_end_sequence = 0x01, - DW_LNE_set_address = 0x02, - DW_LNE_define_file = 0x03, - DW_LNE_lo_user = 0x80, - DW_LNE_hi_user = 0xff + DW_LNE_end_sequence = 0x01, + DW_LNE_set_address = 0x02, + DW_LNE_define_file = 0x03, + DW_LNE_set_discriminator = 0x04, + DW_LNE_lo_user = 0x80, + DW_LNE_hi_user = 0xff }; // macro information type diff --git a/src/apps/debugger/dwarf/LineNumberProgram.cpp b/src/apps/debugger/dwarf/LineNumberProgram.cpp index 963f247..922e2e2 100644 --- a/src/apps/debugger/dwarf/LineNumberProgram.cpp +++ b/src/apps/debugger/dwarf/LineNumberProgram.cpp @@ -99,6 +99,7 @@ LineNumberProgram::GetNextRow(State& state) const state.isBasicBlock = false; state.isPrologueEnd = false; state.isEpilogueBegin = false; + state.discriminator = 0; appendRow = true; } else if (opcode > 0) { // standard opcode @@ -108,6 +109,7 @@ LineNumberProgram::GetNextRow(State& state) const state.isPrologueEnd = false; state.isEpilogueBegin = false; appendRow = true; + state.discriminator = 0; break; case DW_LNS_advance_pc: state.address += dataReader.ReadUnsignedLEB128(0) @@ -175,6 +177,11 @@ LineNumberProgram::GetNextRow(State& state) const state.file = -1; break; } + case DW_LNE_set_discriminator: + { + state.discriminator = dataReader.ReadUnsignedLEB128(0); + break; + } default: WARNING("unsupported extended opcode: %u\n", extendedOpcode); @@ -209,4 +216,5 @@ LineNumberProgram::_SetToInitial(State& state) const state.isPrologueEnd = false; state.isEpilogueBegin = false; state.instructionSet = 0; + state.discriminator = 0; } diff --git a/src/apps/debugger/dwarf/LineNumberProgram.h b/src/apps/debugger/dwarf/LineNumberProgram.h index e1e3a64..6ed9c7e 100644 --- a/src/apps/debugger/dwarf/LineNumberProgram.h +++ b/src/apps/debugger/dwarf/LineNumberProgram.h @@ -54,6 +54,7 @@ struct LineNumberProgram::State { bool isPrologueEnd; bool isEpilogueBegin; uint32 instructionSet; + uint32 discriminator; // when file is set to -1 const char* explicitFile;