[haiku-commits] haiku: hrev46996 - in src/apps/debugger: dwarf debug_info

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 9 Mar 2014 04:40:50 +0100 (CET)

hrev46996 adds 1 changeset to branch 'master'
old head: 982b4e98094506904eaea78800808f231b365c63
new head: 3414d0b64d6a36ba8bcb014aed12d391085ef016
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=3414d0b+%5E982b4e9

----------------------------------------------------------------------------

3414d0b: Debugger: Fix program counter handling issue.
  
  - For DWARF4, lowpc/highpc can be specified as constants in addition
    to addresses. Furthermore, they can also be specified such that highpc
    is a relative offset from lowpc rather than an absolute address. We
    weren't handling this case, which gcc4.8 is now using when emitting
    version 4 debug information. Fixes another part of #10659.
  
  There still remains a problem with regards to class/structure variables not
  showing up in the local variables view.

                                         [ Rene Gollent <rene@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev46996
Commit:      3414d0b64d6a36ba8bcb014aed12d391085ef016
URL:         http://cgit.haiku-os.org/haiku/commit/?id=3414d0b
Author:      Rene Gollent <rene@xxxxxxxxxxx>
Date:        Sun Mar  9 03:36:22 2014 UTC

Ticket:      https://dev.haiku-os.org/ticket/10659

----------------------------------------------------------------------------

2 files changed, 7 insertions(+), 5 deletions(-)
src/apps/debugger/debug_info/DwarfImageDebugInfo.cpp | 6 ++++--
src/apps/debugger/dwarf/AttributeClasses.cpp         | 6 +++---

----------------------------------------------------------------------------

diff --git a/src/apps/debugger/debug_info/DwarfImageDebugInfo.cpp 
b/src/apps/debugger/debug_info/DwarfImageDebugInfo.cpp
index ba463b4..90c4d01 100644
--- a/src/apps/debugger/debug_info/DwarfImageDebugInfo.cpp
+++ b/src/apps/debugger/debug_info/DwarfImageDebugInfo.cpp
@@ -1,6 +1,6 @@
 /*
  * Copyright 2009-2012, Ingo Weinhold, ingo_weinhold@xxxxxx.
- * Copyright 2012-2013, Rene Gollent, rene@xxxxxxxxxxx.
+ * Copyright 2012-2014, Rene Gollent, rene@xxxxxxxxxxx.
  * Distributed under the terms of the MIT License.
  */
 
@@ -351,8 +351,10 @@ DwarfImageDebugInfo::GetFunctions(const 
BObjectList<SymbolInfo>& symbols,
                        if (rangeList == NULL) {
                                target_addr_t lowPC = subprogramEntry->LowPC();
                                target_addr_t highPC = 
subprogramEntry->HighPC();
-                               if (lowPC >= highPC)
+                               if (lowPC == highPC)
                                        continue;
+                               else if (highPC < lowPC)
+                                       highPC += lowPC;
 
                                rangeList = new(std::nothrow) 
TargetAddressRangeList(
                                        TargetAddressRange(lowPC, highPC - 
lowPC));
diff --git a/src/apps/debugger/dwarf/AttributeClasses.cpp 
b/src/apps/debugger/dwarf/AttributeClasses.cpp
index 801e783..e326ed1 100644
--- a/src/apps/debugger/dwarf/AttributeClasses.cpp
+++ b/src/apps/debugger/dwarf/AttributeClasses.cpp
@@ -1,6 +1,6 @@
 /*
  * Copyright 2009, Ingo Weinhold, ingo_weinhold@xxxxxx.
- * Copyright 2013, Rene Gollent, rene@xxxxxxxxxxx.
+ * Copyright 2013-2014, Rene Gollent, rene@xxxxxxxxxxx.
  * Distributed under the terms of the MIT License.
  */
 
@@ -49,8 +49,8 @@ static const attribute_name_info_entry kAttributeNameInfos[] 
= {
        { ENTRY(bit_offset),                    AC_BLOCK | AC_CONSTANT | 
AC_REFERENCE },
        { ENTRY(bit_size),                              AC_BLOCK | AC_CONSTANT 
| AC_REFERENCE },
        { ENTRY(stmt_list),                             AC_LINEPTR },
-       { ENTRY(low_pc),                                AC_ADDRESS },
-       { ENTRY(high_pc),                               AC_ADDRESS },
+       { ENTRY(low_pc),                                AC_ADDRESS | 
AC_CONSTANT | AC_REFERENCE },
+       { ENTRY(high_pc),                               AC_ADDRESS | 
AC_CONSTANT | AC_REFERENCE },
        { ENTRY(language),                              AC_CONSTANT },
        { ENTRY(discr),                                 AC_REFERENCE },
        { ENTRY(discr_value),                   AC_CONSTANT },


Other related posts:

  • » [haiku-commits] haiku: hrev46996 - in src/apps/debugger: dwarf debug_info - anevilyak