@@ -159,6 +159,15 @@ impl<'a> GccLinker<'a> {
159
159
self
160
160
}
161
161
162
+ fn add_lib < S > ( & mut self , lib : S ) -> & mut Self
163
+ where S : AsRef < OsStr >
164
+ {
165
+ let mut os = OsString :: from ( "-l" ) ;
166
+ os. push ( lib. as_ref ( ) ) ;
167
+ self . cmd . arg ( os) ;
168
+ self
169
+ }
170
+
162
171
fn takes_hints ( & self ) -> bool {
163
172
!self . sess . target . target . options . is_like_osx
164
173
}
@@ -185,8 +194,8 @@ impl<'a> GccLinker<'a> {
185
194
}
186
195
187
196
impl < ' a > Linker for GccLinker < ' a > {
188
- fn link_dylib ( & mut self , lib : & str ) { self . hint_dynamic ( ) ; self . cmd . arg ( "-l" ) . arg ( lib) ; }
189
- fn link_staticlib ( & mut self , lib : & str ) { self . hint_static ( ) ; self . cmd . arg ( "-l" ) . arg ( lib) ; }
197
+ fn link_dylib ( & mut self , lib : & str ) { self . hint_dynamic ( ) ; self . add_lib ( lib) ; }
198
+ fn link_staticlib ( & mut self , lib : & str ) { self . hint_static ( ) ; self . add_lib ( lib) ; }
190
199
fn link_rlib ( & mut self , lib : & Path ) { self . hint_static ( ) ; self . cmd . arg ( lib) ; }
191
200
fn include_path ( & mut self , path : & Path ) { self . cmd . arg ( "-L" ) . arg ( path) ; }
192
201
fn framework_path ( & mut self , path : & Path ) { self . cmd . arg ( "-F" ) . arg ( path) ; }
@@ -202,7 +211,7 @@ impl<'a> Linker for GccLinker<'a> {
202
211
203
212
fn link_rust_dylib ( & mut self , lib : & str , _path : & Path ) {
204
213
self . hint_dynamic ( ) ;
205
- self . cmd . arg ( "-l" ) . arg ( lib) ;
214
+ self . add_lib ( lib) ;
206
215
}
207
216
208
217
fn link_framework ( & mut self , framework : & str ) {
@@ -238,7 +247,7 @@ impl<'a> Linker for GccLinker<'a> {
238
247
v. push ( lib) ;
239
248
self . linker_arg ( & v) ;
240
249
} else {
241
- self . linker_arg ( "--whole-archive" ) . cmd . arg ( lib) ;
250
+ self . linker_arg ( "--whole-archive" ) . add_lib ( lib) ;
242
251
self . linker_arg ( "--no-whole-archive" ) ;
243
252
}
244
253
}
0 commit comments