mirror of https://github.com/rust-lang/rust.git
auto merge of #20024 : mneumann/rust/dragonfly-fixes3, r=alexcrichton
This commit is contained in:
commit
ead198c513
|
@ -7,9 +7,9 @@ CFG_LIB_NAME_x86_64-unknown-dragonfly=lib$(1).so
|
|||
CFG_STATIC_LIB_NAME_x86_64-unknown-dragonfly=lib$(1).a
|
||||
CFG_LIB_GLOB_x86_64-unknown-dragonfly=lib$(1)-*.so
|
||||
CFG_LIB_DSYM_GLOB_x86_64-unknown-dragonfly=$(1)-*.dylib.dSYM
|
||||
CFG_JEMALLOC_CFLAGS_x86_64-unknown-dragonfly := -I/usr/include -I/usr/local/include $(CFLAGS)
|
||||
CFG_GCCISH_CFLAGS_x86_64-unknown-dragonfly := -Wall -Werror -g -fPIC -I/usr/include -I/usr/local/include $(CFLAGS)
|
||||
CFG_GCCISH_LINK_FLAGS_x86_64-unknown-dragonfly := -shared -fPIC -g -pthread -lrt
|
||||
CFG_JEMALLOC_CFLAGS_x86_64-unknown-dragonfly := -m64 -I/usr/include -I/usr/local/include $(CFLAGS)
|
||||
CFG_GCCISH_CFLAGS_x86_64-unknown-dragonfly := -Wall -Werror -g -fPIC -m64 -I/usr/include -I/usr/local/include $(CFLAGS)
|
||||
CFG_GCCISH_LINK_FLAGS_x86_64-unknown-dragonfly := -shared -fPIC -g -pthread -lrt -m64
|
||||
CFG_GCCISH_DEF_FLAG_x86_64-unknown-dragonfly := -Wl,--export-dynamic,--dynamic-list=
|
||||
CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-dragonfly := -Wl,-whole-archive
|
||||
CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-dragonfly := -Wl,-no-whole-archive
|
||||
|
|
|
@ -37,6 +37,7 @@ snapshot_files = {
|
|||
"macos": ["bin/rustc"],
|
||||
"winnt": ["bin/rustc.exe"],
|
||||
"freebsd": ["bin/rustc"],
|
||||
"dragonfly": ["bin/rustc"],
|
||||
}
|
||||
|
||||
winnt_runtime_deps_32 = ["libgcc_s_dw2-1.dll",
|
||||
|
@ -86,6 +87,8 @@ def get_kernel(triple):
|
|||
return "macos"
|
||||
if os_name == "freebsd":
|
||||
return "freebsd"
|
||||
if os_name == "dragonfly":
|
||||
return "dragonfly"
|
||||
return "linux"
|
||||
|
||||
def get_cpu(triple):
|
||||
|
|
|
@ -1095,6 +1095,7 @@ pub mod types {
|
|||
pub type sighandler_t = size_t;
|
||||
}
|
||||
pub mod bsd44 {
|
||||
use types::common::c95::{c_void};
|
||||
use types::os::arch::c95::{c_char, c_int, c_uint};
|
||||
|
||||
pub type socklen_t = u32;
|
||||
|
@ -1167,6 +1168,17 @@ pub mod types {
|
|||
pub sun_family: sa_family_t,
|
||||
pub sun_path: [c_char, ..104]
|
||||
}
|
||||
#[repr(C)]
|
||||
#[deriving(Copy)] pub struct ifaddrs {
|
||||
pub ifa_next: *mut ifaddrs,
|
||||
pub ifa_name: *mut c_char,
|
||||
pub ifa_flags: c_uint,
|
||||
pub ifa_addr: *mut sockaddr,
|
||||
pub ifa_netmask: *mut sockaddr,
|
||||
pub ifa_dstaddr: *mut sockaddr,
|
||||
pub ifa_data: *mut c_void
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -215,22 +215,7 @@ mod test {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(target_os = "freebsd")]
|
||||
fn test_rpath_relative() {
|
||||
let config = &mut RPathConfig {
|
||||
used_crates: Vec::new(),
|
||||
has_rpath: true,
|
||||
is_like_osx: false,
|
||||
out_filename: Path::new("bin/rustc"),
|
||||
get_install_prefix_lib_path: || panic!(),
|
||||
realpath: |p| Ok(p.clone())
|
||||
};
|
||||
let res = get_rpath_relative_to_output(config, &Path::new("lib/libstd.so"));
|
||||
assert_eq!(res, "$ORIGIN/../lib");
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(target_os = "dragonfly")]
|
||||
#[cfg(any(target_os = "freebsd", target_os = "dragonfly"))]
|
||||
fn test_rpath_relative() {
|
||||
let config = &mut RPathConfig {
|
||||
used_crates: Vec::new(),
|
||||
|
|
|
@ -17,13 +17,18 @@ pub fn opts() -> TargetOptions {
|
|||
dynamic_linking: true,
|
||||
executables: true,
|
||||
morestack: true,
|
||||
linker_is_gnu: true,
|
||||
has_rpath: true,
|
||||
pre_link_args: vec!(
|
||||
"-L/usr/local/lib".to_string(),
|
||||
"-L/usr/local/lib/gcc47".to_string(),
|
||||
"-L/usr/local/lib/gcc44".to_string(),
|
||||
"-L/usr/lib/gcc47".to_string(),
|
||||
// GNU-style linkers will use this to omit linking to libraries
|
||||
// which don't actually fulfill any relocations, but only for
|
||||
// libraries which follow this flag. Thus, use it before
|
||||
// specifying libraries to link to.
|
||||
"-Wl,--as-needed".to_string(),
|
||||
),
|
||||
|
||||
position_independent_executables: true,
|
||||
.. Default::default()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,13 +11,18 @@
|
|||
use target::Target;
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::dragonfly_base::opts();
|
||||
base.pre_link_args.push("-m64".to_string());
|
||||
|
||||
Target {
|
||||
data_layout: "e-p:32:32-f64:32:64-i64:32:64-f80:32:32-n8:16:32".to_string(),
|
||||
data_layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-\
|
||||
f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-\
|
||||
s0:64:64-f80:128:128-n8:16:32:64-S128".to_string(),
|
||||
llvm_target: "x86_64-unknown-dragonfly".to_string(),
|
||||
target_endian: "little".to_string(),
|
||||
target_word_size: "32".to_string(),
|
||||
target_word_size: "64".to_string(),
|
||||
arch: "x86_64".to_string(),
|
||||
target_os: "dragonfly".to_string(),
|
||||
options: super::dragonfly_base::opts()
|
||||
options: base,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -172,7 +172,7 @@ pub fn join_paths<T: BytesContainer>(paths: &[T]) -> Result<Vec<u8>, &'static st
|
|||
Ok(joined)
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "freebsd", target_os = "dragonfly"))]
|
||||
#[cfg(target_os = "freebsd")]
|
||||
pub fn load_self() -> Option<Vec<u8>> {
|
||||
unsafe {
|
||||
use libc::funcs::bsd44::*;
|
||||
|
@ -198,6 +198,16 @@ pub fn load_self() -> Option<Vec<u8>> {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "dragonfly")]
|
||||
pub fn load_self() -> Option<Vec<u8>> {
|
||||
use std::io;
|
||||
|
||||
match io::fs::readlink(&Path::new("/proc/curproc/file")) {
|
||||
Ok(path) => Some(path.into_vec()),
|
||||
Err(..) => None
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
pub fn load_self() -> Option<Vec<u8>> {
|
||||
use std::io;
|
||||
|
|
Loading…
Reference in New Issue