Commit Graph

61 Commits

Author SHA1 Message Date
Joshua Nelson
6a61bba39e Allow modules to have names of arbitrary bytes (#1410)
This is useful for me because I name the module after the file, which
comes from the filesystem and may not be valid UTF8.

This change is backwards-compatible.
2020-02-27 13:45:18 -08:00
bjorn3
0a1bb3ba6c Add TLS support for ELF and MachO (#1174)
* Add TLS support
* Add binemit and legalize tests
* Spill all caller-saved registers when necessary
2020-02-25 17:50:04 -08:00
Nathan Froyd
09c6c5db44 add a "raw" function definition interface to cranelift-module (#1400)
* move trap site definitions into cranelift-module

`cranelift-faerie` and `cranelift-object` already have identical
definitions of structures to represent trap sites.  We might as well
merge them ahead of work to define functions via a raw slice of bytes
with associated traps, which will need some kind of common structure for
representing traps anyway.

* cranelift-module: add `define_function_bytes` interface

This interface is useful when the client needs to precisely specify the
ordering of bytes in a particular function.

* add comment about saving files for `perf`
2020-02-21 15:14:37 -08:00
Joshua Nelson
ec9700c70b Don't return a Result for ObjectBuilder::new
Since it always returned an `Ok(Self)`, there was no reason to have a
Result.
2020-02-21 10:51:55 +01:00
Joshua Nelson
4d8cf563f3 Use zeroinit API for faerie and object (#1209)
* use new zeroinit API for faerie

* use bss for cranelift-object

* don't crash when initializing bss

* fix formatting

* Improve code locality

Co-Authored-By: Philip Craig <philipjcraig@gmail.com>

* use `as` instead of try_into() for usize -> u64

* don't allocate unnecessarily in `faerie`

Co-authored-by: Philip Craig <philipjcraig@gmail.com>
2020-02-13 13:25:41 -08:00
Philip Craig
3c15f8f129 cranelift-object: move relocation processing to finish
This removes the need to call `finalize_definitions` for cranelift-object.
`finalize_definitions` is only intended for backends that produce
finalized functions and data objects, which cranelift-object does not.
2020-02-10 11:42:11 +01:00
Ryan Hunt
832666c45e Mass rename Ebb and relatives to Block (#1365)
* Manually rename BasicBlock to BlockPredecessor

BasicBlock is a pair of (Ebb, Inst) that is used to represent the
basic block subcomponent of an Ebb that is a predecessor to an Ebb.

Eventually we will be able to remove this struct, but for now it
makes sense to give it a non-conflicting name so that we can start
to transition Ebb to represent a basic block.

I have not updated any comments that refer to BasicBlock, as
eventually we will remove BlockPredecessor and replace with Block,
which is a basic block, so the comments will become correct.

* Manually rename SSABuilder block types to avoid conflict

SSABuilder has its own Block and BlockData types. These along with
associated identifier will cause conflicts in a later commit, so
they are renamed to be more verbose here.

* Automatically rename 'Ebb' to 'Block' in *.rs

* Automatically rename 'EBB' to 'block' in *.rs

* Automatically rename 'ebb' to 'block' in *.rs

* Automatically rename 'extended basic block' to 'basic block' in *.rs

* Automatically rename 'an basic block' to 'a basic block' in *.rs

* Manually update comment for `Block`

`Block`'s wikipedia article required an update.

* Automatically rename 'an `Block`' to 'a `Block`' in *.rs

* Automatically rename 'extended_basic_block' to 'basic_block' in *.rs

* Automatically rename 'ebb' to 'block' in *.clif

* Manually rename clif constant that contains 'ebb' as substring to avoid conflict

* Automatically rename filecheck uses of 'EBB' to 'BB'

'regex: EBB' -> 'regex: BB'
'$EBB' -> '$BB'

* Automatically rename 'EBB' 'Ebb' to 'block' in *.clif

* Automatically rename 'an block' to 'a block' in *.clif

* Fix broken testcase when function name length increases

Test function names are limited to 16 characters. This causes
the new longer name to be truncated and fail a filecheck test. An
outdated comment was also fixed.
2020-02-07 10:46:47 -06:00
Philip Craig
43f1e05156 Update target-lexicon to 0.10 2020-01-10 11:30:12 +01:00
Peter Huene
9f506692c2 Fix clippy warnings.
This commit fixes the current set of (stable) clippy warnings in the repo.
2019-10-24 17:20:12 -07:00
Joshua Nelson
e252e0f5b7 fix broken link in cranelift-object 2019-09-18 08:33:17 -07:00
Philip Craig
3293ca6b69 Add cranelift-object 2019-09-09 21:54:20 -07:00