Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
557 changes: 508 additions & 49 deletions runtime/etc/debug/chpl_lldb_pretty_print.py

Large diffs are not rendered by default.

7 changes: 6 additions & 1 deletion test/llvm/debugInfo/lldb/EXECENV
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,9 @@

exec_name=$1

echo "CHPL_RT_DEBUGGER_CMD_FILE=${exec_name}Commands.txt"
cmd_file="${exec_name}Commands.txt"
if [[ ("$CHPL_COMM" != 'none' || "$COMPOPTS" == *'--no-local'*) && -f "${exec_name}NoLocalCommands.txt" ]]; then
cmd_file="${exec_name}NoLocalCommands.txt"
fi
echo "CHPL_RT_DEBUGGER_CMD_FILE=${cmd_file}"

8 changes: 4 additions & 4 deletions test/llvm/debugInfo/lldb/basicTypes.chpl
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ proc main() {
// CHECK-NOLOCAL-NEXT: }

// CHECK: p myRec2.myFieldF
// CHECK-NEXT: (ChapelArray::[domain(1,int(64),one)] int(64)) [1..10] int(64)
// CHECK-NEXT: ([domain(1,int(64),one)] int(64)) [1..10] int(64)
// CHECK-NEXT: [1] = 0
// CHECK-NEXT: [2] = 0
// CHECK-NEXT: [3] = 0
Expand Down Expand Up @@ -119,7 +119,7 @@ proc main() {
const myStr = "Hello, world!";

// CHECK: p myDom
// CHECK-NEXT: (ChapelDomain::domain(2,int(64),positive)) {1..10 by 1, 1..10 by 2} {
// CHECK-NEXT: (domain(2,int(64),positive)) {1..10 by 1, 1..10 by 2} {
// CHECK-NEXT: dim = {
// CHECK-NEXT: [0] = 1..10 by 1 {
// CHECK-NEXT: low = 1
Expand All @@ -136,7 +136,7 @@ proc main() {
const myDom = {1..10, 1..10 by 2};

// CHECK: p myArr2d
// CHECK-NEXT: (ChapelArray::[domain(2,int(64),positive)] int(64)) [1..10 by 1, 1..10 by 2] int(64) {
// CHECK-NEXT: ([domain(2,int(64),positive)] int(64)) [1..10 by 1, 1..10 by 2] int(64) {
// CHECK-NEXT: [1,1] = 1
// CHECK-NEXT: [2,1] = 6
// CHECK-NEXT: [3,1] = 11
Expand Down Expand Up @@ -191,7 +191,7 @@ proc main() {
const myArr2d: [myDom] int = reshape([i in 1..#myDom.size] i, myDom);

// CHECK: p myArr
// CHECK-NEXT: (ChapelArray::[domain(1,int(64),one)] int(64)) [1..10] int(64) {
// CHECK-NEXT: ([domain(1,int(64),one)] int(64)) [1..10] int(64) {
// CHECK-NEXT: [1] = 1
// CHECK-NEXT: [2] = 2
// CHECK-NEXT: [3] = 3
Expand Down
131 changes: 131 additions & 0 deletions test/llvm/debugInfo/lldb/inspectAggregates.chpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
use List, Set, Map;
use BlockDist, CyclicDist;


record myRecord {
var x;
var y: x.type;
}
proc myRecord.compute(s: x.type) {
return x * s + y;
}
class MyClass {
var a: int;
var b: real;
}

proc main() {

var myIntList = new list([1, 2, 3]);
var myRecList = new list([new myRecord(1.1, 2.2), new myRecord(3.3, 4.4)]);
var myStringSet = new set(string, ["a", "b", "c"]);
var myMap = new map(int, real);
myMap.add(1, 1.1);
myMap.replace(1, 2.2);

var myArr = [i in 1..10] new shared MyClass(i, i*1.0);
var myBlockDist = blockDist.createArray({1..#10}, owned MyClass?);
myBlockDist =
[i in myBlockDist.domain] if i & 1 then new MyClass?(i, i*1.0) else nil;
var myCycDist = cyclicDist.createArray({1..#10, 1..#10}, int);
myCycDist = [(i,j) in myCycDist.domain] i*20 + j;

writeln(myRecList.first.compute(2.0));
writeln(myRecList);
writeln(myBlockDist[1], myCycDist[1,1]);

use Debugger;
breakpoint;
}


// CHECK: p myIntList
// CHECK-NEXT: (List::list(int(64)
// CHECK-SAME: size = 3
// CHECK-NEXT: [0] = 1
// CHECK-NEXT: [1] = 2
// CHECK-NEXT: [2] = 3

// CHECK: p myRecList
// CHECK-NEXT: (List::list(myRecord(real(64))
// CHECK-SAME: size = 2
// CHECK-NEXT: [0] = (x = 1.{{.*}}, y = 2.{{.*}})
// CHECK-NEXT: [1] = (x = 3.{{.*}}, y = 4.{{.*}})

// CHECK: v myRecList[0]
// CHECK: [0] = (x = 1.{{.*}}, y = 2.{{.*}})

// CHECK: p myRecList._getRef(1)
// CHECK: (x = 3.{{.*}}, y = 4.{{.*}})

// CHECK: p myRecList._getRef(1).x
// CHECK-NEXT: (real(64)) 3.

// CHECK: p myRecList._getRef(1).compute(4.0)
// CHECK-NEXT: (real(64)) 17.6

// CHECK: p myRecList.first()
// CHECK: (x = 1.{{.*}}, y = 2.{{.*}})

// CHECK: p myRecList.first().y
// CHECK-NEXT: (real(64)) 2.

// CHECK: p myRecList.first().compute(3.0)
// CHECK-NEXT: (real(64)) 5.5

// CHECK: p myStringSet
// CHECK-NEXT: (Set::set(string
// CHECK-SAME: size = 3
// CHECK: [0] = "a"
// CHECK: [1] = "c"
// CHECK: [2] = "b"

// CHECK: p myMap
// CHECK-NEXT: (Map::map(int(64),real(64)
// CHECK-SAME: size = 1
// CHECK-NEXT: [0] = (key = 1, val = 2.

// CHECK: e -- myMap.add(2, 17.8)
// CHECK: p myMap
// CHECK-NEXT: (Map::map(int(64),real(64)
// CHECK-SAME: size = 2
// CHECK-NEXT: [0] = (key = 1, val = 2.
// CHECK: [1] = (key = 2, val = 17.

// CHECK: p myArr
// CHECK: [1..10] shared MyClass
// CHECK: [1] = 0x{{[0-9a-f]+}}
// CHECK: a = 1
// CHECK: [2] = 0x{{[0-9a-f]+}}
// CHECK: a = 2
// CHECK: [3] = 0x{{[0-9a-f]+}}
// CHECK: a = 3
// CHECK: [10] = 0x{{[0-9a-f]+}}
// CHECK: a = 10

// CHECK: p myBlockDist
// CHECK: owned MyClass?
// CHECK: [1] = 0x{{[0-9a-f]+}}
// CHECK: a = 1
// CHECK: [2] = nil
// CHECK: [3] = 0x{{[0-9a-f]+}}
// CHECK: a = 3
// CHECK: [4] = nil
// CHECK: [5] = 0x{{[0-9a-f]+}}
// CHECK: a = 5
// CHECK: [6] = nil
// CHECK: [7] = 0x{{[0-9a-f]+}}
// CHECK: a = 7
// CHECK: [8] = nil
// CHECK: [9] = 0x{{[0-9a-f]+}}
// CHECK: a = 9
// CHECK: [10] = nil

// CHECK: p myCycDist
// CHECK: int(64)
// CHECK: [1,1] = 21
// CHECK: [2,1] = 41
// CHECK: [10,1] = 201
// CHECK: [1,10] = 30
// CHECK: [10,10] = 210

Empty file.
6 changes: 6 additions & 0 deletions test/llvm/debugInfo/lldb/inspectAggregates.prediff
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

TESTNAME=$1
OUTFILE=$2

$CHPL_HOME/test/llvm/RunFileCheck "$TESTNAME" "$OUTFILE"
1 change: 1 addition & 0 deletions test/llvm/debugInfo/lldb/inspectAggregates.skipif
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
COMPOPTS <= --no-local
24 changes: 24 additions & 0 deletions test/llvm/debugInfo/lldb/inspectAggregatesCommands.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
r

p myIntList

p myRecList
v myRecList[0]
p myRecList._getRef(1)
p myRecList._getRef(1).x
p myRecList._getRef(1).compute(4.0)
p myRecList.first()
p myRecList.first().y
p myRecList.first().compute(3.0)

p myStringSet

p myMap
e -- myMap.add(2, 17.8)
p myMap

p myArr
p myBlockDist
p myCycDist

q
153 changes: 153 additions & 0 deletions test/llvm/debugInfo/lldb/lists.chpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
use List;
use Debugger;

record myRec {
var x: int;
var y: real;
}
class MyClass {
var a: int;
var b: real;
}

proc createList(type listTy, in v1, in v2, in v3) {
var myList = new listTy();
myList.pushBack(v1);
myList.pushBack(v2);
myList.pushBack(v3);
return myList;
}

proc main() {
var myIntList = createList(list(int), 1, 2, 3);
writeln("Integer List: ", myIntList);
breakpoint;
writeln("Integer List Again: ", myIntList);

var myRealList = createList(list(real, false), 1.1, 2.2, 3.3);
writeln("Real List: ", myRealList);
breakpoint;
writeln("Real List Again: ", myRealList);

var myRecList = createList(list(myRec, true),
new myRec(10, 20.5),
new myRec(30, 40.5),
new myRec(50, 60.5));
writeln("Record List: ", myRecList);
breakpoint;
writeln("Record List Again: ", myRecList);

var myStrList = createList(list(string), "one", "two", "three");
writeln("String List: ", myStrList);
breakpoint;
writeln("String List Again: ", myStrList);


var myOwnedClassList = createList(list(owned MyClass?, true),
new MyClass(1, 1.1),
nil,
new MyClass(3, 3.3));
writeln("Class List: ", myOwnedClassList);
breakpoint;
writeln("Class List Again: ", myOwnedClassList);


var myClassList = createList(list(unmanaged MyClass?),
new unmanaged MyClass(1, 1.1),
nil,
new unmanaged MyClass(3, 3.3));
writeln("Class List: ", myClassList);
breakpoint;
writeln("Class List Again: ", myClassList);
}


// CHECK: p myIntList
// CHECK-NEXT: (List::list(int(64)
// CHECK-SAME: size = 3
// CHECK-NEXT: [0] = 1
// CHECK-NEXT: [1] = 2
// CHECK-NEXT: [2] = 3

// CHECK: v myIntList[1]
// CHECK-NEXT: (int(64)) [1] = 2

// CHECK: e -- myIntList.pushBack(8)
// CHECK: p myIntList
// CHECK-NEXT: (List::list(int(64)
// CHECK-SAME: size = 4
// CHECK-NEXT: [0] = 1
// CHECK-NEXT: [1] = 2
// CHECK-NEXT: [2] = 3
// CHECK-NEXT: [3] = 8
// CHECK: Integer List Again: [1, 2, 3, 8]

// CHECK: p myRealList
// CHECK-NEXT: (List::list(real(64)
// CHECK-SAME: size = 3
// CHECK-NEXT: [0] = 1.
// CHECK-NEXT: [1] = 2.
// CHECK-NEXT: [2] = 3.

// CHECK: v myRealList[1]
// CHECK-NEXT: (real(64)) [1] = 2.

// CHECK: e -- myRealList.pushBack(8.8)
// CHECK: p myRealList
// CHECK-NEXT: (List::list(real(64)
// CHECK-SAME: size = 4
// CHECK-NEXT: [0] = 1.
// CHECK-NEXT: [1] = 2.
// CHECK-NEXT: [2] = 3.
// CHECK-NEXT: [3] = 8.
// CHECK: Real List Again: [1.1, 2.2, 3.3, 8.8]

// CHECK: p myRecList
// CHECK-NEXT: (List::list(myRec
// CHECK-SAME: size = 3
// CHECK-NEXT: [0] = (x = 10, y = 20.5)
// CHECK-NEXT: [1] = (x = 30, y = 40.5)
// CHECK-NEXT: [2] = (x = 50, y = 60.5)

// CHECK: v myRecList[2]
// CHECK-NEXT: [2] = (x = 50, y = 60.5)

// CHECK: v myRecList[2].y
// CHECK-NEXT: 60.5

// CHECK: p myStrList
// CHECK-NEXT: (List::list(string
// CHECK-SAME: size = 3
// CHECK: [0] = "one"
// CHECK: [1] = "two"
// CHECK: [2] = "three"

// CHECK: v myStrList[0]
// CHECK-NEXT: (string) [0] = "one"


// CHECK: p myOwnedClassList
// CHECK-NEXT: (List::list(owned MyClass?
// CHECK-SAME: size = 3
// CHECK: [0] = 0x{{[0-9a-f]+}}
// CHECK: [1] = nil
// CHECK: [2] = 0x[[OWNED_CLASS_2_ADDR:[0-9a-f]+]]

// CHECK: v myOwnedClassList[2]
// CHECK-NEXT: (owned MyClass?) [2] = 0x[[OWNED_CLASS_2_ADDR]]

// CHECK: v myOwnedClassList[2].b
// CHECK-NEXT: b = 3.

// CHECK: p myClassList
// CHECK-NEXT: (List::list(unmanaged MyClass?
// CHECK-SAME: size = 3
// CHECK: [0] = 0x{{[0-9a-f]+}}
// CHECK: [1] = n
// CHECK: [2] = 0x{{[0-9a-f]+}}

// CHECK: v myClassList[2]
// CHECK-NEXT: [2] = 0x{{[0-9a-f]+}}
// CHECK: v myClassList[2]->b
// CHECK-NEXT: b = 3.

Empty file.
6 changes: 6 additions & 0 deletions test/llvm/debugInfo/lldb/lists.prediff
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

TESTNAME=$1
OUTFILE=$2

$CHPL_HOME/test/llvm/RunFileCheck "$TESTNAME" "$OUTFILE"
1 change: 1 addition & 0 deletions test/llvm/debugInfo/lldb/lists.skipif
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
COMPOPTS <= --no-local
Loading