Skip to content

Commit f348465

Browse files
committed
auto merge of #7128 : yichoi/rust/fix_sometc, r=brson
- Fix stat struct for Android (found by SEGV at run-pass/stat.rs) - Adjust some test cases to rpass for Android - Modify some script to rpass for Android
2 parents adeb7e7 + b82370c commit f348465

File tree

7 files changed

+92
-11
lines changed

7 files changed

+92
-11
lines changed

mk/tests.mk

+1-3
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,7 @@ CFG_ADB_TEST_DIR=/data/tmp
122122
$(info check: android device test dir $(CFG_ADB_TEST_DIR) ready \
123123
$(shell adb remount 1>/dev/null) \
124124
$(shell adb shell mkdir $(CFG_ADB_TEST_DIR) 1>/dev/null) \
125-
$(shell adb shell rm $(CFG_ADB_TEST_DIR)/*.so 1>/dev/null) \
126-
$(shell adb shell rm $(CFG_ADB_TEST_DIR)/*-arm-linux-androideabi 1>/dev/null) \
127-
$(shell adb shell rm $(CFG_ADB_TEST_DIR)/*-arm-linux-androideabi.* 1>/dev/null) \
125+
$(shell adb shell rm -rf $(CFG_ADB_TEST_DIR)/* 1>/dev/null) \
128126
$(shell adb push $(S)src/etc/adb_run_wrapper.sh $(CFG_ADB_TEST_DIR) 1>/dev/null) \
129127
$(shell adb push $(CFG_ANDROID_CROSS_PATH)/arm-linux-androideabi/lib/armv7-a/libgnustl_shared.so \
130128
$(CFG_ADB_TEST_DIR) 1>/dev/null) \

src/etc/adb_run_wrapper.sh

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,17 @@ then
1717

1818
L_RET=1
1919
L_COUNT=0
20+
cd $PATH
2021
while [ $L_RET -eq 1 ]
2122
do
22-
LD_LIBRARY_PATH=$PATH $PATH/$RUN $@ 1>$PATH/$RUN.stdout 2>$PATH/$RUN.stderr
23+
TEST_EXEC_ENV=22 LD_LIBRARY_PATH=$PATH $PATH/$RUN $@ 1>$PATH/$RUN.stdout 2>$PATH/$RUN.stderr
2324
L_RET=$?
2425
if [ $L_COUNT -gt 0 ]
2526
then
2627
/system/bin/sleep $WAIT
2728
/system/bin/sync
2829
fi
29-
L_COUNT=`expr $L_COUNT+1`
30+
L_COUNT=$((L_COUNT+1))
3031
done
3132

3233
echo $L_RET > $PATH/$RUN.exitcode

src/libstd/libc.rs

+49-1
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@ pub mod types {
257257
pub type intptr_t = int;
258258
pub type uintptr_t = uint;
259259
}
260+
#[cfg(target_arch = "x86")]
261+
#[cfg(target_arch = "mips")]
260262
pub mod posix88 {
261263
pub type off_t = i32;
262264
pub type dev_t = u64;
@@ -268,6 +270,20 @@ pub mod types {
268270
pub type mode_t = u32;
269271
pub type ssize_t = i32;
270272
}
273+
#[cfg(target_arch = "arm")]
274+
pub mod posix88 {
275+
pub type off_t = i32;
276+
pub type dev_t = u32;
277+
pub type ino_t = u32;
278+
pub type pid_t = i32;
279+
pub type uid_t = u32;
280+
pub type gid_t = u32;
281+
pub type useconds_t = u32;
282+
pub type mode_t = u16;
283+
pub type ssize_t = i32;
284+
}
285+
#[cfg(target_arch = "x86")]
286+
#[cfg(target_arch = "mips")]
271287
pub mod posix01 {
272288
use libc::types::os::arch::c95::{c_short, c_long, c_ulong, time_t};
273289
use libc::types::os::arch::posix88::{dev_t, gid_t, ino_t};
@@ -279,7 +295,6 @@ pub mod types {
279295
pub type blkcnt_t = i32;
280296

281297
#[cfg(target_arch = "x86")]
282-
#[cfg(target_arch = "arm")]
283298
pub struct stat {
284299
st_dev: dev_t,
285300
__pad1: c_short,
@@ -327,6 +342,39 @@ pub mod types {
327342
st_pad5: [c_long, ..14],
328343
}
329344
}
345+
#[cfg(target_arch = "arm")]
346+
pub mod posix01 {
347+
use libc::types::os::arch::c95::{c_uchar, c_uint, c_ulong, time_t};
348+
use libc::types::os::arch::c99::{c_longlong, c_ulonglong};
349+
use libc::types::os::arch::posix88::{uid_t, gid_t, ino_t};
350+
use libc::types::os::arch::posix88::{uid_t};
351+
352+
pub type nlink_t = u16;
353+
pub type blksize_t = u32;
354+
pub type blkcnt_t = u32;
355+
356+
pub struct stat {
357+
st_dev: c_ulonglong,
358+
__pad0: [c_uchar, ..4],
359+
__st_ino: ino_t,
360+
st_mode: c_uint,
361+
st_nlink: c_uint,
362+
st_uid: uid_t,
363+
st_gid: gid_t,
364+
st_rdev: c_ulonglong,
365+
__pad3: [c_uchar, ..4],
366+
st_size: c_longlong,
367+
st_blksize: blksize_t,
368+
st_blocks: c_ulonglong,
369+
st_atime: time_t,
370+
st_atime_nsec: c_ulong,
371+
st_mtime: time_t,
372+
st_mtime_nsec: c_ulong,
373+
st_ctime: time_t,
374+
st_ctime_nsec: c_ulong,
375+
st_ino: c_ulonglong
376+
}
377+
}
330378
pub mod posix08 {}
331379
pub mod bsd44 {}
332380
pub mod extra {}

src/libstd/path.rs

+29-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ pub trait GenericPath {
128128
#[cfg(target_os = "android")]
129129
mod stat {
130130
#[cfg(target_arch = "x86")]
131-
#[cfg(target_arch = "arm")]
132131
pub mod arch {
133132
use libc;
134133

@@ -158,6 +157,35 @@ mod stat {
158157
}
159158
}
160159

160+
#[cfg(target_arch = "arm")]
161+
pub mod arch {
162+
use libc;
163+
164+
pub fn default_stat() -> libc::stat {
165+
libc::stat {
166+
st_dev: 0,
167+
__pad0: [0, ..4],
168+
__st_ino: 0,
169+
st_mode: 0,
170+
st_nlink: 0,
171+
st_uid: 0,
172+
st_gid: 0,
173+
st_rdev: 0,
174+
__pad3: [0, ..4],
175+
st_size: 0,
176+
st_blksize: 0,
177+
st_blocks: 0,
178+
st_atime: 0,
179+
st_atime_nsec: 0,
180+
st_mtime: 0,
181+
st_mtime_nsec: 0,
182+
st_ctime: 0,
183+
st_ctime_nsec: 0,
184+
st_ino: 0
185+
}
186+
}
187+
}
188+
161189
#[cfg(target_arch = "mips")]
162190
pub mod arch {
163191
use libc;

src/test/run-pass/core-run-destroy.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,18 @@ fn test_destroy_actually_kills(force: bool) {
4242
#[cfg(windows)]
4343
static BLOCK_COMMAND: &'static str = "cmd";
4444

45-
#[cfg(unix)]
45+
#[cfg(unix,not(target_os="android"))]
4646
fn process_exists(pid: libc::pid_t) -> bool {
4747
let run::ProcessOutput {output, _} = run::process_output("ps", [~"-p", pid.to_str()]);
4848
str::from_bytes(output).contains(pid.to_str())
4949
}
5050

51+
#[cfg(unix,target_os="android")]
52+
fn process_exists(pid: libc::pid_t) -> bool {
53+
let run::ProcessOutput {output, _} = run::process_output("/system/bin/ps", [pid.to_str()]);
54+
str::from_bytes(output).contains(~"root")
55+
}
56+
5157
#[cfg(windows)]
5258
fn process_exists(pid: libc::pid_t) -> bool {
5359

src/test/run-pass/intrinsic-alignment.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ mod m {
6060
pub fn main() {
6161
unsafe {
6262
assert_eq!(::rusti::pref_align_of::<u64>(), 8u);
63-
assert_eq!(::rusti::min_align_of::<u64>(), 4u);
63+
assert_eq!(::rusti::min_align_of::<u64>(), 8u);
6464
}
6565
}
6666
}

src/test/run-pass/rec-align-u64.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ mod m {
6363
mod m {
6464
#[cfg(target_arch = "arm")]
6565
pub mod m {
66-
pub fn align() -> uint { 4u }
67-
pub fn size() -> uint { 12u }
66+
pub fn align() -> uint { 8u }
67+
pub fn size() -> uint { 16u }
6868
}
6969
}
7070

0 commit comments

Comments
 (0)