@@ -253,46 +253,43 @@ impl<'a> Linker for GnuLinker<'a> {
253
253
let mut arg = OsString :: new ( ) ;
254
254
let path = tmpdir. join ( "list" ) ;
255
255
256
- if self . sess . target . target . options . is_like_solaris {
256
+ if self . sess . target . target . options . is_like_osx {
257
+ // Write a plain, newline-separated list of symbols
257
258
let res = ( || -> io:: Result < ( ) > {
258
259
let mut f = BufWriter :: new ( File :: create ( & path) ?) ;
259
- writeln ! ( f, "{{\n global:" ) ?;
260
260
for sym in self . info . exports [ & crate_type] . iter ( ) {
261
- writeln ! ( f, " {}; " , sym) ?;
261
+ writeln ! ( f, "_{} " , sym) ?;
262
262
}
263
- writeln ! ( f, "\n local:\n *;\n }};" ) ?;
264
263
Ok ( ( ) )
265
264
} ) ( ) ;
266
265
if let Err ( e) = res {
267
- self . sess . fatal ( & format ! ( "failed to write version script : {}" , e) ) ;
266
+ self . sess . fatal ( & format ! ( "failed to write lib.def file : {}" , e) ) ;
268
267
}
269
-
270
- arg. push ( "-Wl,-M," ) ;
271
- arg. push ( & path) ;
272
268
} else {
273
- let prefix = if self . sess . target . target . options . is_like_osx {
274
- "_"
275
- } else {
276
- ""
277
- } ;
269
+ // Write an LD version script
278
270
let res = ( || -> io:: Result < ( ) > {
279
271
let mut f = BufWriter :: new ( File :: create ( & path) ?) ;
272
+ writeln ! ( f, "{{\n global:" ) ?;
280
273
for sym in self . info . exports [ & crate_type] . iter ( ) {
281
- writeln ! ( f, "{}{}" , prefix , sym) ?;
274
+ writeln ! ( f, " {};" , sym) ?;
282
275
}
276
+ writeln ! ( f, "\n local:\n *;\n }};" ) ?;
283
277
Ok ( ( ) )
284
278
} ) ( ) ;
285
279
if let Err ( e) = res {
286
- self . sess . fatal ( & format ! ( "failed to write lib.def file: {}" , e) ) ;
287
- }
288
- if self . sess . target . target . options . is_like_osx {
289
- arg. push ( "-Wl,-exported_symbols_list," ) ;
290
- } else {
291
- arg. push ( "-Wl,--retain-symbols-file=" ) ;
280
+ self . sess . fatal ( & format ! ( "failed to write version script: {}" , e) ) ;
292
281
}
293
- arg. push ( & path) ;
294
282
}
295
283
284
+ if self . sess . target . target . options . is_like_osx {
285
+ arg. push ( "-Wl,-exported_symbols_list," ) ;
286
+ } else if self . sess . target . target . options . is_like_solaris {
287
+ arg. push ( "-Wl,-M," ) ;
288
+ } else {
289
+ arg. push ( "-Wl,--version-script=" ) ;
290
+ }
291
+
292
+ arg. push ( & path) ;
296
293
self . cmd . arg ( arg) ;
297
294
}
298
295
0 commit comments