[haiku-commits] haiku: hrev44003 - src/apps/debugger/dwarf

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 12 Apr 2012 01:29:59 +0200 (CEST)

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;


Other related posts:

  • » [haiku-commits] haiku: hrev44003 - src/apps/debugger/dwarf - anevilyak