File tree Expand file tree Collapse file tree 2 files changed +14
-4
lines changed Expand file tree Collapse file tree 2 files changed +14
-4
lines changed Original file line number Diff line number Diff line change @@ -166,6 +166,15 @@ impl<'a> Archive<'a> {
166
166
if filename. contains ( ".SYMDEF" ) { continue }
167
167
168
168
let filename = format ! ( "r-{}-{}" , name, filename) ;
169
+ // LLDB (as mentioned in back::link) crashes on filenames of exactly
170
+ // 16 bytes in length. If we're including an object file with
171
+ // exactly 16-bytes of characters, give it some prefix so that it's
172
+ // not 16 bytes.
173
+ let filename = if filename. len ( ) == 16 {
174
+ format ! ( "lldb-fix-{}" , filename)
175
+ } else {
176
+ filename
177
+ } ;
169
178
let new_filename = file. with_filename ( filename) ;
170
179
try!( fs:: rename ( file, & new_filename) ) ;
171
180
inputs. push ( new_filename) ;
Original file line number Diff line number Diff line change @@ -958,10 +958,11 @@ fn link_rlib<'a>(sess: &'a Session,
958
958
959
959
// For LTO purposes, the bytecode of this library is also inserted
960
960
// into the archive.
961
- // Note that we make sure that the bytecode filename in the archive is always at least
962
- // 16 bytes long by adding a 16 byte extension to it. This is to work around a bug in
963
- // LLDB that would cause it to crash if the name of a file in an archive was exactly
964
- // 16 bytes.
961
+ //
962
+ // Note that we make sure that the bytecode filename in the archive
963
+ // is never exactly 16 bytes long by adding a 16 byte extension to
964
+ // it. This is to work around a bug in LLDB that would cause it to
965
+ // crash if the name of a file in an archive was exactly 16 bytes.
965
966
let bc = obj_filename. with_extension ( "bc" ) ;
966
967
let bc_deflated = obj_filename. with_extension ( "bytecode.deflate" ) ;
967
968
match fs:: File :: open ( & bc) . read_to_end ( ) . and_then ( |data| {
You can’t perform that action at this time.
0 commit comments