@@ -12,7 +12,7 @@ use object::{Object as _, ObjectSection as _, ObjectSymbol as _};
1212
1313use crate :: {
1414 arch:: { Arch , RelocationOverride , RelocationOverrideTarget , new_arch} ,
15- diff:: DiffObjConfig ,
15+ diff:: { DiffObjConfig , DiffSide } ,
1616 obj:: {
1717 FlowAnalysisResult , Object , Relocation , RelocationFlags , Section , SectionData , SectionFlag ,
1818 SectionKind , Symbol , SymbolFlag , SymbolFlagSet , SymbolKind ,
@@ -74,6 +74,14 @@ fn map_symbol(
7474 {
7575 flags |= SymbolFlag :: Hidden ;
7676 }
77+ if file. format ( ) == object:: BinaryFormat :: Coff
78+ && let Ok ( name) = symbol. name ( )
79+ && ( name. starts_with ( "except_data_" )
80+ || name. starts_with ( "__unwind" )
81+ || name. starts_with ( "__catch" ) )
82+ {
83+ flags |= SymbolFlag :: Hidden ;
84+ }
7785
7886 let kind = match symbol. kind ( ) {
7987 object:: SymbolKind :: Text => SymbolKind :: Function ,
@@ -967,21 +975,25 @@ fn do_combine_sections(
967975}
968976
969977#[ cfg( feature = "std" ) ]
970- pub fn read ( obj_path : & std:: path:: Path , config : & DiffObjConfig ) -> Result < Object > {
978+ pub fn read (
979+ obj_path : & std:: path:: Path ,
980+ config : & DiffObjConfig ,
981+ diff_side : DiffSide ,
982+ ) -> Result < Object > {
971983 let ( data, timestamp) = {
972984 let file = std:: fs:: File :: open ( obj_path) ?;
973985 let timestamp = filetime:: FileTime :: from_last_modification_time ( & file. metadata ( ) ?) ;
974986 ( unsafe { memmap2:: Mmap :: map ( & file) } ?, timestamp)
975987 } ;
976- let mut obj = parse ( & data, config) ?;
988+ let mut obj = parse ( & data, config, diff_side ) ?;
977989 obj. path = Some ( obj_path. to_path_buf ( ) ) ;
978990 obj. timestamp = Some ( timestamp) ;
979991 Ok ( obj)
980992}
981993
982- pub fn parse ( data : & [ u8 ] , config : & DiffObjConfig ) -> Result < Object > {
994+ pub fn parse ( data : & [ u8 ] , config : & DiffObjConfig , diff_side : DiffSide ) -> Result < Object > {
983995 let obj_file = object:: File :: parse ( data) ?;
984- let mut arch = new_arch ( & obj_file) ?;
996+ let mut arch = new_arch ( & obj_file, diff_side ) ?;
985997 let split_meta = parse_split_meta ( & obj_file) ?;
986998 let ( mut sections, section_indices) =
987999 map_sections ( arch. as_ref ( ) , & obj_file, split_meta. as_ref ( ) ) ?;
0 commit comments