2017-03-01 19:05:36 -05:00
|
|
|
# Pact #
|
|
|
|
This library will provided the binding for the standard 'C' functions.
|
|
|
|
Later, as a stretch goal, this library will attempt to implement those
|
|
|
|
functions in Rust.
|
|
|
|
|
|
|
|
## Features ##
|
|
|
|
This library handles several different ways of providing what is needed
|
|
|
|
at the 'C' binding level.
|
|
|
|
|
|
|
|
### Standard C Library ###
|
|
|
|
|
2017-03-01 19:16:54 -05:00
|
|
|
This is the default feature set.
|
2017-03-01 19:05:36 -05:00
|
|
|
|
|
|
|
It will provide a link to the 'C' standard library. This will make it so
|
|
|
|
that your code is executable and can call functions and use structures from
|
|
|
|
the standard 'C' library.
|
|
|
|
|
|
|
|
### Rust C Library ###
|
|
|
|
|
|
|
|
```
|
|
|
|
default-features = false
|
|
|
|
features = ["rust_lib"]
|
|
|
|
```
|
|
|
|
|
|
|
|
Currently, this does not work. Later, this will provide a Rust version of
|
|
|
|
all the 'C' standard library functions. This is a **huge** stretch goal.
|
|
|
|
It may not happen, or it may take a really long time to get this done.
|
|
|
|
This will require alot of platform specific work.
|
|
|
|
|
|
|
|
### No Memory Manipulation ###
|
|
|
|
|
|
|
|
```
|
|
|
|
default-features = false
|
|
|
|
features = ["no_mem_manip"]
|
|
|
|
```
|
|
|
|
|
|
|
|
This feature tells the library to not define the memory manipulation
|
|
|
|
functions that Rust requires for LLVM. These are:
|
|
|
|
|
|
|
|
* memcpy
|
|
|
|
* memmove
|
|
|
|
* memcmp
|
2017-03-01 19:16:54 -05:00
|
|
|
* memset
|
2017-03-01 19:05:36 -05:00
|
|
|
|
|
|
|
### Weak ###
|
|
|
|
|
|
|
|
```
|
|
|
|
default-features = false
|
|
|
|
features = ["no_mem_manip", "weak"]
|
|
|
|
```
|
|
|
|
|
|
|
|
Activates weak linkage on ELF objects. This is only useful when combined with
|
|
|
|
the 'no_mem_manip' feature.
|