@@ -317,7 +317,7 @@ impl<'a> Object<'a> {
317
317
let section = self . section_header ( ".gnu_debuglink" ) ?;
318
318
let data = section. data ( self . endian , self . data ) . ok ( ) ?;
319
319
let len = data. iter ( ) . position ( |x| * x == 0 ) ?;
320
- let filename = & data[ ..len] ;
320
+ let filename = OsStr :: from_bytes ( & data[ ..len] ) ;
321
321
let offset = ( len + 1 + 3 ) & !3 ;
322
322
let crc_bytes = data
323
323
. get ( offset..offset + 4 )
@@ -332,7 +332,7 @@ impl<'a> Object<'a> {
332
332
let section = self . section_header ( ".gnu_debugaltlink" ) ?;
333
333
let data = section. data ( self . endian , self . data ) . ok ( ) ?;
334
334
let len = data. iter ( ) . position ( |x| * x == 0 ) ?;
335
- let filename = & data[ ..len] ;
335
+ let filename = OsStr :: from_bytes ( & data[ ..len] ) ;
336
336
let build_id = & data[ len + 1 ..] ;
337
337
let path_sup = locate_debugaltlink ( path, filename, build_id) ?;
338
338
Some ( ( path_sup, build_id) )
@@ -460,12 +460,12 @@ fn locate_build_id(build_id: &[u8]) -> Option<PathBuf> {
460
460
/// gdb also allows the user to customize the debug search path, but we don't.
461
461
///
462
462
/// 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 > {
464
464
let path = fs:: canonicalize ( path) . ok ( ) ?;
465
465
let parent = path. parent ( ) ?;
466
466
let mut f =
467
467
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) ;
469
469
470
470
// Try "/parent/filename" if it differs from "path"
471
471
f. push ( parent) ;
@@ -509,8 +509,8 @@ fn locate_debuglink(path: &Path, filename: &[u8]) -> Option<PathBuf> {
509
509
/// gdb also allows the user to customize the debug search path, but we don't.
510
510
///
511
511
/// 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) ;
514
514
if filename. is_absolute ( ) {
515
515
if filename. is_file ( ) {
516
516
return Some ( filename. into ( ) ) ;
@@ -528,11 +528,6 @@ fn locate_debugaltlink(path: &Path, filename: &[u8], build_id: &[u8]) -> Option<
528
528
locate_build_id ( build_id)
529
529
}
530
530
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
-
536
531
pub ( super ) fn handle_split_dwarf < ' data > (
537
532
package : Option < & gimli:: DwarfPackage < EndianSlice < ' data , Endian > > > ,
538
533
stash : & ' data Stash ,
@@ -546,10 +541,10 @@ pub(super) fn handle_split_dwarf<'data>(
546
541
547
542
let mut path = PathBuf :: new ( ) ;
548
543
if let Some ( p) = load. comp_dir . as_ref ( ) {
549
- path. push ( convert_path ( p ) . ok ( ) ? ) ;
544
+ path. push ( OsStr :: from_bytes ( & p ) ) ;
550
545
}
551
546
552
- path. push ( convert_path ( load. path . as_ref ( ) ?) . ok ( ) ? ) ;
547
+ path. push ( OsStr :: from_bytes ( & load. path . as_ref ( ) ?) ) ;
553
548
554
549
if let Some ( map_dwo) = super :: mmap ( & path) {
555
550
let map_dwo = stash. cache_mmap ( map_dwo) ;
0 commit comments