mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Various fixes for x86_64 on linux
Configure LLVM correctly, use the right data layout, add the readlink function back, fix C constants, etc.
This commit is contained in:
parent
319f3b02f3
commit
d2199e8716
28
configure
vendored
28
configure
vendored
@ -339,7 +339,7 @@ if [ -z "$CFG_TARGET_TRIPLES" ]
|
|||||||
then
|
then
|
||||||
CFG_TARGET_TRIPLES="${CFG_HOST_TRIPLE}"
|
CFG_TARGET_TRIPLES="${CFG_HOST_TRIPLE}"
|
||||||
else
|
else
|
||||||
CFG_TARGET_TRIPLES="${CFG_TARGET_TRIPLES/,/ }"
|
CFG_TARGET_TRIPLES="$(echo $CFG_TARGET_TRIPLES | tr ',' ' ')"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -459,12 +459,26 @@ do
|
|||||||
LLVM_CXXFLAGS_32="-m32"
|
LLVM_CXXFLAGS_32="-m32"
|
||||||
LLVM_LDFLAGS_32="-m32"
|
LLVM_LDFLAGS_32="-m32"
|
||||||
|
|
||||||
# FIXME: Need to change flags for x64
|
LLVM_CXX_64="g++"
|
||||||
LLVM_CXX=$LLVM_CXX_32
|
LLVM_CC_64="gcc"
|
||||||
LLVM_CC=$LLVM_CC_32
|
LLVM_CFLAGS_64=""
|
||||||
LLVM_CFLAGS=$LLVM_CFLAGS_32
|
LLVM_CXXFLAGS_64=""
|
||||||
LLVM_CXXFLAGS=$LLVM_CXXFLAGS_32
|
LLVM_LDFLAGS_64=""
|
||||||
LLVM_LDFLAGS=$LLVM_LDFLAGS_32
|
|
||||||
|
if echo $t | grep x86_64
|
||||||
|
then
|
||||||
|
LLVM_CXX=$LLVM_CXX_64
|
||||||
|
LLVM_CC=$LLVM_CC_64
|
||||||
|
LLVM_CFLAGS=$LLVM_CFLAGS_64
|
||||||
|
LLVM_CXXFLAGS=$LLVM_CXXFLAGS_64
|
||||||
|
LLVM_LDFLAGS=$LLVM_LDFLAGS_64
|
||||||
|
else
|
||||||
|
LLVM_CXX=$LLVM_CXX_32
|
||||||
|
LLVM_CC=$LLVM_CC_32
|
||||||
|
LLVM_CFLAGS=$LLVM_CFLAGS_32
|
||||||
|
LLVM_CXXFLAGS=$LLVM_CXXFLAGS_32
|
||||||
|
LLVM_LDFLAGS=$LLVM_LDFLAGS_32
|
||||||
|
fi
|
||||||
|
|
||||||
CXX=$LLVM_CXX
|
CXX=$LLVM_CXX
|
||||||
CC=$LLVM_CC
|
CC=$LLVM_CC
|
||||||
|
@ -18,11 +18,16 @@ fn get_target_strs(target_os: session::os) -> target_strs::t {
|
|||||||
}
|
}
|
||||||
|
|
||||||
session::os_win32. {
|
session::os_win32. {
|
||||||
"e-p:32:32-f64:64:64-i64:64:64-f80:32:32-n8:16:32" //NDM i386
|
// FIXME: Test this. Copied from linux
|
||||||
|
"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"
|
||||||
}
|
}
|
||||||
|
|
||||||
session::os_linux. {
|
session::os_linux. {
|
||||||
"e-p:32:32-f64:32:64-i64:32:64-f80:32:32-n8:16:32" //NDM i386
|
"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"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ native mod libc {
|
|||||||
fn unsetenv(n: str::sbuf) -> c_int;
|
fn unsetenv(n: str::sbuf) -> c_int;
|
||||||
fn pipe(buf: *mutable fd_t) -> c_int;
|
fn pipe(buf: *mutable fd_t) -> c_int;
|
||||||
fn waitpid(pid: pid_t, &status: c_int, options: c_int) -> pid_t;
|
fn waitpid(pid: pid_t, &status: c_int, options: c_int) -> pid_t;
|
||||||
|
fn readlink(path: str::sbuf, buf: str::sbuf, bufsize: size_t) -> ssize_t;
|
||||||
}
|
}
|
||||||
|
|
||||||
mod libc_constants {
|
mod libc_constants {
|
||||||
|
@ -278,7 +278,7 @@ fn waitpid(pid: pid_t) -> int {
|
|||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
fn WEXITSTATUS(status: i32) -> i32 {
|
fn WEXITSTATUS(status: i32) -> i32 {
|
||||||
(status >> 8) & 0xff
|
(status >> 8i32) & 0xffi32
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
|
@ -61,7 +61,7 @@ upcall_call_c_stack_float:
|
|||||||
_upcall_call_c_stack_shim:
|
_upcall_call_c_stack_shim:
|
||||||
#else
|
#else
|
||||||
.globl upcall_call_c_stack_shim
|
.globl upcall_call_c_stack_shim
|
||||||
upcall_call_c_stack_shim
|
upcall_call_c_stack_shim:
|
||||||
#endif
|
#endif
|
||||||
push %rbp
|
push %rbp
|
||||||
mov %rsp,%rbp // save rsp
|
mov %rsp,%rbp // save rsp
|
||||||
|
Loading…
Reference in New Issue
Block a user