Skip to content

Commit

Permalink
Auto merge of #634 - ndusart:master, r=alexcrichton
Browse files Browse the repository at this point in the history
Update NDK to r15b and add some missing symbols

Use the new unified headers of the NDK and add some missing symbols for Android.

Fixes #632
  • Loading branch information
bors committed Jul 3, 2017
2 parents 8ec65a1 + 4abc3ce commit ab78851
Show file tree
Hide file tree
Showing 17 changed files with 48 additions and 34 deletions.
9 changes: 5 additions & 4 deletions ci/android-install-ndk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@

set -ex

curl -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip
unzip -q android-ndk-r13b-linux-x86_64.zip
curl -O https://dl.google.com/android/repository/android-ndk-r15b-linux-x86_64.zip
unzip -q android-ndk-r15b-linux-x86_64.zip

case "$1" in
aarch64)
Expand All @@ -28,9 +28,10 @@ case "$1" in
;;
esac;

android-ndk-r13b/build/tools/make_standalone_toolchain.py \
android-ndk-r15b/build/tools/make_standalone_toolchain.py \
--unified-headers \
--install-dir /android/ndk-$1 \
--arch $arch \
--api 24

rm -rf ./android-ndk-r13b-linux-x86_64.zip ./android-ndk-r13b
rm -rf ./android-ndk-r15b-linux-x86_64.zip ./android-ndk-r15b
2 changes: 1 addition & 1 deletion ci/docker/x86_64-linux-android/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ RUN sh /android/android-install-ndk.sh $ANDROID_ARCH
# We do not run x86_64-linux-android tests on an android emulator.
# See ci/android-sysimage.sh for informations about how tests are run.
COPY android-sysimage.sh /android/
RUN bash /android/android-sysimage.sh x86_64 x86_64-21_r04.zip
RUN bash /android/android-sysimage.sh x86_64 x86_64-24_r07.zip

ENV PATH=$PATH:/rust/bin:/android/ndk-$ANDROID_ARCH/bin \
CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \
Expand Down
Empty file modified ci/run-docker.sh
100644 → 100755
Empty file.
17 changes: 16 additions & 1 deletion libc-test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,6 @@ fn main() {
cfg.header("sys/shm.h");
cfg.header("sys/user.h");
cfg.header("sys/fsuid.h");
cfg.header("pty.h");
cfg.header("shadow.h");
cfg.header("linux/input.h");
if x86_64 {
Expand All @@ -200,6 +199,7 @@ fn main() {
cfg.header("sys/syscall.h");
cfg.header("sys/personality.h");
cfg.header("sys/swap.h");
cfg.header("pty.h");
if !uclibc {
cfg.header("sys/sysinfo.h");
}
Expand Down Expand Up @@ -337,6 +337,11 @@ fn main() {
// definition. Because it's tested on other Linux targets, skip it.
"input_mask" if musl => true,

// These structs have changed since unified headers in NDK r14b.
// `st_atime` and `st_atime_nsec` have changed sign.
// FIXME: unskip it for next major release
"stat" | "stat64" if android => true,

_ => false
}
});
Expand Down Expand Up @@ -534,6 +539,16 @@ fn main() {
// On Mac we don't use the default `close()`, instead using their $NOCANCEL variants.
"close" if apple => true,

// Definition of those functions as changed since unified headers from NDK r14b
// These changes imply some API breaking changes but are still ABI compatible.
// We can wait for the next major release to be compliant with the new API.
// FIXME: unskip these for next major release
"strerror_r" | "madvise" | "msync" | "mprotect" | "recvfrom" | "getpriority" |
"setpriority" | "personality" if android => true,
// In Android 64 bits, these functions have been fixed since unified headers.
// Ignore these until next major version.
"bind" | "writev" | "readv" | "sendmsg" | "recvmsg" if android && (aarch64 || x86_64) => true,

_ => false,
}
});
Expand Down
3 changes: 3 additions & 0 deletions src/unix/notbsd/android/b32/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,9 @@ pub const UT_LINESIZE: usize = 8;
pub const UT_NAMESIZE: usize = 8;
pub const UT_HOSTSIZE: usize = 16;

pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;

extern {
pub fn bind(socket: ::c_int, address: *const ::sockaddr,
address_len: socklen_t) -> ::c_int;
Expand Down
3 changes: 3 additions & 0 deletions src/unix/notbsd/android/b64/aarch64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,6 @@ pub const O_DIRECTORY: ::c_int = 0x4000;
pub const O_NOFOLLOW: ::c_int = 0x8000;

pub const SYS_gettid: ::c_long = 178;

pub const SIGSTKSZ: ::size_t = 16384;
pub const MINSIGSTKSZ: ::size_t = 5120;
3 changes: 3 additions & 0 deletions src/unix/notbsd/android/b64/x86_64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,6 @@ pub const O_DIRECTORY: ::c_int = 0x10000;
pub const O_NOFOLLOW: ::c_int = 0x20000;

pub const SYS_gettid: ::c_long = 186;

pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
7 changes: 4 additions & 3 deletions src/unix/notbsd/android/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ pub const SA_NOCLDSTOP: ::c_int = 0x00000001;

pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
pub const EPOLLONESHOT: ::c_int = 0x40000000;
pub const EPOLLRDHUP: ::c_int = 0x00002000;
pub const EPOLLWAKEUP: ::c_int = 0x20000000;

pub const EFD_CLOEXEC: ::c_int = 0x80000;

Expand Down Expand Up @@ -471,7 +473,7 @@ pub const SOL_NETROM: ::c_int = 259;
pub const SOL_ROSE: ::c_int = 260;

#[doc(hidden)]
pub const AF_MAX: ::c_int = 39;
pub const AF_MAX: ::c_int = 43;
#[doc(hidden)]
pub const PF_MAX: ::c_int = AF_MAX;

Expand Down Expand Up @@ -504,6 +506,7 @@ pub const O_NONBLOCK: ::c_int = 2048;
pub const O_SYNC: ::c_int = 0x101000;
pub const O_ASYNC: ::c_int = 0x2000;
pub const O_NDELAY: ::c_int = 0x800;
pub const O_DSYNC: ::c_int = 4096;

pub const NI_MAXHOST: ::size_t = 1025;

Expand Down Expand Up @@ -631,8 +634,6 @@ pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;

pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::c_int = 0x00000800;
pub const TAB2: ::c_int = 0x00001000;
Expand Down
2 changes: 0 additions & 2 deletions src/unix/notbsd/linux/mips/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ s! {
}
}

pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;

pub const SFD_CLOEXEC: ::c_int = 0x080000;

