Skip to content

Commit 6acbf87

Browse files
committed
Fixed issues in test and struct names.
Fixed the issues that prevented the libc_tests that are generated from passing. Also, fixed struct names and types to be representative of the linux source files.
1 parent 3522d8b commit 6acbf87

File tree

3 files changed

+100
-58
lines changed

3 files changed

+100
-58
lines changed

libc-test/build.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ fn main() {
175175
cfg.header("sys/ipc.h");
176176
cfg.header("sys/msg.h");
177177
cfg.header("sys/shm.h");
178+
cfg.header("sys/user.h");
178179
cfg.header("sys/fsuid.h");
179180
cfg.header("pty.h");
180181
cfg.header("shadow.h");

src/unix/notbsd/linux/other/b32/x86.rs

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,34 @@ s! {
2020
pub status: ::c_ulong,
2121
}
2222

23-
pub struct _libc_state {
23+
pub struct user_fpregs_struct {
24+
pub cwd: ::c_long,
25+
pub swd: ::c_long,
26+
pub twd: ::c_long,
27+
pub fip: ::c_long,
28+
pub fcs: ::c_long,
29+
pub foo: ::c_long,
30+
pub fos: ::c_long,
31+
pub st_space: [::c_long; 20],
32+
}
33+
34+
pub struct user_fpxregs_struct {
35+
pub cwd: ::c_ushort,
36+
pub swd: ::c_ushort,
37+
pub twd: ::c_ushort,
38+
pub fop: ::c_ushort,
39+
pub fip: ::c_long,
40+
pub fcs: ::c_long,
41+
pub foo: ::c_long,
42+
pub fos: ::c_long,
43+
pub mxcsr: ::c_long,
44+
__reserved: ::c_long,
45+
pub st_space: [::c_long; 32],
46+
pub xmm_space: [::c_long; 32],
47+
padding: [::c_long; 56],
48+
}
49+
50+
pub struct user_regs_struct {
2451
pub ebx: ::c_long,
2552
pub ecx: ::c_long,
2653
pub edx: ::c_long,
@@ -35,27 +62,27 @@ s! {
3562
pub orig_eax: ::c_long,
3663
pub eip: ::c_long,
3764
pub xcs: ::c_long,
38-
pub eflags: u32,
65+
pub eflags: ::c_long,
3966
pub esp: ::c_long,
4067
pub xss: ::c_long,
4168
}
4269

43-
pub struct _libc_user {
44-
pub regs: _libc_state,
45-
pub u_fpvalid: i32,
46-
pub i387: _libc_fpstate,
47-
pub u_tsize: u32,
48-
pub u_dsize: u32,
49-
pub u_ssize: u32,
50-
pub start_code: u32,
51-
pub start_stack: u32,
52-
pub signal: i32,
53-
__reserved: i32,
54-
pub u_ar0: *mut _libc_state,
55-
pub u_fpstate: *mut _libc_fpstate,
56-
pub magic: u32,
70+
pub struct user {
71+
pub regs: user_regs_struct,
72+
pub u_fpvalid: ::c_int,
73+
pub i387: user_fpregs_struct,
74+
pub u_tsize: ::c_ulong,
75+
pub u_dsize: ::c_ulong,
76+
pub u_ssize: ::c_ulong,
77+
pub start_code: ::c_ulong,
78+
pub start_stack: ::c_ulong,
79+
pub signal: ::c_long,
80+
__reserved: ::c_int,
81+
pub u_ar0: *mut user_regs_struct,
82+
pub u_fpstate: *mut user_fpregs_struct,
83+
pub magic: ::c_ulong,
5784
pub u_comm: [c_char; 32],
58-
pub u_debugreg: [i32; 8],
85+
pub u_debugreg: [::c_int; 8],
5986
}
6087

6188
pub struct mcontext_t {

src/unix/notbsd/linux/other/b64/x86_64.rs

Lines changed: 55 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -78,52 +78,66 @@ s! {
7878
__private: [u64; 12],
7979
}
8080

81-
pub struct _libc_state {
82-
pub r15: u64,
83-
pub r14: u64,
84-
pub r13: u64,
85-
pub r12: u64,
86-
pub rbp: u64,
87-
pub rbx: u64,
88-
pub r11: u64,
89-
pub r10: u64,
90-
pub r9: u64,
91-
pub r8: u64,
92-
pub rax: u64,
93-
pub rcx: u64,
94-
pub rdx: u64,
95-
pub rsi: u64,
96-
pub rdi: u64,
97-
pub orig_rax: u64,
98-
pub rip: u64,
99-
pub cs: u64,
100-
pub eflags: u64,
101-
pub rsp: u64,
102-
pub ss: u64,
103-
pub fs_base: u64,
104-
pub gs_base: u64,
105-
pub ds: u64,
106-
pub es: u64,
107-
pub fs: u64,
108-
pub gs: u64,
81+
pub struct user_fpregs_struct {
82+
pub cwd: ::c_ushort,
83+
pub swd: ::c_ushort,
84+
pub ftw: ::c_ushort,
85+
pub fop: ::c_ushort,
86+
pub rip: ::c_ulonglong,
87+
pub rdp: ::c_ulonglong,
88+
pub mxcsr: ::c_uint,
89+
pub mxcr_mask: ::c_uint,
90+
pub st_space: [::c_uint; 32],
91+
pub xmm_space: [::c_uint; 64],
92+
padding: [::c_uint; 24],
93+
}
94+
95+
pub struct user_regs_struct {
96+
pub r15: ::c_ulonglong,
97+
pub r14: ::c_ulonglong,
98+
pub r13: ::c_ulonglong,
99+
pub r12: ::c_ulonglong,
100+
pub rbp: ::c_ulonglong,
101+
pub rbx: ::c_ulonglong,
102+
pub r11: ::c_ulonglong,
103+
pub r10: ::c_ulonglong,
104+
pub r9: ::c_ulonglong,
105+
pub r8: ::c_ulonglong,
106+
pub rax: ::c_ulonglong,
107+
pub rcx: ::c_ulonglong,
108+
pub rdx: ::c_ulonglong,
109+
pub rsi: ::c_ulonglong,
110+
pub rdi: ::c_ulonglong,
111+
pub orig_rax: ::c_ulonglong,
112+
pub rip: ::c_ulonglong,
113+
pub cs: ::c_ulonglong,
114+
pub eflags: ::c_ulonglong,
115+
pub rsp: ::c_ulonglong,
116+
pub ss: ::c_ulonglong,
117+
pub fs_base: ::c_ulonglong,
118+
pub gs_base: ::c_ulonglong,
119+
pub ds: ::c_ulonglong,
120+
pub es: ::c_ulonglong,
121+
pub fs: ::c_ulonglong,
122+
pub gs: ::c_ulonglong,
109123
}
110124

111-
pub struct _libc_user {
112-
pub regs: _libc_state,
125+
pub struct user {
126+
pub regs: user_regs_struct,
113127
pub u_fpvalid: ::c_int,
114-
pub i387: _libc_fpstate,
115-
pub u_tsize: u64,
116-
pub u_dsize: u64,
117-
pub u_ssize: u64,
118-
pub start_code: u64,
119-
pub start_stack: u64,
120-
pub signal: i64,
128+
pub i387: user_fpregs_struct,
129+
pub u_tsize: ::c_ulonglong,
130+
pub u_dsize: ::c_ulonglong,
131+
pub u_ssize: ::c_ulonglong,
132+
pub start_code: ::c_ulonglong,
133+
pub start_stack: ::c_ulonglong,
134+
pub signal: ::c_longlong,
121135
__reserved: ::c_int,
122-
pub u_ar0: *mut _libc_state,
123-
pub u_fpstate: *mut _libc_fpstate,
124-
pub magic: u64,
136+
pub u_ar0: *mut user_regs_struct,
137+
pub u_fpstate: *mut user_fpregs_struct,
138+
pub magic: ::c_ulonglong,
125139
pub u_comm: [::c_char; 32],
126-
pub u_debugreg: [u64; 8],
140+
pub u_debugreg: [::c_ulonglong; 8],
127141
}
128142

129143
pub struct mcontext_t {

0 commit comments

Comments
 (0)