pub struct Linkage {
pub exported: bool,
pub section: Option<String>,
pub secflags: Option<String>,
pub thread_local: bool,
}Expand description
Linkage of a function or data defintion (e.g. section and private/public status)
Fields§
§exported: boolSpecifies whether the target is going to be accessible publicly
section: Option<String>Specifies target’s section
secflags: Option<String>Specifies target’s section flags
thread_local: boolSpecifies whether the target is stored in thread-local storage
Implementations§
Source§impl Linkage
impl Linkage
Sourcepub fn private() -> Linkage
pub fn private() -> Linkage
Returns the default configuration for private linkage
Examples found in repository?
examples/hello_world.rs (line 7)
5fn generate_add_func(module: &mut Module) {
6 let mut func = Function::new(
7 Linkage::private(),
8 "add",
9 vec![
10 (Type::Word, Value::Temporary("a".into())),
11 (Type::Word, Value::Temporary("b".into())),
12 ],
13 Some(Type::Word),
14 );
15
16 func.add_block("start");
17 func.assign_instr(
18 Value::Temporary("c".into()),
19 Type::Word,
20 Instr::Add(Value::Temporary("a".into()), Value::Temporary("b".into())),
21 );
22 func.add_instr(Instr::Ret(Some(Value::Temporary("c".into()))));
23
24 module.add_function(func);
25}
26
27fn generate_main_func(module: &mut Module) {
28 let mut func = Function::new(Linkage::public(), "main", Vec::new(), Some(Type::Word));
29
30 func.add_block("start");
31 func.assign_instr(
32 Value::Temporary("r".into()),
33 Type::Word,
34 Instr::Call(
35 "add".into(),
36 vec![(Type::Word, Value::Const(1)), (Type::Word, Value::Const(1))],
37 None,
38 ),
39 );
40 func.add_instr(Instr::Call(
41 "printf".into(),
42 vec![
43 (Type::Long, Value::Global("fmt".into())),
44 (Type::Word, Value::Temporary("r".into())),
45 ],
46 Some(1),
47 ));
48 func.add_instr(Instr::Ret(Some(Value::Const(0))));
49
50 module.add_function(func);
51}
52
53fn generate_data(module: &mut Module) {
54 let items = vec![
55 (Type::Byte, DataItem::Str("One and one make %d!\\n".into())),
56 (Type::Byte, DataItem::Const(0)),
57 ];
58 let data = DataDef::new(Linkage::private(), "fmt", None, items);
59 module.add_data(data);
60}Sourcepub fn private_with_section(section: impl Into<String>) -> Linkage
pub fn private_with_section(section: impl Into<String>) -> Linkage
Returns the configuration for private linkage with a provided section
Sourcepub fn public() -> Linkage
pub fn public() -> Linkage
Returns the default configuration for public linkage
Examples found in repository?
examples/hello_world.rs (line 28)
27fn generate_main_func(module: &mut Module) {
28 let mut func = Function::new(Linkage::public(), "main", Vec::new(), Some(Type::Word));
29
30 func.add_block("start");
31 func.assign_instr(
32 Value::Temporary("r".into()),
33 Type::Word,
34 Instr::Call(
35 "add".into(),
36 vec![(Type::Word, Value::Const(1)), (Type::Word, Value::Const(1))],
37 None,
38 ),
39 );
40 func.add_instr(Instr::Call(
41 "printf".into(),
42 vec![
43 (Type::Long, Value::Global("fmt".into())),
44 (Type::Word, Value::Temporary("r".into())),
45 ],
46 Some(1),
47 ));
48 func.add_instr(Instr::Ret(Some(Value::Const(0))));
49
50 module.add_function(func);
51}Sourcepub fn public_with_section(section: impl Into<String>) -> Linkage
pub fn public_with_section(section: impl Into<String>) -> Linkage
Returns the configuration for public linkage with a provided section
pub fn thread_local() -> Linkage
pub fn exported_thread_local() -> Linkage
pub fn thread_local_with_section(section: impl Into<String>) -> Linkage
Trait Implementations§
Source§impl Ord for Linkage
impl Ord for Linkage
Source§impl PartialOrd for Linkage
impl PartialOrd for Linkage
impl Eq for Linkage
impl StructuralPartialEq for Linkage
Auto Trait Implementations§
impl Freeze for Linkage
impl RefUnwindSafe for Linkage
impl Send for Linkage
impl Sync for Linkage
impl Unpin for Linkage
impl UnwindSafe for Linkage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more