@@ -28,8 +28,10 @@ fn load_metadata_with(
28
28
path : & Path ,
29
29
f : impl for < ' a > FnOnce ( & ' a [ u8 ] ) -> Result < & ' a [ u8 ] , String > ,
30
30
) -> Result < MetadataRef , String > {
31
- let file = File :: open ( path) . map_err ( |e| format ! ( "{:?}" , e) ) ?;
32
- let data = unsafe { Mmap :: map ( file) } . map_err ( |e| format ! ( "{:?}" , e) ) ?;
31
+ let file =
32
+ File :: open ( path) . map_err ( |e| format ! ( "failed to open file '{}': {}" , path. display( ) , e) ) ?;
33
+ let data = unsafe { Mmap :: map ( file) }
34
+ . map_err ( |e| format ! ( "failed to mmap file '{}': {}" , path. display( ) , e) ) ?;
33
35
let metadata = OwningRef :: new ( data) . try_map ( f) ?;
34
36
return Ok ( rustc_erase_owner ! ( metadata. map_owner_box( ) ) ) ;
35
37
}
@@ -38,28 +40,32 @@ impl MetadataLoader for DefaultMetadataLoader {
38
40
fn get_rlib_metadata ( & self , _target : & Target , path : & Path ) -> Result < MetadataRef , String > {
39
41
load_metadata_with ( path, |data| {
40
42
let archive = object:: read:: archive:: ArchiveFile :: parse ( & * data)
41
- . map_err ( |e| format ! ( "{:?}" , e) ) ?;
43
+ . map_err ( |e| format ! ( "failed to parse rlib '{}': {}" , path . display ( ) , e) ) ?;
42
44
43
45
for entry_result in archive. members ( ) {
44
- let entry = entry_result. map_err ( |e| format ! ( "{:?}" , e) ) ?;
46
+ let entry = entry_result
47
+ . map_err ( |e| format ! ( "failed to parse rlib '{}': {}" , path. display( ) , e) ) ?;
45
48
if entry. name ( ) == METADATA_FILENAME . as_bytes ( ) {
46
49
return Ok ( entry. data ( ) ) ;
47
50
}
48
51
}
49
52
50
- Err ( "couldn't find metadata entry" . to_string ( ) )
53
+ Err ( format ! ( "metadata not found in rlib '{}'" , path . display ( ) ) )
51
54
} )
52
55
}
53
56
54
57
fn get_dylib_metadata ( & self , _target : & Target , path : & Path ) -> Result < MetadataRef , String > {
55
58
use object:: { Object , ObjectSection } ;
56
59
57
60
load_metadata_with ( path, |data| {
58
- let file = object:: File :: parse ( & data) . map_err ( |e| format ! ( "parse: {:?}" , e) ) ?;
61
+ let file = object:: File :: parse ( & data)
62
+ . map_err ( |e| format ! ( "failed to parse dylib '{}': {}" , path. display( ) , e) ) ?;
59
63
file. section_by_name ( ".rustc" )
60
- . ok_or ( "no .rustc section" ) ?
64
+ . ok_or_else ( || format ! ( "no .rustc section in '{}'" , path . display ( ) ) ) ?
61
65
. data ( )
62
- . map_err ( |e| format ! ( "failed to read .rustc section: {:?}" , e) )
66
+ . map_err ( |e| {
67
+ format ! ( "failed to read .rustc section in '{}': {}" , path. display( ) , e)
68
+ } )
63
69
} )
64
70
}
65
71
}
0 commit comments