Skip to content

Commit 6dc3f3e

Browse files
authored
Merge pull request #255 from delphix/master
Merge branch 'master' into '6.0/stage'
2 parents 4db2c40 + 6754f05 commit 6dc3f3e

File tree

7 files changed

+39
-38
lines changed

7 files changed

+39
-38
lines changed

sdb/pipeline.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ def massage_input_and_call(
5959
return
6060

6161
# If we are passed a foo_t when we expect a foo_t*, use its address.
62-
if target.get_pointer_type(first_obj_type) == expected_type:
62+
if target.type_equals(target.get_pointer_type(first_obj_type),
63+
expected_type):
6364
yield from execute_pipeline(objs, [Address(), cmd])
6465
return
6566

sdb/target.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def type_equals(a: drgn.Type, b: drgn.Type) -> bool:
150150
same because we usually just need to know, "is this a foo_t*", without
151151
regard for which source .c file defined the foo_t.
152152
153-
Note that the drgn type equality operator (==) attempts to evalue deep
153+
Note that the drgn type equality operator (==) attempts to evaluate deep
154154
type equality and therefore doesn't complete in a reasonable amount of time.
155155
"Deep type equality" means that two "struct foo"s that each contain a
156156
"struct bar *member" are not necessarily equal, because we must recursively

tests/unit/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def create_struct_type(prog: drgn.Program, name: str, member_names: List[str],
4444
struct_size, bit_offset = 0, 0
4545
member_list = []
4646
for member_name, type_ in zip(member_names, member_types):
47-
member_type = drgn.TypeMember(type_, member_name, bit_offset, 0)
47+
member_type = drgn.TypeMember(type_, member_name, bit_offset)
4848
member_list.append(member_type)
4949
if type_.kind == drgn.TypeKind.ARRAY:
5050
bit_offset += 8 * type_.length * type_.type.size

tests/unit/commands/test_address.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_single_object() -> None:
3737

3838
assert len(ret) == 1
3939
assert ret[0].value_() == 0xffffffffc0000000
40-
assert ret[0].type_ == MOCK_PROGRAM.type('int *')
40+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('int *'))
4141

4242

4343
def test_plain_address() -> None:
@@ -47,7 +47,7 @@ def test_plain_address() -> None:
4747

4848
assert len(ret) == 1
4949
assert ret[0].value_() == 0xffffffffc084eee0
50-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
50+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
5151

5252

5353
def test_multiple_object() -> None:
@@ -57,11 +57,11 @@ def test_multiple_object() -> None:
5757

5858
assert len(ret) == 3
5959
assert ret[0].value_() == 0xffffffffc0000000
60-
assert ret[0].type_ == MOCK_PROGRAM.type('int *')
60+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('int *'))
6161
assert ret[1].value_() == 0xffffffffc084eee0
62-
assert ret[1].type_ == MOCK_PROGRAM.type('void *')
62+
assert sdb.type_equals(ret[1].type_, MOCK_PROGRAM.type('void *'))
6363
assert ret[2].value_() == 0xffff88d26353c108
64-
assert ret[2].type_ == MOCK_PROGRAM.type('void **')
64+
assert sdb.type_equals(ret[2].type_, MOCK_PROGRAM.type('void **'))
6565

6666

6767
def test_piped_invocations() -> None:
@@ -71,11 +71,11 @@ def test_piped_invocations() -> None:
7171

7272
assert len(ret) == 3
7373
assert ret[0].value_() == 0xffffffffc0000000
74-
assert ret[0].type_ == MOCK_PROGRAM.type('int *')
74+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('int *'))
7575
assert ret[1].value_() == 0xffffffffc084eee0
76-
assert ret[1].type_ == MOCK_PROGRAM.type('void *')
76+
assert sdb.type_equals(ret[1].type_, MOCK_PROGRAM.type('void *'))
7777
assert ret[2].value_() == 0xffff88d26353c108
78-
assert ret[2].type_ == MOCK_PROGRAM.type('void **')
78+
assert sdb.type_equals(ret[2].type_, MOCK_PROGRAM.type('void **'))
7979

8080

8181
def test_echo_pipe() -> None:
@@ -85,9 +85,9 @@ def test_echo_pipe() -> None:
8585

8686
assert len(ret) == 2
8787
assert ret[0].value_() == 0xffffffffc084eee0
88-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
88+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
8989
assert ret[1].value_() == 0xffff88d26353c108
90-
assert ret[1].type_ == MOCK_PROGRAM.type('void **')
90+
assert sdb.type_equals(ret[1].type_, MOCK_PROGRAM.type('void **'))
9191

9292

9393
def test_global_not_found() -> None:

tests/unit/commands/test_cast.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def test_invoke_pipe_input() -> None:
5353
ret = invoke(MOCK_PROGRAM, objs, line)
5454

5555
assert len(ret) == 1
56-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
56+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
5757
assert ret[0].value_() == 0x01020304
5858

5959

@@ -63,7 +63,7 @@ def test_str_pipe_input() -> None:
6363
ret = invoke(MOCK_PROGRAM, [], line)
6464

6565
assert len(ret) == 1
66-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
66+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
6767
assert ret[0].value_() == 0xffffffffc0000000
6868

6969

@@ -73,7 +73,7 @@ def test_pipe_input_pointer_to_int() -> None:
7373
ret = invoke(MOCK_PROGRAM, [], line)
7474

7575
assert len(ret) == 1
76-
assert ret[0].type_ == MOCK_PROGRAM.type('unsigned int')
76+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('unsigned int'))
7777
assert ret[0].value_() == 0xc0000000
7878

7979

