forked from qt-creator/qt-creator
Debugger: Fix std::unordered_{map,set} dumper for LLDB on Linux
Change-Id: Id96d02cddcccdd7765e5a098bb98f894122781a1 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
@@ -554,24 +554,24 @@ def qdump__std__unordered_map(d, value):
|
|||||||
ptrSize = d.ptrSize()
|
ptrSize = d.ptrSize()
|
||||||
try:
|
try:
|
||||||
# gcc ~= 4.7
|
# gcc ~= 4.7
|
||||||
size = value["_M_element_count"]
|
size = int(value["_M_element_count"])
|
||||||
start = value["_M_before_begin"]["_M_nxt"]
|
start = value["_M_before_begin"]["_M_nxt"]
|
||||||
offset = 0
|
offset = 0
|
||||||
except:
|
except:
|
||||||
try:
|
try:
|
||||||
# libc++ (Mac)
|
# libc++ (Mac)
|
||||||
size = value["_M_h"]["_M_element_count"]
|
size = int(value["_M_h"]["_M_element_count"])
|
||||||
start = value["_M_h"]["_M_bbegin"]["_M_node"]["_M_nxt"]
|
start = value["_M_h"]["_M_bbegin"]["_M_node"]["_M_nxt"]
|
||||||
offset = 0
|
offset = 0
|
||||||
except:
|
except:
|
||||||
try:
|
try:
|
||||||
# gcc 4.9.1
|
# gcc 4.9.1
|
||||||
size = value["_M_h"]["_M_element_count"]
|
size = int(value["_M_h"]["_M_element_count"])
|
||||||
start = value["_M_h"]["_M_before_begin"]["_M_nxt"]
|
start = value["_M_h"]["_M_before_begin"]["_M_nxt"]
|
||||||
offset = 0
|
offset = 0
|
||||||
except:
|
except:
|
||||||
# gcc 4.6.2
|
# gcc 4.6.2
|
||||||
size = value["_M_element_count"]
|
size = int(value["_M_element_count"])
|
||||||
start = value["_M_buckets"].dereference()
|
start = value["_M_buckets"].dereference()
|
||||||
# FIXME: Pointer-aligned?
|
# FIXME: Pointer-aligned?
|
||||||
offset = pairType.sizeof
|
offset = pairType.sizeof
|
||||||
@@ -579,17 +579,16 @@ def qdump__std__unordered_map(d, value):
|
|||||||
# We don't know where the data is
|
# We don't know where the data is
|
||||||
d.putNumChild(0)
|
d.putNumChild(0)
|
||||||
return
|
return
|
||||||
|
|
||||||
d.putItemCount(size)
|
d.putItemCount(size)
|
||||||
if d.isExpanded():
|
if d.isExpanded():
|
||||||
p = d.pointerValue(start)
|
p = d.pointerValue(start)
|
||||||
if d.isMapCompact(keyType, valueType):
|
if d.isMapCompact(keyType, valueType):
|
||||||
with Children(d, size, childType=valueType):
|
with PairedChildren(d, size, pairType=pairType):
|
||||||
for i in d.childRange():
|
for i in d.childRange():
|
||||||
pair = d.createValue(p + ptrSize, pairType)
|
pair = d.createValue(p + ptrSize, pairType)
|
||||||
with SubItem(d, i):
|
with SubItem(d, i):
|
||||||
d.putField("iname", d.currentIName)
|
d.putPair(pair, i)
|
||||||
d.putName("[%s] %s" % (i, pair["first"]))
|
|
||||||
d.putValue(pair["second"])
|
|
||||||
p = d.extractPointer(p)
|
p = d.extractPointer(p)
|
||||||
else:
|
else:
|
||||||
with Children(d, size, childType=pairType):
|
with Children(d, size, childType=pairType):
|
||||||
@@ -603,24 +602,24 @@ def qdump__std____debug__unordered_map(d, value):
|
|||||||
def qdump__std__unordered_set(d, value):
|
def qdump__std__unordered_set(d, value):
|
||||||
try:
|
try:
|
||||||
# gcc ~= 4.7
|
# gcc ~= 4.7
|
||||||
size = value["_M_element_count"]
|
size = int(value["_M_element_count"])
|
||||||
start = value["_M_before_begin"]["_M_nxt"]
|
start = value["_M_before_begin"]["_M_nxt"]
|
||||||
offset = 0
|
offset = 0
|
||||||
except:
|
except:
|
||||||
try:
|
try:
|
||||||
# libc++ (Mac)
|
# libc++ (Mac)
|
||||||
size = value["_M_h"]["_M_element_count"]
|
size = int(value["_M_h"]["_M_element_count"])
|
||||||
start = value["_M_h"]["_M_bbegin"]["_M_node"]["_M_nxt"]
|
start = value["_M_h"]["_M_bbegin"]["_M_node"]["_M_nxt"]
|
||||||
offset = 0
|
offset = 0
|
||||||
except:
|
except:
|
||||||
try:
|
try:
|
||||||
# gcc 4.6.2
|
# gcc 4.6.2
|
||||||
size = value["_M_element_count"]
|
size = int(value["_M_element_count"])
|
||||||
start = value["_M_buckets"].dereference()
|
start = value["_M_buckets"].dereference()
|
||||||
offset = d.ptrSize()
|
offset = d.ptrSize()
|
||||||
except:
|
except:
|
||||||
# gcc 4.9.1
|
# gcc 4.9.1
|
||||||
size = value["_M_h"]["_M_element_count"]
|
size = int(value["_M_h"]["_M_element_count"])
|
||||||
start = value["_M_h"]["_M_before_begin"]["_M_nxt"]
|
start = value["_M_h"]["_M_before_begin"]["_M_nxt"]
|
||||||
offset = 0
|
offset = 0
|
||||||
|
|
||||||
|
@@ -4372,12 +4372,12 @@ void tst_Dumpers::dumper_data()
|
|||||||
"std::unordered_map<unsigned int, unsigned int> map1;\n"
|
"std::unordered_map<unsigned int, unsigned int> map1;\n"
|
||||||
"map1[11] = 1;\n"
|
"map1[11] = 1;\n"
|
||||||
"map1[22] = 2;\n"
|
"map1[22] = 2;\n"
|
||||||
|
"unused(&map1);\n\n"
|
||||||
|
|
||||||
"std::unordered_map<std::string, float> map2;\n"
|
"std::unordered_map<std::string, float> map2;\n"
|
||||||
"map2[\"11.0\"] = 11.0;\n"
|
"map2[\"11.0\"] = 11.0;\n"
|
||||||
"map2[\"22.0\"] = 22.0;\n"
|
"map2[\"22.0\"] = 22.0;\n"
|
||||||
|
"unused(&map2);\n")
|
||||||
"unused(&map1);\n")
|
|
||||||
|
|
||||||
+ Cxx11Profile()
|
+ Cxx11Profile()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user