@@ -20,7 +20,7 @@ pub enum DiffText<'a> {
20
20
/// Instruction argument
21
21
Argument ( & ' a ObjInsArgValue , Option < & ' a ObjInsArgDiff > ) ,
22
22
/// Branch destination
23
- BranchDest ( u64 ) ,
23
+ BranchDest ( u64 , Option < & ' a ObjInsArgDiff > ) ,
24
24
/// Symbol name
25
25
Symbol ( & ' a ObjSymbol ) ,
26
26
/// Number of spaces
@@ -62,20 +62,20 @@ pub fn display_diff<E>(
62
62
if i == 0 {
63
63
cb ( DiffText :: Spacing ( 1 ) ) ?;
64
64
}
65
+ let diff = ins_diff. arg_diff . get ( i) . and_then ( |o| o. as_ref ( ) ) ;
65
66
match arg {
66
67
ObjInsArg :: PlainText ( s) => {
67
68
cb ( DiffText :: Basic ( s) ) ?;
68
69
}
69
70
ObjInsArg :: Arg ( v) => {
70
- let diff = ins_diff. arg_diff . get ( i) . and_then ( |o| o. as_ref ( ) ) ;
71
71
cb ( DiffText :: Argument ( v, diff) ) ?;
72
72
}
73
73
ObjInsArg :: Reloc => {
74
74
display_reloc_name ( ins. reloc . as_ref ( ) . unwrap ( ) , & mut cb) ?;
75
75
}
76
76
ObjInsArg :: BranchDest ( dest) => {
77
77
if let Some ( dest) = dest. checked_sub ( base_addr) {
78
- cb ( DiffText :: BranchDest ( dest) ) ?;
78
+ cb ( DiffText :: BranchDest ( dest, diff ) ) ?;
79
79
} else {
80
80
cb ( DiffText :: Basic ( "<unknown>" ) ) ?;
81
81
}
@@ -107,7 +107,9 @@ impl PartialEq<DiffText<'_>> for HighlightKind {
107
107
( HighlightKind :: Opcode ( a) , DiffText :: Opcode ( _, b) ) => a == b,
108
108
( HighlightKind :: Arg ( a) , DiffText :: Argument ( b, _) ) => a. loose_eq ( b) ,
109
109
( HighlightKind :: Symbol ( a) , DiffText :: Symbol ( b) ) => a == & b. name ,
110
- ( HighlightKind :: Address ( a) , DiffText :: Address ( b) | DiffText :: BranchDest ( b) ) => a == b,
110
+ ( HighlightKind :: Address ( a) , DiffText :: Address ( b) | DiffText :: BranchDest ( b, _) ) => {
111
+ a == b
112
+ }
111
113
_ => false ,
112
114
}
113
115
}
@@ -123,7 +125,7 @@ impl From<DiffText<'_>> for HighlightKind {
123
125
DiffText :: Opcode ( _, op) => HighlightKind :: Opcode ( op) ,
124
126
DiffText :: Argument ( arg, _) => HighlightKind :: Arg ( arg. clone ( ) ) ,
125
127
DiffText :: Symbol ( sym) => HighlightKind :: Symbol ( sym. name . to_string ( ) ) ,
126
- DiffText :: Address ( addr) | DiffText :: BranchDest ( addr) => HighlightKind :: Address ( addr) ,
128
+ DiffText :: Address ( addr) | DiffText :: BranchDest ( addr, _ ) => HighlightKind :: Address ( addr) ,
127
129
_ => HighlightKind :: None ,
128
130
}
129
131
}
0 commit comments