@@ -261,7 +261,7 @@ impl<'a> Object<'a> {
261
261
let section = self . section_header ( ".gnu_debuglink" ) ?;
262
262
let data = section. data ( self . endian , self . data ) . ok ( ) ?;
263
263
let len = data. iter ( ) . position ( |x| * x == 0 ) ?;
264
- let filename = & data[ ..len] ;
264
+ let filename = OsStr :: from_bytes ( & data[ ..len] ) ;
265
265
let offset = ( len + 1 + 3 ) & !3 ;
266
266
let crc_bytes = data
267
267
. get ( offset..offset + 4 )
@@ -276,7 +276,7 @@ impl<'a> Object<'a> {
276
276
let section = self . section_header ( ".gnu_debugaltlink" ) ?;
277
277
let data = section. data ( self . endian , self . data ) . ok ( ) ?;
278
278
let len = data. iter ( ) . position ( |x| * x == 0 ) ?;
279
- let filename = & data[ ..len] ;
279
+ let filename = OsStr :: from_bytes ( & data[ ..len] ) ;
280
280
let build_id = & data[ len + 1 ..] ;
281
281
let path_sup = locate_debugaltlink ( path, filename, build_id) ?;
282
282
Some ( ( path_sup, build_id) )
@@ -304,7 +304,7 @@ fn decompress_zlib(input: &[u8], output: &mut [u8]) -> Option<()> {
304
304
}
305
305
}
306
306
307
- const DEBUG_PATH : & [ u8 ] = b "/usr/lib/debug";
307
+ const DEBUG_PATH : & str = "/usr/lib/debug" ;
308
308
309
309
fn debug_path_exists ( ) -> bool {
310
310
cfg_if:: cfg_if! {
@@ -314,7 +314,7 @@ fn debug_path_exists() -> bool {
314
314
315
315
let mut exists = DEBUG_PATH_EXISTS . load( Ordering :: Relaxed ) ;
316
316
if exists == 0 {
317
- exists = if Path :: new( OsStr :: from_bytes ( DEBUG_PATH ) ) . is_dir( ) {
317
+ exists = if Path :: new( OsStr :: new ( DEBUG_PATH ) ) . is_dir( ) {
318
318
1
319
319
} else {
320
320
2
@@ -377,13 +377,12 @@ fn hex(byte: u8) -> u8 {
377
377
/// gdb also allows the user to customize the debug search path, but we don't.
378
378
///
379
379
/// gdb also supports debuginfod, but we don't yet.
380
- fn locate_debuglink ( path : & Path , filename : & [ u8 ] ) -> Option < PathBuf > {
380
+ fn locate_debuglink ( path : & Path , filename : & OsStr ) -> Option < PathBuf > {
381
381
let path = fs:: canonicalize ( path) . ok ( ) ?;
382
382
let parent = path. parent ( ) ?;
383
383
let mut f = PathBuf :: from ( OsString :: with_capacity (
384
384
DEBUG_PATH . len ( ) + parent. as_os_str ( ) . len ( ) + filename. len ( ) + 2 ,
385
385
) ) ;
386
- let filename = Path :: new ( OsStr :: from_bytes ( filename) ) ;
387
386
388
387
// Try "/parent/filename" if it differs from "path"
389
388
f. push ( parent) ;
@@ -408,7 +407,7 @@ fn locate_debuglink(path: &Path, filename: &[u8]) -> Option<PathBuf> {
408
407
let mut s = OsString :: from ( f) ;
409
408
s. clear ( ) ;
410
409
f = PathBuf :: from ( s) ;
411
- f. push ( OsStr :: from_bytes ( DEBUG_PATH ) ) ;
410
+ f. push ( OsStr :: new ( DEBUG_PATH ) ) ;
412
411
f. push ( parent. strip_prefix ( "/" ) . unwrap ( ) ) ;
413
412
f. push ( filename) ;
414
413
if f. is_file ( ) {
@@ -431,8 +430,8 @@ fn locate_debuglink(path: &Path, filename: &[u8]) -> Option<PathBuf> {
431
430
/// gdb also allows the user to customize the debug search path, but we don't.
432
431
///
433
432
/// gdb also supports debuginfod, but we don't yet.
434
- fn locate_debugaltlink ( path : & Path , filename : & [ u8 ] , build_id : & [ u8 ] ) -> Option < PathBuf > {
435
- let filename = Path :: new ( OsStr :: from_bytes ( filename) ) ;
433
+ fn locate_debugaltlink ( path : & Path , filename : & OsStr , build_id : & [ u8 ] ) -> Option < PathBuf > {
434
+ let filename = Path :: new ( filename) ;
436
435
if filename. is_absolute ( ) {
437
436
if filename. is_file ( ) {
438
437
return Some ( filename. into ( ) ) ;
@@ -450,11 +449,6 @@ fn locate_debugaltlink(path: &Path, filename: &[u8], build_id: &[u8]) -> Option<
450
449
locate_build_id ( build_id)
451
450
}
452
451
453
- fn convert_path < R : gimli:: Reader > ( r : & R ) -> Result < PathBuf , gimli:: Error > {
454
- let bytes = r. to_slice ( ) ?;
455
- Ok ( PathBuf :: from ( OsStr :: from_bytes ( & bytes) ) )
456
- }
457
-
458
452
pub ( super ) fn handle_split_dwarf < ' data > (
459
453
package : Option < & gimli:: DwarfPackage < EndianSlice < ' data , Endian > > > ,
460
454
stash : & ' data Stash ,
@@ -468,10 +462,10 @@ pub(super) fn handle_split_dwarf<'data>(
468
462
469
463
let mut path = PathBuf :: new ( ) ;
470
464
if let Some ( p) = load. comp_dir . as_ref ( ) {
471
- path. push ( convert_path ( p ) . ok ( ) ? ) ;
465
+ path. push ( OsStr :: from_bytes ( & p . slice ( ) ) ) ;
472
466
}
473
467
474
- path. push ( convert_path ( load. path . as_ref ( ) ?) . ok ( ) ? ) ;
468
+ path. push ( OsStr :: from_bytes ( & load. path . as_ref ( ) ?) ) ;
475
469
476
470
if let Some ( map_dwo) = super :: mmap ( & path) {
477
471
let map_dwo = stash. cache_mmap ( map_dwo) ;
0 commit comments