Skip to content

Commit

Permalink
windows: Don't link rust_builtin
Browse files Browse the repository at this point in the history
This library has no shims which are actually needed on Windows now, so translate
that last easy one into Rust and then don't link it at all on Windows.
  • Loading branch information
alexcrichton committed Jul 2, 2015
1 parent 18c39e1 commit 83ee47b
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 40 deletions.
15 changes: 11 additions & 4 deletions src/libstd/rt/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ use io::prelude::*;
use env;
use fmt;
use intrinsics;
use libc::uintptr_t;
use sync::atomic::{self, Ordering};
use sys::stdio::Stderr;

Expand All @@ -22,10 +21,18 @@ use sys::stdio::Stderr;
/// can't run correctly un-altered. Valgrind is there to help
/// you notice weirdness in normal, un-doctored code paths!
pub fn running_on_valgrind() -> bool {
extern {
fn rust_running_on_valgrind() -> uintptr_t;
return on_valgrind();
#[cfg(windows)]
fn on_valgrind() -> bool { false }

#[cfg(unix)]
fn on_valgrind() -> bool {
use libc::uintptr_t;
extern {
fn rust_running_on_valgrind() -> uintptr_t;
}
unsafe { rust_running_on_valgrind() != 0 }
}
unsafe { rust_running_on_valgrind() != 0 }
}

/// Valgrind has a fixed-sized array (size around 2000) of segment descriptors
Expand Down
4 changes: 2 additions & 2 deletions src/libstd/rtdeps.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
//! the standard library This varies per-platform, but these libraries are
//! necessary for running libstd.
// All platforms need to link to rustrt
#[cfg(not(test))]
// A few small shims in C that haven't been translated to Rust yet
#[cfg(all(not(test), not(windows)))]
#[link(name = "rust_builtin", kind = "static")]
extern {}

Expand Down
20 changes: 17 additions & 3 deletions src/libtest/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,7 @@ fn run_tests<F>(opts: &TestOpts,

#[allow(deprecated)]
fn get_concurrency() -> usize {
match env::var("RUST_TEST_THREADS") {
return match env::var("RUST_TEST_THREADS") {
Ok(s) => {
let opt_n: Option<usize> = s.parse().ok();
match opt_n {
Expand All @@ -884,10 +884,24 @@ fn get_concurrency() -> usize {
if std::rt::util::limit_thread_creation_due_to_osx_and_valgrind() {
1
} else {
extern { fn rust_get_num_cpus() -> libc::uintptr_t; }
unsafe { rust_get_num_cpus() as usize }
num_cpus()
}
}
};

#[cfg(windows)]
fn num_cpus() -> usize {
unsafe {
let mut sysinfo = std::mem::zeroed();
libc::GetSystemInfo(&mut sysinfo);
sysinfo.dwNumberOfProcessors as usize
}
}

#[cfg(unix)]
fn num_cpus() -> usize {
extern { fn rust_get_num_cpus() -> libc::uintptr_t; }
unsafe { rust_get_num_cpus() as usize }
}
}

Expand Down
36 changes: 5 additions & 31 deletions src/rt/rust_builtin.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,22 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#if !defined(_WIN32)

#include <stdint.h>
#include <time.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>


#if !defined(_WIN32)
#include <dirent.h>
#include <pthread.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#else
#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>
#include <tchar.h>
#endif

#ifdef __APPLE__
#include <TargetConditionals.h>
Expand All @@ -41,17 +36,8 @@

/* Foreign builtins. */
//include valgrind.h after stdint.h so that uintptr_t is defined for msys2 w64
#ifndef _WIN32
#include "valgrind/valgrind.h"
#endif

#if defined(_MSC_VER)
# define RUST_BUILTIN_API __declspec(dllexport)
#else
# define RUST_BUILTIN_API
#endif

#ifndef _WIN32
char*
rust_list_dir_val(struct dirent* entry_ptr) {
return entry_ptr->d_name;
Expand Down Expand Up @@ -92,17 +78,8 @@ int
rust_dirent_t_size() {
return sizeof(struct dirent);
}
#endif

#if defined(_WIN32)
int
get_num_cpus() {
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);

return (int) sysinfo.dwNumberOfProcessors;
}
#elif defined(__BSD__)
#if defined(__BSD__)
int
get_num_cpus() {
/* swiped from http://stackoverflow.com/questions/150355/
Expand Down Expand Up @@ -136,19 +113,14 @@ get_num_cpus() {
}
#endif

RUST_BUILTIN_API
uintptr_t
rust_get_num_cpus() {
return get_num_cpus();
}

uintptr_t
rust_running_on_valgrind() {
#ifdef _WIN32
return 0;
#else
return RUNNING_ON_VALGRIND;
#endif
}

#if defined(__DragonFly__)
Expand Down Expand Up @@ -484,6 +456,8 @@ const char * rust_current_exe() {

#endif

#endif // !defined(_WIN32)

//
// Local Variables:
// mode: C++
Expand Down

0 comments on commit 83ee47b

Please sign in to comment.