aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge E. Moreira <jemoreira@google.com>2021-04-22 15:22:56 -0700
committerJorge E. Moreira <jemoreira@google.com>2021-04-26 13:24:17 -0700
commit4c174715e21655b2c1bcacb15a73931523d421bf (patch)
tree57ba28161f3a92ca6e717a4419b23f9722937d23
parent024b0b1362fd8c3eebf80fe77a7187c2a73b9abb (diff)
downloadlibc-4c174715e21655b2c1bcacb15a73931523d421bf.tar.gz
Add functions and constants crosvm depends on to the android targets
Rust's Libc doesn't expose some functions and constants for android even though those are present in bionic and available to native code. This change temporarily adds the ones that crosvm depends on until the problem is fixed upstream. Bug: 185155959 Test: locally Change-Id: Ib955ba8ced45580561e50afc5d77a2e9b7170168
-rw-r--r--patches/missing.diff78
-rw-r--r--src/unix/linux_like/android/b32/arm.rs2
-rw-r--r--src/unix/linux_like/android/b32/x86/mod.rs2
-rw-r--r--src/unix/linux_like/android/b64/aarch64/mod.rs2
-rw-r--r--src/unix/linux_like/android/b64/x86_64/mod.rs2
-rw-r--r--src/unix/linux_like/android/mod.rs8
6 files changed, 94 insertions, 0 deletions
diff --git a/patches/missing.diff b/patches/missing.diff
new file mode 100644
index 00000000..2ff68841
--- /dev/null
+++ b/patches/missing.diff
@@ -0,0 +1,78 @@
+diff --git a/src/unix/linux_like/android/b32/arm.rs b/src/unix/linux_like/android/b32/arm.rs
+index 8a53e539..6fd47679 100644
+--- a/src/unix/linux_like/android/b32/arm.rs
++++ b/src/unix/linux_like/android/b32/arm.rs
+@@ -501,6 +501,8 @@ pub const SYS_pwritev2: ::c_long = 393;
+ pub const SYS_pkey_mprotect: ::c_long = 394;
+ pub const SYS_pkey_alloc: ::c_long = 395;
+ pub const SYS_pkey_free: ::c_long = 396;
++pub const SYS_io_uring_setup: ::c_long = 425;
++pub const SYS_io_uring_enter: ::c_long = 426;
+
+ // offsets in mcontext_t.gregs from sys/ucontext.h
+ pub const REG_R0: ::c_int = 0;
+diff --git a/src/unix/linux_like/android/b32/x86/mod.rs b/src/unix/linux_like/android/b32/x86/mod.rs
+index 6507cb4e..ee537fd0 100644
+--- a/src/unix/linux_like/android/b32/x86/mod.rs
++++ b/src/unix/linux_like/android/b32/x86/mod.rs
+@@ -533,6 +533,8 @@ pub const SYS_pwritev2: ::c_long = 379;
+ pub const SYS_pkey_mprotect: ::c_long = 380;
+ pub const SYS_pkey_alloc: ::c_long = 381;
+ pub const SYS_pkey_free: ::c_long = 382;
++pub const SYS_io_uring_setup: ::c_long = 425;
++pub const SYS_io_uring_enter: ::c_long = 426;
+
+ // offsets in user_regs_structs, from sys/reg.h
+ pub const EBX: ::c_int = 0;
+diff --git a/src/unix/linux_like/android/b64/aarch64/mod.rs b/src/unix/linux_like/android/b64/aarch64/mod.rs
+index 5acb328b..316596f5 100644
+--- a/src/unix/linux_like/android/b64/aarch64/mod.rs
++++ b/src/unix/linux_like/android/b64/aarch64/mod.rs
+@@ -365,6 +365,8 @@ pub const SYS_pwritev2: ::c_long = 287;
+ pub const SYS_pkey_mprotect: ::c_long = 288;
+ pub const SYS_pkey_alloc: ::c_long = 289;
+ pub const SYS_pkey_free: ::c_long = 290;
++pub const SYS_io_uring_setup: ::c_long = 425;
++pub const SYS_io_uring_enter: ::c_long = 426;
+ pub const SYS_syscalls: ::c_long = 436;
+
+ cfg_if! {
+diff --git a/src/unix/linux_like/android/b64/x86_64/mod.rs b/src/unix/linux_like/android/b64/x86_64/mod.rs
+index 27fd17b3..5b559dde 100644
+--- a/src/unix/linux_like/android/b64/x86_64/mod.rs
++++ b/src/unix/linux_like/android/b64/x86_64/mod.rs
+@@ -602,6 +602,8 @@ pub const SYS_pwritev2: ::c_long = 328;
+ pub const SYS_pkey_mprotect: ::c_long = 329;
+ pub const SYS_pkey_alloc: ::c_long = 330;
+ pub const SYS_pkey_free: ::c_long = 331;
++pub const SYS_io_uring_setup: ::c_long = 425;
++pub const SYS_io_uring_enter: ::c_long = 426;
+
+ // offsets in user_regs_structs, from sys/reg.h
+ pub const R15: ::c_int = 0;
+diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs
+index d64a365e..541b40f3 100644
+--- a/src/unix/linux_like/android/mod.rs
++++ b/src/unix/linux_like/android/mod.rs
+@@ -2285,6 +2285,10 @@ pub const AF_VSOCK: ::c_int = 40;
+ pub const PF_NFC: ::c_int = AF_NFC;
+ pub const PF_VSOCK: ::c_int = AF_VSOCK;
+
++// sys/prctl.h
++pub const PR_GET_SECUREBITS: ::c_int = 27;
++pub const PR_SET_SECUREBITS: ::c_int = 28;
++
+ f! {
+ pub fn CMSG_NXTHDR(mhdr: *const msghdr,
+ cmsg: *const cmsghdr) -> *mut cmsghdr {
+@@ -2709,6 +2713,10 @@ extern "C" {
+ pub fn android_set_abort_message(msg: *const ::c_char);
+
+ pub fn gettid() -> ::pid_t;
++
++ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;
++
++ pub fn pthread_setname_np(thread: ::pthread_t, name: *const ::c_char) -> ::c_int;
+ }
+
+ cfg_if! {
diff --git a/src/unix/linux_like/android/b32/arm.rs b/src/unix/linux_like/android/b32/arm.rs
index 8a53e539..6fd47679 100644
--- a/src/unix/linux_like/android/b32/arm.rs
+++ b/src/unix/linux_like/android/b32/arm.rs
@@ -501,6 +501,8 @@ pub const SYS_pwritev2: ::c_long = 393;
pub const SYS_pkey_mprotect: ::c_long = 394;
pub const SYS_pkey_alloc: ::c_long = 395;
pub const SYS_pkey_free: ::c_long = 396;
+pub const SYS_io_uring_setup: ::c_long = 425;
+pub const SYS_io_uring_enter: ::c_long = 426;
// offsets in mcontext_t.gregs from sys/ucontext.h
pub const REG_R0: ::c_int = 0;
diff --git a/src/unix/linux_like/android/b32/x86/mod.rs b/src/unix/linux_like/android/b32/x86/mod.rs
index 6507cb4e..ee537fd0 100644
--- a/src/unix/linux_like/android/b32/x86/mod.rs
+++ b/src/unix/linux_like/android/b32/x86/mod.rs
@@ -533,6 +533,8 @@ pub const SYS_pwritev2: ::c_long = 379;
pub const SYS_pkey_mprotect: ::c_long = 380;
pub const SYS_pkey_alloc: ::c_long = 381;
pub const SYS_pkey_free: ::c_long = 382;
+pub const SYS_io_uring_setup: ::c_long = 425;
+pub const SYS_io_uring_enter: ::c_long = 426;
// offsets in user_regs_structs, from sys/reg.h
pub const EBX: ::c_int = 0;
diff --git a/src/unix/linux_like/android/b64/aarch64/mod.rs b/src/unix/linux_like/android/b64/aarch64/mod.rs
index 5acb328b..316596f5 100644
--- a/src/unix/linux_like/android/b64/aarch64/mod.rs
+++ b/src/unix/linux_like/android/b64/aarch64/mod.rs
@@ -365,6 +365,8 @@ pub const SYS_pwritev2: ::c_long = 287;
pub const SYS_pkey_mprotect: ::c_long = 288;
pub const SYS_pkey_alloc: ::c_long = 289;
pub const SYS_pkey_free: ::c_long = 290;
+pub const SYS_io_uring_setup: ::c_long = 425;
+pub const SYS_io_uring_enter: ::c_long = 426;
pub const SYS_syscalls: ::c_long = 436;
cfg_if! {
diff --git a/src/unix/linux_like/android/b64/x86_64/mod.rs b/src/unix/linux_like/android/b64/x86_64/mod.rs
index 27fd17b3..5b559dde 100644
--- a/src/unix/linux_like/android/b64/x86_64/mod.rs
+++ b/src/unix/linux_like/android/b64/x86_64/mod.rs
@@ -602,6 +602,8 @@ pub const SYS_pwritev2: ::c_long = 328;
pub const SYS_pkey_mprotect: ::c_long = 329;
pub const SYS_pkey_alloc: ::c_long = 330;
pub const SYS_pkey_free: ::c_long = 331;
+pub const SYS_io_uring_setup: ::c_long = 425;
+pub const SYS_io_uring_enter: ::c_long = 426;
// offsets in user_regs_structs, from sys/reg.h
pub const R15: ::c_int = 0;
diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs
index d64a365e..541b40f3 100644
--- a/src/unix/linux_like/android/mod.rs
+++ b/src/unix/linux_like/android/mod.rs
@@ -2285,6 +2285,10 @@ pub const AF_VSOCK: ::c_int = 40;
pub const PF_NFC: ::c_int = AF_NFC;
pub const PF_VSOCK: ::c_int = AF_VSOCK;
+// sys/prctl.h
+pub const PR_GET_SECUREBITS: ::c_int = 27;
+pub const PR_SET_SECUREBITS: ::c_int = 28;
+
f! {
pub fn CMSG_NXTHDR(mhdr: *const msghdr,
cmsg: *const cmsghdr) -> *mut cmsghdr {
@@ -2709,6 +2713,10 @@ extern "C" {
pub fn android_set_abort_message(msg: *const ::c_char);
pub fn gettid() -> ::pid_t;
+
+ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;
+
+ pub fn pthread_setname_np(thread: ::pthread_t, name: *const ::c_char) -> ::c_int;
}
cfg_if! {