@@ -92,7 +92,7 @@ def test_double_cast() -> None:
9292
ret = invoke(MOCK_PROGRAM, [], line)
9393

9494
assert len(ret) == 1
95-
assert ret[0].type_ == MOCK_PROGRAM.type('char *')
95+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('char *'))
9696
assert ret[0].value_() == 0xc0000000
9797

9898

@@ -102,4 +102,4 @@ def test_pointer_to_struct() -> None:
102102
with pytest.raises(sdb.CommandError) as err:
103103
invoke(MOCK_PROGRAM, [], line)
104104

105-
assert "cannot convert 'int *' to 'struct test_struct'" in str(err.value)
105+
assert "cannot cast to 'struct test_struct'" in str(err.value)

tests/unit/commands/test_echo.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def test_piped_input() -> None:
3939

4040
assert len(ret) == 1
4141
assert ret[0].value_() == 0
42-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
42+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
4343

4444

4545
def test_single_arg_hex() -> None:
@@ -49,7 +49,7 @@ def test_single_arg_hex() -> None:
4949

5050
assert len(ret) == 1
5151
assert ret[0].value_() == 0
52-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
52+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
5353

5454

5555
def test_single_arg_decimal() -> None:
@@ -59,7 +59,7 @@ def test_single_arg_decimal() -> None:
5959

6060
assert len(ret) == 1
6161
assert ret[0].value_() == 0
62-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
62+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
6363

6464

6565
def test_bogus_arg() -> None:
@@ -79,7 +79,7 @@ def test_test_piped_int() -> None:
7979

8080
assert len(ret) == 1
8181
assert ret[0].value_() == 1
82-
assert ret[0].type_ == MOCK_PROGRAM.type('int')
82+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('int'))
8383

8484

8585
def test_single_arg() -> None:
@@ -89,7 +89,7 @@ def test_single_arg() -> None:
8989

9090
assert len(ret) == 1
9191
assert ret[0].value_() == 1
92-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
92+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
9393

9494

9595
def test_multiple_piped() -> None:
@@ -103,9 +103,9 @@ def test_multiple_piped() -> None:
103103

104104
assert len(ret) == 2
105105
assert ret[0].value_() == 0
106-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
106+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
107107
assert ret[1].value_() == 1
108-
assert ret[1].type_ == MOCK_PROGRAM.type('int')
108+
assert sdb.type_equals(ret[1].type_, MOCK_PROGRAM.type('int'))
109109

110110

111111
def test_multiple_args() -> None:
@@ -115,9 +115,9 @@ def test_multiple_args() -> None:
115115

116116
assert len(ret) == 2
117117
assert ret[0].value_() == 0
118-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
118+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
119119
assert ret[1].value_() == 1
120-
assert ret[1].type_ == MOCK_PROGRAM.type('void *')
120+
assert sdb.type_equals(ret[1].type_, MOCK_PROGRAM.type('void *'))
121121

122122

123123
def test_piped_and_args_combo() -> None:
@@ -131,13 +131,13 @@ def test_piped_and_args_combo() -> None:
131131

132132
assert len(ret) == 4
133133
assert ret[0].value_() == 0
134-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
134+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
135135
assert ret[1].value_() == 1
136-
assert ret[1].type_ == MOCK_PROGRAM.type('int')
136+
assert sdb.type_equals(ret[1].type_, MOCK_PROGRAM.type('int'))
137137
assert ret[2].value_() == 0
138-
assert ret[2].type_ == MOCK_PROGRAM.type('void *')
138+
assert sdb.type_equals(ret[2].type_, MOCK_PROGRAM.type('void *'))
139139
assert ret[3].value_() == 1
140-
assert ret[3].type_ == MOCK_PROGRAM.type('void *')
140+
assert sdb.type_equals(ret[3].type_, MOCK_PROGRAM.type('void *'))
141141

142142

143143
def test_multi_echo_combo() -> None:
@@ -151,12 +151,12 @@ def test_multi_echo_combo() -> None:
151151

152152
assert len(ret) == 5
153153
assert ret[0].value_() == 0
154-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
154+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
155155
assert ret[1].value_() == 1
156-
assert ret[1].type_ == MOCK_PROGRAM.type('int')
156+
assert sdb.type_equals(ret[1].type_, MOCK_PROGRAM.type('int'))
157157
assert ret[2].value_() == 2
158-
assert ret[2].type_ == MOCK_PROGRAM.type('void *')
158+
assert sdb.type_equals(ret[2].type_, MOCK_PROGRAM.type('void *'))
159159
assert ret[3].value_() == 3
160-
assert ret[3].type_ == MOCK_PROGRAM.type('void *')
160+
assert sdb.type_equals(ret[3].type_, MOCK_PROGRAM.type('void *'))
161161
assert ret[4].value_() == 4
162-
assert ret[4].type_ == MOCK_PROGRAM.type('void *')
162+
assert sdb.type_equals(ret[4].type_, MOCK_PROGRAM.type('void *'))

tests/unit/commands/test_filter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ def test_multi_void_ptr_input_value_match_ne() -> None:
8585

8686
assert len(ret) == 2
8787
assert ret[0].value_() == 0
88-
assert ret[0].type_ == MOCK_PROGRAM.type('void *')
88+
assert sdb.type_equals(ret[0].type_, MOCK_PROGRAM.type('void *'))
8989
assert ret[1].value_() == 2
90-
assert ret[1].type_ == MOCK_PROGRAM.type('void *')
90+
assert sdb.type_equals(ret[1].type_, MOCK_PROGRAM.type('void *'))
9191

9292

9393
def test_char_array_input_object_match() -> None:

0 commit comments

Comments
 (0)