For VxWorks:

fix building errors
use wr-c++ as linker
This commit is contained in:
Pang, Baoshan 2020-08-07 16:55:15 -07:00
parent e15510ca33
commit 079baafdf1
5 changed files with 11 additions and 15 deletions

View File

@ -53,7 +53,7 @@ pub fn read_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
}
#[inline]
fn is_read_vectored(&self) -> bool {
pub fn is_read_vectored(&self) -> bool {
true
}

View File

@ -351,8 +351,7 @@ pub fn new(status: c_int) -> ExitStatus {
}
fn exited(&self) -> bool {
/*unsafe*/
{ libc::WIFEXITED(self.0) }
libc::WIFEXITED(self.0)
}
pub fn success(&self) -> bool {
@ -360,19 +359,11 @@ pub fn success(&self) -> bool {
}
pub fn code(&self) -> Option<i32> {
if self.exited() {
Some(/*unsafe*/ { libc::WEXITSTATUS(self.0) })
} else {
None
}
if self.exited() { Some(libc::WEXITSTATUS(self.0)) } else { None }
}
pub fn signal(&self) -> Option<i32> {
if !self.exited() {
Some(/*unsafe*/ { libc::WTERMSIG(self.0) })
} else {
None
}
if !self.exited() { Some(libc::WTERMSIG(self.0)) } else { None }
}
}

View File

@ -2,6 +2,6 @@
#![unstable(feature = "thread_local_internals", issue = "none")]
pub unsafe fn register_dtor(t: *mut u8, dtor: unsafe extern "C" fn(*mut u8)) {
use crate::sys_common::thread_local::register_dtor_fallback;
use crate::sys_common::thread_local_dtor::register_dtor_fallback;
register_dtor_fallback(t, dtor);
}

View File

@ -132,7 +132,8 @@ pub fn find(build: &mut Build) {
false
};
if cxx_configured {
// for VxWorks, record CXX compiler which will be used in lib.rs:linker()
if cxx_configured || target.contains("vxworks") {
let compiler = cfg.get_compiler();
build.cxx.insert(target, compiler);
}

View File

@ -857,6 +857,10 @@ fn linker(&self, target: TargetSelection, can_use_lld: bool) -> Option<&Path> {
if let Some(linker) = self.config.target_config.get(&target).and_then(|c| c.linker.as_ref())
{
Some(linker)
} else if target.contains("vxworks") {
// need to use CXX compiler as linker to resolve the exception functions
// that are only existed in CXX libraries
Some(self.cxx[&target].path())
} else if target != self.config.build
&& util::use_host_linker(target)
&& !target.contains("msvc")