Skip to content

Adding missing structs from linux/user.h #599

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 30, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions libc-test/build.rs
Original file line number Diff line number Diff line change
@@ -175,6 +175,7 @@ fn main() {
cfg.header("sys/ipc.h");
cfg.header("sys/msg.h");
cfg.header("sys/shm.h");
cfg.header("sys/user.h");
cfg.header("sys/fsuid.h");
cfg.header("pty.h");
cfg.header("shadow.h");
65 changes: 65 additions & 0 deletions src/unix/notbsd/linux/other/b32/x86.rs
Original file line number Diff line number Diff line change
@@ -20,6 +20,71 @@ s! {
pub status: ::c_ulong,
}

pub struct user_fpregs_struct {
pub cwd: ::c_long,
pub swd: ::c_long,
pub twd: ::c_long,
pub fip: ::c_long,
pub fcs: ::c_long,
pub foo: ::c_long,
pub fos: ::c_long,
pub st_space: [::c_long; 20],
}

pub struct user_fpxregs_struct {
pub cwd: ::c_ushort,
pub swd: ::c_ushort,
pub twd: ::c_ushort,
pub fop: ::c_ushort,
pub fip: ::c_long,
pub fcs: ::c_long,
pub foo: ::c_long,
pub fos: ::c_long,
pub mxcsr: ::c_long,
__reserved: ::c_long,
pub st_space: [::c_long; 32],
pub xmm_space: [::c_long; 32],
padding: [::c_long; 56],
}

pub struct user_regs_struct {
pub ebx: ::c_long,
pub ecx: ::c_long,
pub edx: ::c_long,
pub esi: ::c_long,
pub edi: ::c_long,
pub ebp: ::c_long,
pub eax: ::c_long,
pub xds: ::c_long,
pub xes: ::c_long,
pub xfs: ::c_long,
pub xgs: ::c_long,
pub orig_eax: ::c_long,
pub eip: ::c_long,
pub xcs: ::c_long,
pub eflags: ::c_long,
pub esp: ::c_long,
pub xss: ::c_long,
}

pub struct user {
pub regs: user_regs_struct,
pub u_fpvalid: ::c_int,
pub i387: user_fpregs_struct,
pub u_tsize: ::c_ulong,
pub u_dsize: ::c_ulong,
pub u_ssize: ::c_ulong,
pub start_code: ::c_ulong,
pub start_stack: ::c_ulong,
pub signal: ::c_long,
__reserved: ::c_int,
pub u_ar0: *mut user_regs_struct,
pub u_fpstate: *mut user_fpregs_struct,
pub magic: ::c_ulong,
pub u_comm: [c_char; 32],
pub u_debugreg: [::c_int; 8],
}

pub struct mcontext_t {
pub gregs: [greg_t; 19],
pub fpregs: *mut _libc_fpstate,
62 changes: 62 additions & 0 deletions src/unix/notbsd/linux/other/b64/x86_64.rs
Original file line number Diff line number Diff line change
@@ -78,6 +78,68 @@ s! {
__private: [u64; 12],
}

pub struct user_fpregs_struct {
pub cwd: ::c_ushort,
pub swd: ::c_ushort,
pub ftw: ::c_ushort,
pub fop: ::c_ushort,
pub rip: ::c_ulonglong,
pub rdp: ::c_ulonglong,
pub mxcsr: ::c_uint,
pub mxcr_mask: ::c_uint,
pub st_space: [::c_uint; 32],
pub xmm_space: [::c_uint; 64],
padding: [::c_uint; 24],
}

pub struct user_regs_struct {
pub r15: ::c_ulonglong,
pub r14: ::c_ulonglong,
pub r13: ::c_ulonglong,
pub r12: ::c_ulonglong,
pub rbp: ::c_ulonglong,
pub rbx: ::c_ulonglong,
pub r11: ::c_ulonglong,
pub r10: ::c_ulonglong,
pub r9: ::c_ulonglong,
pub r8: ::c_ulonglong,
pub rax: ::c_ulonglong,
pub rcx: ::c_ulonglong,
pub rdx: ::c_ulonglong,
pub rsi: ::c_ulonglong,
pub rdi: ::c_ulonglong,
pub orig_rax: ::c_ulonglong,
pub rip: ::c_ulonglong,
pub cs: ::c_ulonglong,
pub eflags: ::c_ulonglong,
pub rsp: ::c_ulonglong,
pub ss: ::c_ulonglong,
pub fs_base: ::c_ulonglong,
pub gs_base: ::c_ulonglong,
pub ds: ::c_ulonglong,
pub es: ::c_ulonglong,
pub fs: ::c_ulonglong,
pub gs: ::c_ulonglong,
}

pub struct user {
pub regs: user_regs_struct,
pub u_fpvalid: ::c_int,
pub i387: user_fpregs_struct,
pub u_tsize: ::c_ulonglong,
pub u_dsize: ::c_ulonglong,
pub u_ssize: ::c_ulonglong,
pub start_code: ::c_ulonglong,
pub start_stack: ::c_ulonglong,
pub signal: ::c_longlong,
__reserved: ::c_int,
pub u_ar0: *mut user_regs_struct,
pub u_fpstate: *mut user_fpregs_struct,
pub magic: ::c_ulonglong,
pub u_comm: [::c_char; 32],
pub u_debugreg: [::c_ulonglong; 8],
}

pub struct mcontext_t {
pub gregs: [greg_t; 23],
pub fpregs: *mut _libc_fpstate,