mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 01:34:21 +00:00
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_STATIC_LIB_NAME_x86_64-unknown-dragonfly=lib$(1).a
|
||||||
CFG_LIB_GLOB_x86_64-unknown-dragonfly=lib$(1)-*.so
|
CFG_LIB_GLOB_x86_64-unknown-dragonfly=lib$(1)-*.so
|
||||||
CFG_LIB_DSYM_GLOB_x86_64-unknown-dragonfly=$(1)-*.dylib.dSYM
|
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_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 -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
|
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_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_PRE_LIB_FLAGS_x86_64-unknown-dragonfly := -Wl,-whole-archive
|
||||||
CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-dragonfly := -Wl,-no-whole-archive
|
CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-dragonfly := -Wl,-no-whole-archive
|
||||||
|
@ -37,6 +37,7 @@ snapshot_files = {
|
|||||||
"macos": ["bin/rustc"],
|
"macos": ["bin/rustc"],
|
||||||
"winnt": ["bin/rustc.exe"],
|
"winnt": ["bin/rustc.exe"],
|
||||||
"freebsd": ["bin/rustc"],
|
"freebsd": ["bin/rustc"],
|
||||||
|
"dragonfly": ["bin/rustc"],
|
||||||
}
|
}
|
||||||
|
|
||||||
winnt_runtime_deps_32 = ["libgcc_s_dw2-1.dll",
|
winnt_runtime_deps_32 = ["libgcc_s_dw2-1.dll",
|
||||||
@ -86,6 +87,8 @@ def get_kernel(triple):
|
|||||||
return "macos"
|
return "macos"
|
||||||
if os_name == "freebsd":
|
if os_name == "freebsd":
|
||||||
return "freebsd"
|
return "freebsd"
|
||||||
|
if os_name == "dragonfly":
|
||||||
|
return "dragonfly"
|
||||||
return "linux"
|
return "linux"
|
||||||
|
|
||||||
def get_cpu(triple):
|
def get_cpu(triple):
|
||||||
|
@ -1095,6 +1095,7 @@ pub mod types {
|
|||||||
pub type sighandler_t = size_t;
|
pub type sighandler_t = size_t;
|
||||||
}
|
}
|
||||||
pub mod bsd44 {
|
pub mod bsd44 {
|
||||||
|
use types::common::c95::{c_void};
|
||||||
use types::os::arch::c95::{c_char, c_int, c_uint};
|
use types::os::arch::c95::{c_char, c_int, c_uint};
|
||||||
|
|
||||||
pub type socklen_t = u32;
|
pub type socklen_t = u32;
|
||||||
@ -1167,6 +1168,17 @@ pub mod types {
|
|||||||
pub sun_family: sa_family_t,
|
pub sun_family: sa_family_t,
|
||||||
pub sun_path: [c_char, ..104]
|
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]
|
#[test]
|
||||||
#[cfg(target_os = "freebsd")]
|
#[cfg(any(target_os = "freebsd", target_os = "dragonfly"))]
|
||||||
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")]
|
|
||||||
fn test_rpath_relative() {
|
fn test_rpath_relative() {
|
||||||
let config = &mut RPathConfig {
|
let config = &mut RPathConfig {
|
||||||
used_crates: Vec::new(),
|
used_crates: Vec::new(),
|
||||||
|
@ -17,13 +17,18 @@ pub fn opts() -> TargetOptions {
|
|||||||
dynamic_linking: true,
|
dynamic_linking: true,
|
||||||
executables: true,
|
executables: true,
|
||||||
morestack: true,
|
morestack: true,
|
||||||
|
linker_is_gnu: true,
|
||||||
has_rpath: true,
|
has_rpath: true,
|
||||||
pre_link_args: vec!(
|
pre_link_args: vec!(
|
||||||
"-L/usr/local/lib".to_string(),
|
"-L/usr/local/lib".to_string(),
|
||||||
"-L/usr/local/lib/gcc47".to_string(),
|
"-L/usr/lib/gcc47".to_string(),
|
||||||
"-L/usr/local/lib/gcc44".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()
|
.. Default::default()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,13 +11,18 @@
|
|||||||
use target::Target;
|
use target::Target;
|
||||||
|
|
||||||
pub fn target() -> Target {
|
pub fn target() -> Target {
|
||||||
|
let mut base = super::dragonfly_base::opts();
|
||||||
|
base.pre_link_args.push("-m64".to_string());
|
||||||
|
|
||||||
Target {
|
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(),
|
llvm_target: "x86_64-unknown-dragonfly".to_string(),
|
||||||
target_endian: "little".to_string(),
|
target_endian: "little".to_string(),
|
||||||
target_word_size: "32".to_string(),
|
target_word_size: "64".to_string(),
|
||||||
arch: "x86_64".to_string(),
|
arch: "x86_64".to_string(),
|
||||||
target_os: "dragonfly".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)
|
Ok(joined)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "freebsd", target_os = "dragonfly"))]
|
#[cfg(target_os = "freebsd")]
|
||||||
pub fn load_self() -> Option<Vec<u8>> {
|
pub fn load_self() -> Option<Vec<u8>> {
|
||||||
unsafe {
|
unsafe {
|
||||||
use libc::funcs::bsd44::*;
|
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"))]
|
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||||
pub fn load_self() -> Option<Vec<u8>> {
|
pub fn load_self() -> Option<Vec<u8>> {
|
||||||
use std::io;
|
use std::io;
|
||||||
|
Loading…
Reference in New Issue
Block a user