@@ -317,7 +317,7 @@ impl<'a> Object<'a> {
317317 let section = self . section_header ( ".gnu_debuglink" ) ?;
318318 let data = section. data ( self . endian , self . data ) . ok ( ) ?;
319319 let len = data. iter ( ) . position ( |x| * x == 0 ) ?;
320- let filename = & data[ ..len] ;
320+ let filename = OsStr :: from_bytes ( & data[ ..len] ) ;
321321 let offset = ( len + 1 + 3 ) & !3 ;
322322 let crc_bytes = data
323323 . get ( offset..offset + 4 )
@@ -332,7 +332,7 @@ impl<'a> Object<'a> {
332332 let section = self . section_header ( ".gnu_debugaltlink" ) ?;
333333 let data = section. data ( self . endian , self . data ) . ok ( ) ?;
334334 let len = data. iter ( ) . position ( |x| * x == 0 ) ?;
335- let filename = & data[ ..len] ;
335+ let filename = OsStr :: from_bytes ( & data[ ..len] ) ;
336336 let build_id = & data[ len + 1 ..] ;
337337 let path_sup = locate_debugaltlink ( path, filename, build_id) ?;
338338 Some ( ( path_sup, build_id) )
@@ -460,12 +460,12 @@ fn locate_build_id(build_id: &[u8]) -> Option<PathBuf> {
460460/// gdb also allows the user to customize the debug search path, but we don't.
461461///
462462/// gdb also supports debuginfod, but we don't yet.
463- fn locate_debuglink ( path : & Path , filename : & [ u8 ] ) -> Option < PathBuf > {
463+ fn locate_debuglink ( path : & Path , filename : & OsStr ) -> Option < PathBuf > {
464464 let path = fs:: canonicalize ( path) . ok ( ) ?;
465465 let parent = path. parent ( ) ?;
466466 let mut f =
467467 PathBuf :: with_capacity ( DEBUG_PATH . len ( ) + parent. as_os_str ( ) . len ( ) + filename. len ( ) + 2 ) ;
468- let filename = Path :: new ( OsStr :: from_bytes ( filename) ) ;
468+ let filename = Path :: new ( filename) ;
469469
470470 // Try "/parent/filename" if it differs from "path"
471471 f. push ( parent) ;
@@ -509,8 +509,8 @@ fn locate_debuglink(path: &Path, filename: &[u8]) -> Option<PathBuf> {
509509/// gdb also allows the user to customize the debug search path, but we don't.
510510///
511511/// gdb also supports debuginfod, but we don't yet.
512- fn locate_debugaltlink ( path : & Path , filename : & [ u8 ] , build_id : & [ u8 ] ) -> Option < PathBuf > {
513- let filename = Path :: new ( OsStr :: from_bytes ( filename) ) ;
512+ fn locate_debugaltlink ( path : & Path , filename : & OsStr , build_id : & [ u8 ] ) -> Option < PathBuf > {
513+ let filename = Path :: new ( filename) ;
514514 if filename. is_absolute ( ) {
515515 if filename. is_file ( ) {
516516 return Some ( filename. into ( ) ) ;
@@ -528,11 +528,6 @@ fn locate_debugaltlink(path: &Path, filename: &[u8], build_id: &[u8]) -> Option<
528528 locate_build_id ( build_id)
529529}
530530
531- fn convert_path < R : gimli:: Reader > ( r : & R ) -> Result < PathBuf , gimli:: Error > {
532- let bytes = r. to_slice ( ) ?;
533- Ok ( PathBuf :: from ( OsStr :: from_bytes ( & bytes) ) )
534- }
535-
536531pub ( super ) fn handle_split_dwarf < ' data > (
537532 package : Option < & gimli:: DwarfPackage < EndianSlice < ' data , Endian > > > ,
538533 stash : & ' data Stash ,
@@ -546,10 +541,10 @@ pub(super) fn handle_split_dwarf<'data>(
546541
547542 let mut path = PathBuf :: new ( ) ;
548543 if let Some ( p) = load. comp_dir . as_ref ( ) {
549- path. push ( convert_path ( p ) . ok ( ) ? ) ;
544+ path. push ( OsStr :: from_bytes ( & p ) ) ;
550545 }
551546
552- path. push ( convert_path ( load. path . as_ref ( ) ?) . ok ( ) ? ) ;
547+ path. push ( OsStr :: from_bytes ( & load. path . as_ref ( ) ?) ) ;
553548
554549 if let Some ( map_dwo) = super :: mmap ( & path) {
555550 let map_dwo = stash. cache_mmap ( map_dwo) ;
0 commit comments