pub const NCCS: usize = 32;
Expand Down
12 changes: 0 additions & 12 deletions src/unix/notbsd/linux/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1092,7 +1092,6 @@ extern {
timeout: ::c_int,
sigmask: *const ::sigset_t) -> ::c_int;
pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;
pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;
pub fn mkostemps(template: *mut ::c_char,
suffixlen: ::c_int,
Expand All @@ -1102,15 +1101,6 @@ extern {
timeout: *const ::timespec) -> ::c_int;
pub fn sigwaitinfo(set: *const sigset_t,
info: *mut siginfo_t) -> ::c_int;
pub fn openpty(amaster: *mut ::c_int,
aslave: *mut ::c_int,
name: *mut ::c_char,
termp: *const termios,
winp: *const ::winsize) -> ::c_int;
pub fn forkpty(amaster: *mut ::c_int,
name: *mut ::c_char,
termp: *const termios,
winp: *const ::winsize) -> ::pid_t;
pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;
pub fn getnameinfo(sa: *const ::sockaddr,
salen: ::socklen_t,
Expand Down Expand Up @@ -1143,8 +1133,6 @@ extern {
pub fn reboot(how_to: ::c_int) -> ::c_int;
pub fn setfsgid(gid: ::gid_t) -> ::c_int;
pub fn setfsuid(uid: ::uid_t) -> ::c_int;
pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;
pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;

// Not available now on Android
pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char,
Expand Down
2 changes: 0 additions & 2 deletions src/unix/notbsd/linux/musl/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,6 @@ s! {
}
}

pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;

pub const SFD_CLOEXEC: ::c_int = 0x080000;

pub const NCCS: usize = 32;
Expand Down
1 change: 0 additions & 1 deletion src/unix/notbsd/linux/other/b32/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,6 @@ pub const TIOCMBIS: ::c_ulong = 0x5416;
pub const TIOCMBIC: ::c_ulong = 0x5417;
pub const TIOCMSET: ::c_ulong = 0x5418;
pub const TIOCCONS: ::c_ulong = 0x541D;
pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;

pub const SFD_CLOEXEC: ::c_int = 0x080000;

Expand Down
2 changes: 0 additions & 2 deletions src/unix/notbsd/linux/other/b64/aarch64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -288,8 +288,6 @@ pub const TIOCMBIC: ::c_ulong = 0x5417;
pub const TIOCMSET: ::c_ulong = 0x5418;
pub const TIOCCONS: ::c_ulong = 0x541D;

pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;

pub const SFD_CLOEXEC: ::c_int = 0x080000;

pub const NCCS: usize = 32;
Expand Down
2 changes: 0 additions & 2 deletions src/unix/notbsd/linux/other/b64/powerpc64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -286,8 +286,6 @@ pub const TIOCMBIC: ::c_ulong = 0x5417;
pub const TIOCMSET: ::c_ulong = 0x5418;
pub const TIOCCONS: ::c_ulong = 0x541D;

pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;

pub const SFD_CLOEXEC: ::c_int = 0x080000;

pub const NCCS: usize = 32;
Expand Down
2 changes: 0 additions & 2 deletions src/unix/notbsd/linux/other/b64/x86_64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -389,8 +389,6 @@ pub const TIOCMBIC: ::c_ulong = 0x5417;
pub const TIOCMSET: ::c_ulong = 0x5418;
pub const TIOCCONS: ::c_ulong = 0x541D;

pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;

pub const SFD_CLOEXEC: ::c_int = 0x080000;

pub const NCCS: usize = 32;
Expand Down
2 changes: 0 additions & 2 deletions src/unix/notbsd/linux/s390x.rs
Original file line number Diff line number Diff line change
Expand Up @@ -273,8 +273,6 @@ s! {
}
}

pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;

pub const SFD_CLOEXEC: ::c_int = 0x080000;

pub const NCCS: usize = 32;
Expand Down
13 changes: 13 additions & 0 deletions src/unix/notbsd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,7 @@ pub const CLONE_NEWUSER: ::c_int = 0x10000000;
pub const CLONE_NEWPID: ::c_int = 0x20000000;
pub const CLONE_NEWNET: ::c_int = 0x40000000;
pub const CLONE_IO: ::c_int = 0x80000000;
pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;

pub const WNOHANG: ::c_int = 0x00000001;
pub const WUNTRACED: ::c_int = 0x00000002;
Expand Down Expand Up @@ -1016,8 +1017,20 @@ extern {
pub fn brk(addr: *mut ::c_void) -> ::c_int;
pub fn sbrk(increment: ::intptr_t) -> *mut ::c_void;
pub fn vfork() -> ::pid_t;
pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;
pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;
pub fn wait4(pid: ::pid_t, status: *mut ::c_int, options: ::c_int,
rusage: *mut ::rusage) -> ::pid_t;
pub fn openpty(amaster: *mut ::c_int,
aslave: *mut ::c_int,
name: *mut ::c_char,
termp: *const termios,
winp: *const ::winsize) -> ::c_int;
pub fn forkpty(amaster: *mut ::c_int,
name: *mut ::c_char,
termp: *const termios,
winp: *const ::winsize) -> ::pid_t;
}

cfg_if! {
Expand Down

0 comments on commit ab78851

Please sign in to comment.