Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
libc
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
felixmoebius
libc
Commits
92172d91
Commit
92172d91
authored
6 years ago
by
gnzlbg
Browse files
Options
Downloads
Patches
Plain Diff
Add SGX C types.
parent
16f6fefe
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
ci/style.rs
+2
-0
2 additions, 0 deletions
ci/style.rs
src/ctypes.rs
+50
-0
50 additions, 0 deletions
src/ctypes.rs
src/lib.rs
+52
-182
52 additions, 182 deletions
src/lib.rs
src/libc.rs
+134
-0
134 additions, 0 deletions
src/libc.rs
src/sgx.rs
+5
-0
5 additions, 0 deletions
src/sgx.rs
with
243 additions
and
182 deletions
ci/style.rs
+
2
−
0
View file @
92172d91
...
...
@@ -72,6 +72,8 @@ fn walk(path: &Path, err: &mut Errors) {
"dox.rs"
|
"lib.rs"
|
"ctypes.rs"
|
"libc.rs"
|
"macros.rs"
=>
continue
,
_
=>
{}
...
...
This diff is collapsed.
Click to expand it.
src/ctypes.rs
0 → 100644
+
50
−
0
View file @
92172d91
//! Common libc types
cfg_if!
{
if
#[cfg(core_cvoid)]
{
pub
use
core
::
ffi
::
c_void
;
}
else
{
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help enable
// more optimization opportunities around it recognizing things like
// malloc/free.
#[repr(u8)]
pub
enum
c_void
{
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1
,
#[doc(hidden)]
__variant2
,
}
}
}
pub
type
int8_t
=
i8
;
pub
type
int16_t
=
i16
;
pub
type
int32_t
=
i32
;
pub
type
int64_t
=
i64
;
pub
type
uint8_t
=
u8
;
pub
type
uint16_t
=
u16
;
pub
type
uint32_t
=
u32
;
pub
type
uint64_t
=
u64
;
pub
type
c_schar
=
i8
;
pub
type
c_uchar
=
u8
;
pub
type
c_short
=
i16
;
pub
type
c_ushort
=
u16
;
pub
type
c_int
=
i32
;
pub
type
c_uint
=
u32
;
pub
type
c_float
=
f32
;
pub
type
c_double
=
f64
;
pub
type
c_longlong
=
i64
;
pub
type
c_ulonglong
=
u64
;
pub
type
intmax_t
=
i64
;
pub
type
uintmax_t
=
u64
;
pub
type
size_t
=
usize
;
pub
type
ptrdiff_t
=
isize
;
pub
type
intptr_t
=
isize
;
pub
type
uintptr_t
=
usize
;
pub
type
ssize_t
=
isize
;
pub
const
INT_MIN
:
c_int
=
-
2147483648
;
pub
const
INT_MAX
:
c_int
=
2147483647
;
This diff is collapsed.
Click to expand it.
src/lib.rs
+
52
−
182
View file @
92172d91
...
...
@@ -120,8 +120,6 @@
)
)]
#![cfg_attr(not(feature
=
"use_std"
),
no_std)]
// FIXME: this crate is empty for wasm32-unknown-unknown
#![cfg(not(all(target_arch
=
"wasm32"
,
not(target_os
=
"emscripten"
))))]
#[cfg(all(not(cross_platform_docs),
feature
=
"use_std"
))]
extern
crate
std
as
core
;
...
...
@@ -132,205 +130,77 @@ mod macros;
mod
dox
;
cfg_if!
{
if
#[cfg(core_cvoid)]
{
pub
use
core
::
ffi
::
c_void
;
}
else
{
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help enable
// more optimization opportunities around it recognizing things like
// malloc/free.
#[repr(u8)]
pub
enum
c_void
{
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1
,
#[doc(hidden)]
__variant2
,
}
}
}
pub
type
int8_t
=
i8
;
pub
type
int16_t
=
i16
;
pub
type
int32_t
=
i32
;
pub
type
int64_t
=
i64
;
pub
type
uint8_t
=
u8
;
pub
type
uint16_t
=
u16
;
pub
type
uint32_t
=
u32
;
pub
type
uint64_t
=
u64
;
pub
type
c_schar
=
i8
;
pub
type
c_uchar
=
u8
;
pub
type
c_short
=
i16
;
pub
type
c_ushort
=
u16
;
pub
type
c_int
=
i32
;
pub
type
c_uint
=
u32
;
pub
type
c_float
=
f32
;
pub
type
c_double
=
f64
;
pub
type
c_longlong
=
i64
;
pub
type
c_ulonglong
=
u64
;
pub
type
intmax_t
=
i64
;
pub
type
uintmax_t
=
u64
;
pub
type
size_t
=
usize
;
pub
type
ptrdiff_t
=
isize
;
pub
type
intptr_t
=
isize
;
pub
type
uintptr_t
=
usize
;
pub
type
ssize_t
=
isize
;
pub
enum
FILE
{}
pub
enum
fpos_t
{}
// TODO: fill this out with a struct
pub
const
INT_MIN
:
c_int
=
-
2147483648
;
pub
const
INT_MAX
:
c_int
=
2147483647
;
extern
"C"
{
pub
fn
isalnum
(
c
:
c_int
)
->
c_int
;
pub
fn
isalpha
(
c
:
c_int
)
->
c_int
;
pub
fn
iscntrl
(
c
:
c_int
)
->
c_int
;
pub
fn
isdigit
(
c
:
c_int
)
->
c_int
;
pub
fn
isgraph
(
c
:
c_int
)
->
c_int
;
pub
fn
islower
(
c
:
c_int
)
->
c_int
;
pub
fn
isprint
(
c
:
c_int
)
->
c_int
;
pub
fn
ispunct
(
c
:
c_int
)
->
c_int
;
pub
fn
isspace
(
c
:
c_int
)
->
c_int
;
pub
fn
isupper
(
c
:
c_int
)
->
c_int
;
pub
fn
isxdigit
(
c
:
c_int
)
->
c_int
;
pub
fn
tolower
(
c
:
c_int
)
->
c_int
;
pub
fn
toupper
(
c
:
c_int
)
->
c_int
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"fopen$UNIX2003"
)]
pub
fn
fopen
(
filename
:
*
const
c_char
,
mode
:
*
const
c_char
)
->
*
mut
FILE
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"freopen$UNIX2003"
)]
pub
fn
freopen
(
filename
:
*
const
c_char
,
mode
:
*
const
c_char
,
file
:
*
mut
FILE
)
->
*
mut
FILE
;
pub
fn
fflush
(
file
:
*
mut
FILE
)
->
c_int
;
pub
fn
fclose
(
file
:
*
mut
FILE
)
->
c_int
;
pub
fn
remove
(
filename
:
*
const
c_char
)
->
c_int
;
pub
fn
rename
(
oldname
:
*
const
c_char
,
newname
:
*
const
c_char
)
->
c_int
;
pub
fn
tmpfile
()
->
*
mut
FILE
;
pub
fn
setvbuf
(
stream
:
*
mut
FILE
,
buffer
:
*
mut
c_char
,
mode
:
c_int
,
size
:
size_t
)
->
c_int
;
pub
fn
setbuf
(
stream
:
*
mut
FILE
,
buf
:
*
mut
c_char
);
pub
fn
getchar
()
->
c_int
;
pub
fn
putchar
(
c
:
c_int
)
->
c_int
;
pub
fn
fgetc
(
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
fgets
(
buf
:
*
mut
c_char
,
n
:
c_int
,
stream
:
*
mut
FILE
)
->
*
mut
c_char
;
pub
fn
fputc
(
c
:
c_int
,
stream
:
*
mut
FILE
)
->
c_int
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"fputs$UNIX2003"
)]
pub
fn
fputs
(
s
:
*
const
c_char
,
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
puts
(
s
:
*
const
c_char
)
->
c_int
;
pub
fn
ungetc
(
c
:
c_int
,
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
fread
(
ptr
:
*
mut
c_void
,
size
:
size_t
,
nobj
:
size_t
,
stream
:
*
mut
FILE
)
->
size_t
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"fwrite$UNIX2003"
)]
pub
fn
fwrite
(
ptr
:
*
const
c_void
,
size
:
size_t
,
nobj
:
size_t
,
stream
:
*
mut
FILE
)
->
size_t
;
pub
fn
fseek
(
stream
:
*
mut
FILE
,
offset
:
c_long
,
whence
:
c_int
)
->
c_int
;
pub
fn
ftell
(
stream
:
*
mut
FILE
)
->
c_long
;
pub
fn
rewind
(
stream
:
*
mut
FILE
);
#[cfg_attr(target_os
=
"netbsd"
,
link_name
=
"__fgetpos50"
)]
pub
fn
fgetpos
(
stream
:
*
mut
FILE
,
ptr
:
*
mut
fpos_t
)
->
c_int
;
#[cfg_attr(target_os
=
"netbsd"
,
link_name
=
"__fsetpos50"
)]
pub
fn
fsetpos
(
stream
:
*
mut
FILE
,
ptr
:
*
const
fpos_t
)
->
c_int
;
pub
fn
feof
(
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
ferror
(
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
perror
(
s
:
*
const
c_char
);
pub
fn
atoi
(
s
:
*
const
c_char
)
->
c_int
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"strtod$UNIX2003"
)]
pub
fn
strtod
(
s
:
*
const
c_char
,
endp
:
*
mut
*
mut
c_char
)
->
c_double
;
pub
fn
strtol
(
s
:
*
const
c_char
,
endp
:
*
mut
*
mut
c_char
,
base
:
c_int
)
->
c_long
;
pub
fn
strtoul
(
s
:
*
const
c_char
,
endp
:
*
mut
*
mut
c_char
,
base
:
c_int
)
->
c_ulong
;
pub
fn
calloc
(
nobj
:
size_t
,
size
:
size_t
)
->
*
mut
c_void
;
pub
fn
malloc
(
size
:
size_t
)
->
*
mut
c_void
;
pub
fn
realloc
(
p
:
*
mut
c_void
,
size
:
size_t
)
->
*
mut
c_void
;
pub
fn
free
(
p
:
*
mut
c_void
);
pub
fn
abort
()
->
!
;
pub
fn
exit
(
status
:
c_int
)
->
!
;
pub
fn
_exit
(
status
:
c_int
)
->
!
;
pub
fn
atexit
(
cb
:
extern
"C"
fn
())
->
c_int
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"system$UNIX2003"
)]
pub
fn
system
(
s
:
*
const
c_char
)
->
c_int
;
pub
fn
getenv
(
s
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strcpy
(
dst
:
*
mut
c_char
,
src
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strncpy
(
dst
:
*
mut
c_char
,
src
:
*
const
c_char
,
n
:
size_t
)
->
*
mut
c_char
;
pub
fn
strcat
(
s
:
*
mut
c_char
,
ct
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strncat
(
s
:
*
mut
c_char
,
ct
:
*
const
c_char
,
n
:
size_t
)
->
*
mut
c_char
;
pub
fn
strcmp
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
c_int
;
pub
fn
strncmp
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
,
n
:
size_t
)
->
c_int
;
pub
fn
strcoll
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
c_int
;
pub
fn
strchr
(
cs
:
*
const
c_char
,
c
:
c_int
)
->
*
mut
c_char
;
pub
fn
strrchr
(
cs
:
*
const
c_char
,
c
:
c_int
)
->
*
mut
c_char
;
pub
fn
strspn
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
size_t
;
pub
fn
strcspn
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
size_t
;
pub
fn
strdup
(
cs
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strpbrk
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strstr
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strlen
(
cs
:
*
const
c_char
)
->
size_t
;
pub
fn
strnlen
(
cs
:
*
const
c_char
,
maxlen
:
size_t
)
->
size_t
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"strerror$UNIX2003"
)]
pub
fn
strerror
(
n
:
c_int
)
->
*
mut
c_char
;
pub
fn
strtok
(
s
:
*
mut
c_char
,
t
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strxfrm
(
s
:
*
mut
c_char
,
ct
:
*
const
c_char
,
n
:
size_t
)
->
size_t
;
pub
fn
wcslen
(
buf
:
*
const
wchar_t
)
->
size_t
;
pub
fn
wcstombs
(
dest
:
*
mut
c_char
,
src
:
*
const
wchar_t
,
n
:
size_t
)
->
::
size_t
;
pub
fn
memchr
(
cx
:
*
const
c_void
,
c
:
c_int
,
n
:
size_t
)
->
*
mut
c_void
;
pub
fn
memcmp
(
cx
:
*
const
c_void
,
ct
:
*
const
c_void
,
n
:
size_t
)
->
c_int
;
pub
fn
memcpy
(
dest
:
*
mut
c_void
,
src
:
*
const
c_void
,
n
:
size_t
)
->
*
mut
c_void
;
pub
fn
memmove
(
dest
:
*
mut
c_void
,
src
:
*
const
c_void
,
n
:
size_t
)
->
*
mut
c_void
;
pub
fn
memset
(
dest
:
*
mut
c_void
,
c
:
c_int
,
n
:
size_t
)
->
*
mut
c_void
;
}
// These are all inline functions on android, so they end up just being entirely
// missing on that platform.
if
#[cfg(windows)]
{
mod
libc
;
pub
use
libc
::
*
;
#[cfg(not(target_os
=
"android"
))]
extern
"C"
{
pub
fn
abs
(
i
:
c_int
)
->
c_int
;
pub
fn
atof
(
s
:
*
const
c_char
)
->
c_double
;
pub
fn
labs
(
i
:
c_long
)
->
c_long
;
pub
fn
rand
()
->
c_int
;
pub
fn
srand
(
seed
:
c_uint
);
}
mod
ctypes
;
pub
use
ctypes
::
*
;
cfg_if!
{
if
#[cfg(windows)]
{
mod
windows
;
pub
use
windows
::
*
;
}
else
if
#[cfg(target_os
=
"redox"
)]
{
mod
libc
;
pub
use
libc
::
*
;
mod
ctypes
;
pub
use
ctypes
::
*
;
mod
redox
;
pub
use
redox
::
*
;
}
else
if
#[cfg(target_os
=
"cloudabi"
)]
{
mod
libc
;
pub
use
libc
::
*
;
mod
ctypes
;
pub
use
ctypes
::
*
;
mod
cloudabi
;
pub
use
cloudabi
::
*
;
}
else
if
#[cfg(target_os
=
"fuchsia"
)]
{
mod
libc
;
pub
use
libc
::
*
;
mod
ctypes
;
pub
use
ctypes
::
*
;
mod
fuchsia
;
pub
use
fuchsia
::
*
;
}
else
if
#[cfg(target_os
=
"switch"
)]
{
mod
ctypes
;
pub
use
ctypes
::
*
;
mod
switch
;
pub
use
switch
::
*
;
}
else
if
#[cfg(unix)]
{
mod
libc
;
pub
use
libc
::
*
;
mod
ctypes
;
pub
use
ctypes
::
*
;
mod
unix
;
pub
use
unix
::
*
;
}
else
if
#[cfg(target_env
=
"sgx"
)]
{
mod
ctypes
;
pub
use
ctypes
::
*
;
mod
sgx
;
pub
use
sgx
::
*
;
}
else
if
#[cfg(target_os
=
"emscripten"
)]
{
mod
libc
;
pub
use
libc
::
*
;
mod
ctypes
;
pub
use
ctypes
::
*
;
}
else
if
#[cfg(all(target_arch
=
"wasm32"
,
target_env
=
"unknown"
))]
{
// wasm32-unknown-unknown
}
else
{
// Unknown target_family
mod
libc
;
pub
use
libc
::
*
;
mod
ctypes
;
pub
use
ctypes
::
*
;
}
}
This diff is collapsed.
Click to expand it.
src/libc.rs
0 → 100644
+
134
−
0
View file @
92172d91
//! Common libc APIs
use
::{
c_int
,
c_uint
,
c_void
,
c_double
,
size_t
,
wchar_t
,
c_char
,
c_long
,
c_ulong
};
pub
enum
FILE
{}
pub
enum
fpos_t
{}
// TODO: fill this out with a struct
extern
"C"
{
pub
fn
isalnum
(
c
:
c_int
)
->
c_int
;
pub
fn
isalpha
(
c
:
c_int
)
->
c_int
;
pub
fn
iscntrl
(
c
:
c_int
)
->
c_int
;
pub
fn
isdigit
(
c
:
c_int
)
->
c_int
;
pub
fn
isgraph
(
c
:
c_int
)
->
c_int
;
pub
fn
islower
(
c
:
c_int
)
->
c_int
;
pub
fn
isprint
(
c
:
c_int
)
->
c_int
;
pub
fn
ispunct
(
c
:
c_int
)
->
c_int
;
pub
fn
isspace
(
c
:
c_int
)
->
c_int
;
pub
fn
isupper
(
c
:
c_int
)
->
c_int
;
pub
fn
isxdigit
(
c
:
c_int
)
->
c_int
;
pub
fn
tolower
(
c
:
c_int
)
->
c_int
;
pub
fn
toupper
(
c
:
c_int
)
->
c_int
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"fopen$UNIX2003"
)]
pub
fn
fopen
(
filename
:
*
const
c_char
,
mode
:
*
const
c_char
)
->
*
mut
FILE
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"freopen$UNIX2003"
)]
pub
fn
freopen
(
filename
:
*
const
c_char
,
mode
:
*
const
c_char
,
file
:
*
mut
FILE
)
->
*
mut
FILE
;
pub
fn
fflush
(
file
:
*
mut
FILE
)
->
c_int
;
pub
fn
fclose
(
file
:
*
mut
FILE
)
->
c_int
;
pub
fn
remove
(
filename
:
*
const
c_char
)
->
c_int
;
pub
fn
rename
(
oldname
:
*
const
c_char
,
newname
:
*
const
c_char
)
->
c_int
;
pub
fn
tmpfile
()
->
*
mut
FILE
;
pub
fn
setvbuf
(
stream
:
*
mut
FILE
,
buffer
:
*
mut
c_char
,
mode
:
c_int
,
size
:
size_t
)
->
c_int
;
pub
fn
setbuf
(
stream
:
*
mut
FILE
,
buf
:
*
mut
c_char
);
pub
fn
getchar
()
->
c_int
;
pub
fn
putchar
(
c
:
c_int
)
->
c_int
;
pub
fn
fgetc
(
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
fgets
(
buf
:
*
mut
c_char
,
n
:
c_int
,
stream
:
*
mut
FILE
)
->
*
mut
c_char
;
pub
fn
fputc
(
c
:
c_int
,
stream
:
*
mut
FILE
)
->
c_int
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"fputs$UNIX2003"
)]
pub
fn
fputs
(
s
:
*
const
c_char
,
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
puts
(
s
:
*
const
c_char
)
->
c_int
;
pub
fn
ungetc
(
c
:
c_int
,
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
fread
(
ptr
:
*
mut
c_void
,
size
:
size_t
,
nobj
:
size_t
,
stream
:
*
mut
FILE
)
->
size_t
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"fwrite$UNIX2003"
)]
pub
fn
fwrite
(
ptr
:
*
const
c_void
,
size
:
size_t
,
nobj
:
size_t
,
stream
:
*
mut
FILE
)
->
size_t
;
pub
fn
fseek
(
stream
:
*
mut
FILE
,
offset
:
c_long
,
whence
:
c_int
)
->
c_int
;
pub
fn
ftell
(
stream
:
*
mut
FILE
)
->
c_long
;
pub
fn
rewind
(
stream
:
*
mut
FILE
);
#[cfg_attr(target_os
=
"netbsd"
,
link_name
=
"__fgetpos50"
)]
pub
fn
fgetpos
(
stream
:
*
mut
FILE
,
ptr
:
*
mut
fpos_t
)
->
c_int
;
#[cfg_attr(target_os
=
"netbsd"
,
link_name
=
"__fsetpos50"
)]
pub
fn
fsetpos
(
stream
:
*
mut
FILE
,
ptr
:
*
const
fpos_t
)
->
c_int
;
pub
fn
feof
(
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
ferror
(
stream
:
*
mut
FILE
)
->
c_int
;
pub
fn
perror
(
s
:
*
const
c_char
);
pub
fn
atoi
(
s
:
*
const
c_char
)
->
c_int
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"strtod$UNIX2003"
)]
pub
fn
strtod
(
s
:
*
const
c_char
,
endp
:
*
mut
*
mut
c_char
)
->
c_double
;
pub
fn
strtol
(
s
:
*
const
c_char
,
endp
:
*
mut
*
mut
c_char
,
base
:
c_int
)
->
c_long
;
pub
fn
strtoul
(
s
:
*
const
c_char
,
endp
:
*
mut
*
mut
c_char
,
base
:
c_int
)
->
c_ulong
;
pub
fn
calloc
(
nobj
:
size_t
,
size
:
size_t
)
->
*
mut
c_void
;
pub
fn
malloc
(
size
:
size_t
)
->
*
mut
c_void
;
pub
fn
realloc
(
p
:
*
mut
c_void
,
size
:
size_t
)
->
*
mut
c_void
;
pub
fn
free
(
p
:
*
mut
c_void
);
pub
fn
abort
()
->
!
;
pub
fn
exit
(
status
:
c_int
)
->
!
;
pub
fn
_exit
(
status
:
c_int
)
->
!
;
pub
fn
atexit
(
cb
:
extern
"C"
fn
())
->
c_int
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"system$UNIX2003"
)]
pub
fn
system
(
s
:
*
const
c_char
)
->
c_int
;
pub
fn
getenv
(
s
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strcpy
(
dst
:
*
mut
c_char
,
src
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strncpy
(
dst
:
*
mut
c_char
,
src
:
*
const
c_char
,
n
:
size_t
)
->
*
mut
c_char
;
pub
fn
strcat
(
s
:
*
mut
c_char
,
ct
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strncat
(
s
:
*
mut
c_char
,
ct
:
*
const
c_char
,
n
:
size_t
)
->
*
mut
c_char
;
pub
fn
strcmp
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
c_int
;
pub
fn
strncmp
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
,
n
:
size_t
)
->
c_int
;
pub
fn
strcoll
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
c_int
;
pub
fn
strchr
(
cs
:
*
const
c_char
,
c
:
c_int
)
->
*
mut
c_char
;
pub
fn
strrchr
(
cs
:
*
const
c_char
,
c
:
c_int
)
->
*
mut
c_char
;
pub
fn
strspn
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
size_t
;
pub
fn
strcspn
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
size_t
;
pub
fn
strdup
(
cs
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strpbrk
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strstr
(
cs
:
*
const
c_char
,
ct
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strlen
(
cs
:
*
const
c_char
)
->
size_t
;
pub
fn
strnlen
(
cs
:
*
const
c_char
,
maxlen
:
size_t
)
->
size_t
;
#[cfg_attr(
all(target_os
=
"macos"
,
target_arch
=
"x86"
),
link_name
=
"strerror$UNIX2003"
)]
pub
fn
strerror
(
n
:
c_int
)
->
*
mut
c_char
;
pub
fn
strtok
(
s
:
*
mut
c_char
,
t
:
*
const
c_char
)
->
*
mut
c_char
;
pub
fn
strxfrm
(
s
:
*
mut
c_char
,
ct
:
*
const
c_char
,
n
:
size_t
)
->
size_t
;
pub
fn
wcslen
(
buf
:
*
const
wchar_t
)
->
size_t
;
pub
fn
wcstombs
(
dest
:
*
mut
c_char
,
src
:
*
const
wchar_t
,
n
:
size_t
)
->
::
size_t
;
pub
fn
memchr
(
cx
:
*
const
c_void
,
c
:
c_int
,
n
:
size_t
)
->
*
mut
c_void
;
pub
fn
memcmp
(
cx
:
*
const
c_void
,
ct
:
*
const
c_void
,
n
:
size_t
)
->
c_int
;
pub
fn
memcpy
(
dest
:
*
mut
c_void
,
src
:
*
const
c_void
,
n
:
size_t
)
->
*
mut
c_void
;
pub
fn
memmove
(
dest
:
*
mut
c_void
,
src
:
*
const
c_void
,
n
:
size_t
)
->
*
mut
c_void
;
pub
fn
memset
(
dest
:
*
mut
c_void
,
c
:
c_int
,
n
:
size_t
)
->
*
mut
c_void
;
}
// These are all inline functions on android, so they end up just being entirely
// missing on that platform.
#[cfg(not(target_os
=
"android"
))]
extern
"C"
{
pub
fn
abs
(
i
:
c_int
)
->
c_int
;
pub
fn
atof
(
s
:
*
const
c_char
)
->
c_double
;
pub
fn
labs
(
i
:
c_long
)
->
c_long
;
pub
fn
rand
()
->
c_int
;
pub
fn
srand
(
seed
:
c_uint
);
}
This diff is collapsed.
Click to expand it.
src/sgx.rs
0 → 100644
+
5
−
0
View file @
92172d91
//! SGX C types definition
pub
type
c_char
=
i8
;
pub
type
c_long
=
i64
;
pub
type
c_ulong
=
u64
;
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment