cmd.debuginfo();
// OBJECT-FILES-NO, AUDIT-ORDER
- // We want to, by default, prevent the compiler from accidentally leaking in
- // any system libraries, so we may explicitly ask linkers to not link to any
- // libraries by default. Note that this does not happen for windows because
- // windows pulls in some large number of libraries and I couldn't quite
- // figure out which subset we wanted.
- //
- // This is all naturally configurable via the standard methods as well.
+ // We want to prevent the compiler from accidentally leaking in any system libraries,
+ // so by default we tell linkers not to link to any default libraries.
if !sess.opts.cg.default_linker_libraries.unwrap_or(false)
&& sess.target.target.options.no_default_libraries
{
}
fn no_default_libraries(&mut self) {
- // Currently we don't pass the /NODEFAULTLIB flag to the linker on MSVC
- // as there's been trouble in the past of linking the C++ standard
- // library required by LLVM. This likely needs to happen one day, but
- // in general Windows is also a more controlled environment than
- // Unix, so it's not necessarily as critical that this be implemented.
- //
- // Note that there are also some licensing worries about statically
- // linking some libraries which require a specific agreement, so it may
- // not ever be possible for us to pass this flag.
+ self.cmd.arg("/NODEFAULTLIB");
}
fn include_path(&mut self, path: &Path) {
// will fail if the compiler ever tries placing code on the stack (e.g., trampoline
// constructs and alike).
"/NXCOMPAT".to_string(),
- // There is no runtime for UEFI targets, prevent them from being linked. UEFI targets
- // must be freestanding.
- "/nodefaultlib".to_string(),
// Non-standard subsystems have no default entry-point in PE+ files. We have to define
// one. "efi_main" seems to be a common choice amongst other implementations and the
// spec.
abi_return_struct_as_int: true,
emit_debug_gdb_scripts: false,
requires_uwtable: true,
+ // Currently we don't pass the /NODEFAULTLIB flag to the linker on MSVC
+ // as there's been trouble in the past of linking the C++ standard
+ // library required by LLVM. This likely needs to happen one day, but
+ // in general Windows is also a more controlled environment than
+ // Unix, so it's not necessarily as critical that this be implemented.
+ //
+ // Note that there are also some licensing worries about statically
+ // linking some libraries which require a specific agreement, so it may
+ // not ever be possible for us to pass this flag.
+ no_default_libraries: false,
..Default::default()
}
emit_debug_gdb_scripts: false,
requires_uwtable: true,
lld_flavor: LldFlavor::Link,
+ // Currently we don't pass the /NODEFAULTLIB flag to the linker on MSVC
+ // as there's been trouble in the past of linking the C++ standard
+ // library required by LLVM. This likely needs to happen one day, but
+ // in general Windows is also a more controlled environment than
+ // Unix, so it's not necessarily as critical that this be implemented.
+ //
+ // Note that there are also some licensing worries about statically
+ // linking some libraries which require a specific agreement, so it may
+ // not ever be possible for us to pass this flag.
+ no_default_libraries: false,
..Default::default()
}