@@ -20,7 +20,7 @@ pub enum DiffText<'a> {
2020 /// Instruction argument
2121 Argument ( & ' a ObjInsArgValue , Option < & ' a ObjInsArgDiff > ) ,
2222 /// Branch destination
23- BranchDest ( u64 ) ,
23+ BranchDest ( u64 , Option < & ' a ObjInsArgDiff > ) ,
2424 /// Symbol name
2525 Symbol ( & ' a ObjSymbol ) ,
2626 /// Number of spaces
@@ -62,20 +62,20 @@ pub fn display_diff<E>(
6262 if i == 0 {
6363 cb ( DiffText :: Spacing ( 1 ) ) ?;
6464 }
65+ let diff = ins_diff. arg_diff . get ( i) . and_then ( |o| o. as_ref ( ) ) ;
6566 match arg {
6667 ObjInsArg :: PlainText ( s) => {
6768 cb ( DiffText :: Basic ( s) ) ?;
6869 }
6970 ObjInsArg :: Arg ( v) => {
70- let diff = ins_diff. arg_diff . get ( i) . and_then ( |o| o. as_ref ( ) ) ;
7171 cb ( DiffText :: Argument ( v, diff) ) ?;
7272 }
7373 ObjInsArg :: Reloc => {
7474 display_reloc_name ( ins. reloc . as_ref ( ) . unwrap ( ) , & mut cb) ?;
7575 }
7676 ObjInsArg :: BranchDest ( dest) => {
7777 if let Some ( dest) = dest. checked_sub ( base_addr) {
78- cb ( DiffText :: BranchDest ( dest) ) ?;
78+ cb ( DiffText :: BranchDest ( dest, diff ) ) ?;
7979 } else {
8080 cb ( DiffText :: Basic ( "<unknown>" ) ) ?;
8181 }
@@ -107,7 +107,9 @@ impl PartialEq<DiffText<'_>> for HighlightKind {
107107 ( HighlightKind :: Opcode ( a) , DiffText :: Opcode ( _, b) ) => a == b,
108108 ( HighlightKind :: Arg ( a) , DiffText :: Argument ( b, _) ) => a. loose_eq ( b) ,
109109 ( 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+ }
111113 _ => false ,
112114 }
113115 }
@@ -123,7 +125,7 @@ impl From<DiffText<'_>> for HighlightKind {
123125 DiffText :: Opcode ( _, op) => HighlightKind :: Opcode ( op) ,
124126 DiffText :: Argument ( arg, _) => HighlightKind :: Arg ( arg. clone ( ) ) ,
125127 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) ,
127129 _ => HighlightKind :: None ,
128130 }
129131 }
0 commit comments